Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dongbw 8 years ago
parent
commit
77ed5d4ac0
74 changed files with 3900 additions and 361 deletions
  1. 3 3
      src/main/java/com/uas/platform/b2b/controller/BaseInfoController.java
  2. 12 1
      src/main/java/com/uas/platform/b2b/controller/DeputyOrderController.java
  3. 121 19
      src/main/java/com/uas/platform/b2b/controller/FileController.java
  4. 1 1
      src/main/java/com/uas/platform/b2b/controller/MakeOrderChangeController.java
  5. 16 5
      src/main/java/com/uas/platform/b2b/controller/MakeOrderController.java
  6. 2 2
      src/main/java/com/uas/platform/b2b/controller/MakeOutOrderController.java
  7. 5 5
      src/main/java/com/uas/platform/b2b/controller/PurcInquiryController.java
  8. 1 1
      src/main/java/com/uas/platform/b2b/controller/SaleApBillController.java
  9. 8 8
      src/main/java/com/uas/platform/b2b/controller/SaleApCheckController.java
  10. 3 3
      src/main/java/com/uas/platform/b2b/controller/SaleInquiryController.java
  11. 1 1
      src/main/java/com/uas/platform/b2b/controller/SaleInquiryMouldController.java
  12. 149 148
      src/main/java/com/uas/platform/b2b/controller/SaleNoticeController.java
  13. 1 1
      src/main/java/com/uas/platform/b2b/controller/SaleOrderChangeController.java
  14. 12 1
      src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java
  15. 2 2
      src/main/java/com/uas/platform/b2b/controller/SaleQuotationController.java
  16. 4 4
      src/main/java/com/uas/platform/b2b/controller/SaleSampleController.java
  17. 17 0
      src/main/java/com/uas/platform/b2b/controller/SnapshotController.java
  18. 3 3
      src/main/java/com/uas/platform/b2b/controller/VendorController.java
  19. 75 0
      src/main/java/com/uas/platform/b2b/controller/VendorPerformanceAssessController.java
  20. 3 4
      src/main/java/com/uas/platform/b2b/dao/DeputyOrderDao.java
  21. 9 0
      src/main/java/com/uas/platform/b2b/dao/InvitationRecordDao.java
  22. 15 6
      src/main/java/com/uas/platform/b2b/dao/VendorDao.java
  23. 22 0
      src/main/java/com/uas/platform/b2b/dao/VendorPerformanceAssessDao.java
  24. 9 2
      src/main/java/com/uas/platform/b2b/erp/controller/PurchaseProdInOutController.java
  25. 91 0
      src/main/java/com/uas/platform/b2b/erp/controller/VendorPerformanceAssessErpController.java
  26. 43 0
      src/main/java/com/uas/platform/b2b/erp/controller/VendorRateController.java
  27. 74 0
      src/main/java/com/uas/platform/b2b/erp/model/ErpInviteRecord.java
  28. 13 1
      src/main/java/com/uas/platform/b2b/erp/model/InquiryDetail.java
  29. 179 0
      src/main/java/com/uas/platform/b2b/erp/model/InquiryVendorInfo.java
  30. 10 0
      src/main/java/com/uas/platform/b2b/erp/model/SaleDownDetail.java
  31. 623 0
      src/main/java/com/uas/platform/b2b/erp/model/VendorPerformanceAssessErp.java
  32. 18 0
      src/main/java/com/uas/platform/b2b/erp/service/VendorPerformanceAssessErpService.java
  33. 32 0
      src/main/java/com/uas/platform/b2b/erp/service/VendorService.java
  34. 46 0
      src/main/java/com/uas/platform/b2b/erp/service/impl/VendorPerformanceAssessErpServiceImpl.java
  35. 188 0
      src/main/java/com/uas/platform/b2b/erp/service/impl/VendorServiceImpl.java
  36. 44 0
      src/main/java/com/uas/platform/b2b/model/InvitationRecord.java
  37. 20 0
      src/main/java/com/uas/platform/b2b/model/PurchaseOrderAllItem.java
  38. 30 6
      src/main/java/com/uas/platform/b2b/model/Vendor.java
  39. 713 0
      src/main/java/com/uas/platform/b2b/model/VendorPerformanceAssess.java
  40. 8 0
      src/main/java/com/uas/platform/b2b/search/SearchService.java
  41. 13 0
      src/main/java/com/uas/platform/b2b/search/SearchServiceImpl.java
  42. 11 4
      src/main/java/com/uas/platform/b2b/service/PurchaseApBillService.java
  43. 32 0
      src/main/java/com/uas/platform/b2b/service/VendorPerformanceAssessService.java
  44. 2 0
      src/main/java/com/uas/platform/b2b/service/impl/BaseInfoServiceImpl.java
  45. 23 43
      src/main/java/com/uas/platform/b2b/service/impl/DeputyOrderServiceImpl.java
  46. 33 18
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseApBillServiceImpl.java
  47. 111 0
      src/main/java/com/uas/platform/b2b/service/impl/VendorPerformanceAssessServiceImpl.java
  48. 248 0
      src/main/java/com/uas/platform/b2b/support/FileUploadHttp.java
  49. 30 0
      src/main/java/com/uas/platform/b2b/support/MessageConf.java
  50. 16 0
      src/main/java/com/uas/platform/b2b/support/SysConf.java
  51. 14 0
      src/main/java/com/uas/platform/b2b/temporary/model/ChangeAdminDetail.java
  52. 12 2
      src/main/java/com/uas/platform/b2b/temporary/model/OrderItems.java
  53. 20 15
      src/main/java/com/uas/platform/b2b/v2/controller/EnterpriseController.java
  54. 31 0
      src/main/java/com/uas/platform/b2b/v2/controller/PartnerShipController.java
  55. 14 0
      src/main/java/com/uas/platform/b2b/v2/service/PartnerShipService.java
  56. 42 10
      src/main/java/com/uas/platform/b2b/v2/service/impl/ChangeAdminServiceImpl.java
  57. 59 0
      src/main/java/com/uas/platform/b2b/v2/service/impl/PartnerShipServiceImpl.java
  58. 4 1
      src/main/resources/dev/message.properties
  59. 2 0
      src/main/resources/dev/sys.properties
  60. 3 1
      src/main/resources/prod/message.properties
  61. 2 0
      src/main/resources/prod/sys.properties
  62. 3 1
      src/main/resources/test/message.properties
  63. 2 0
      src/main/resources/test/sys.properties
  64. 16 2
      src/main/webapp/resources/js/common/services.js
  65. 104 11
      src/main/webapp/resources/js/index/app.js
  66. 1 1
      src/main/webapp/resources/js/index/services/BaseInfo.js
  67. 1 1
      src/main/webapp/resources/js/index/services/DeputyOrder.js
  68. 2 2
      src/main/webapp/resources/js/index/services/Fa.js
  69. 11 7
      src/main/webapp/resources/js/index/services/Make.js
  70. 18 14
      src/main/webapp/resources/js/index/services/Purc.js
  71. 1 1
      src/main/webapp/resources/tpl/index/purc/addOrder.html
  72. 3 0
      src/main/webapp/resources/tpl/index/sale/left.html
  73. 139 0
      src/main/webapp/resources/tpl/index/sale/vendorPerformanceAssess.html
  74. 251 0
      src/main/webapp/resources/tpl/index/sale/vendorPerformanceAssess_detail.html

+ 3 - 3
src/main/java/com/uas/platform/b2b/controller/BaseInfoController.java

@@ -287,7 +287,7 @@ public class BaseInfoController {
 	 *
 	 * @return
 	 */
-	@RequestMapping(value = "/permission/xls", method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/permission", method = RequestMethod.GET)
 	public ModelMap exportPermission() {
 		return new ModelMap("success", true);
 	}
@@ -451,7 +451,7 @@ public class BaseInfoController {
 	}
 
 	/**
-	 * 通过关键词查询账户中心的相关的企业信息
+	 * 顶部通过关键词查询账户中心的相关的企业信息
 	 * 
 	 * @param keyword
 	 * @param params
@@ -466,7 +466,7 @@ public class BaseInfoController {
 	}
 	
 	/**
-	 * 查询物料库所有物料
+	 * 顶部查询物料库所有物料
 	 * 
 	 * @param params
 	 * @param keyword

+ 12 - 1
src/main/java/com/uas/platform/b2b/controller/DeputyOrderController.java

@@ -348,7 +348,7 @@ public class DeputyOrderController {
 	 * @param id
 	 * @return
 	 */
-	@RequestMapping(value = "/getOrderDetail/{id}/info", method = RequestMethod.GET)
+	@RequestMapping(value = "/{id}/info", method = RequestMethod.GET)
 	private DeputyOrder getOrderDetail(@PathVariable Long id) {
 		return deputyOrderService.getOrderDetail(id);
 	}
@@ -372,6 +372,17 @@ public class DeputyOrderController {
 		return deputyOrderService.clearOrder(id);
 	}
 
+	/**
+	 * 打印权限判断
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/printCount/permission", method = RequestMethod.POST)
+	@ResponseBody
+	public ModelMap printPermission() {
+		return new ModelMap("success", true);
+	}
+
 	/**
 	 * 打印订单,增加打印次数
 	 * 记录打印日志

+ 121 - 19
src/main/java/com/uas/platform/b2b/controller/FileController.java

@@ -1,21 +1,25 @@
 package com.uas.platform.b2b.controller;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import javax.servlet.http.HttpServletResponse;
-
+import com.alibaba.fastjson.JSONObject;
 import com.uas.dfs.service.FileClient;
+import com.uas.platform.b2b.dao.AttachDao;
+import com.uas.platform.b2b.dao.CommonDao;
+import com.uas.platform.b2b.model.Attach;
+import com.uas.platform.b2b.service.AttachService;
+import com.uas.platform.b2b.support.FileUploadHttp;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
 
-import com.uas.platform.b2b.model.Attach;
-import com.uas.platform.b2b.service.AttachService;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 平台文件
@@ -33,6 +37,12 @@ public class FileController {
 	@Autowired
 	private FileClient fileClient;
 
+	@Autowired
+    private CommonDao commonDao;
+
+	@Autowired
+    private AttachDao attachDao;
+
 	/**
 	 * 文件下载
 	 * 
@@ -62,16 +72,108 @@ public class FileController {
 			// 其他的当做是存放在本地服务器上,去本地服务器根据文件路径去获取
 			File file = new File(attach.getPath());
 			if(!file.exists()) throw new IllegalArgumentException("附件不存在");
-			response.addHeader("Content-Length", String.valueOf(file.length()));
-			InputStream in = new FileInputStream(file);
-			OutputStream os = response.getOutputStream();
-			int data = 0;
-			while ((data = in.read()) != -1) {
-				os.write(data);
-			}
-			in.close();
-			os.close();
+            InputStream in = new FileInputStream(path);
+            OutputStream os = response.getOutputStream();
+            response.addHeader("Content-Disposition", "attachment;filename=" + new String(attach.getName().getBytes("utf-8"), "iso-8859-1"));
+            response.addHeader("Content-Length", String.valueOf(file.length()));
+            response.setCharacterEncoding("utf-8");
+            response.setContentType("application/octec-stream");
+            int data = 0;
+            while ((data = in.read()) != -1) {
+                os.write(data);
+            }
+            in.close();
+            os.close();
 		}
 	}
 
+    /**
+     * 更新文件路径到文件服务器
+     *
+     * @return
+     */
+//	@RequestMapping(value = "/refreshPath", method = RequestMethod.GET)
+//    public ModelMap refreshpath() throws IOException {
+//	    ModelMap map = new ModelMap();
+//	    List<Long> successIds = new ArrayList<Long>();
+//        List<Long> failedIds = new ArrayList<Long>();
+//        convertPath(successIds, failedIds);
+//        map.put("successIds", successIds);
+//        map.put("failedIds", failedIds);
+//        return map;
+//    }
+
+    /**
+     * 递归更新所有附件信息
+     *
+     * @param successIds
+     * @param failedIds
+     */
+    public void convertPath(List<Long> successIds, List<Long> failedIds) {
+        List<Attach> attaches = new ArrayList<Attach>();
+        String sql = "select at_id as \"id\",at_path path,at_size as \"size\",at_name as \"name\" from attachs where at_path like '/usr/local/wildfly8/%' and nvl(at_status, ' ')<>'failure' and rownum <= 50";
+        attaches = commonDao.query(sql, Attach.class);
+        if(!CollectionUtils.isEmpty(attaches)) {
+            for(Attach attach : attaches) {
+                String path = null;
+                String filePath = "E:\\file\\" + attach.getPath();//下载到本地再进行更新处理
+                File file = new File(filePath);
+                if(file.exists()) {
+                    String name = attach.getName().substring(attach.getName().indexOf(".") + 1, attach.getName().length());
+                    try {
+                        InputStream in = new FileInputStream(filePath);
+                        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+                        byte[] buffer = new byte[1024];
+                        int len = 0;
+                        while( (len=in.read(buffer)) != -1 ){
+                            outStream.write(buffer, 0, len);
+                        }
+                        in.close();
+                        path = fileClient.upload(outStream.toByteArray(), attach.getSize(), name, null);
+                    } catch (IOException e) {
+                        failedIds.add(attach.getId());
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+
+                    if(path != null) {
+                        // update
+                        sql = "update attachs set at_path = '" + path +"',at_status = 'success' where at_id = " + attach.getId();
+                        commonDao.getJdbcTemplate().update(sql);
+                        successIds.add(attach.getId());
+                    } else {
+                        // 上传失败更新状态为failure
+                        sql = "update attachs set at_status = 'failure' where at_id = " + attach.getId();
+                        commonDao.getJdbcTemplate().update(sql);
+                        failedIds.add(attach.getId());
+                    }
+                }
+
+            }
+            convertPath(successIds, failedIds);
+        }
+    }
+
+
+    @RequestMapping(value = "/test", method = RequestMethod.GET)
+    public ModelMap  getPath() throws IOException {
+        return new ModelMap("path", getAttachCode());
+    }
+
+    @SuppressWarnings("resource")
+    private String getAttachCode() throws FileNotFoundException, IOException {
+        String path = "E:\\file\\test\\11.jpg";// 文件路径
+        InputStream in = new FileInputStream(path);
+        ByteArrayOutputStream output = new ByteArrayOutputStream();
+        byte[] buffer = new byte[1024];
+        int len = 0;
+        while( (len=in.read(buffer)) != -1 ){
+            output.write(buffer, 0, len);
+        }
+        in.close();
+        byte[] imgByte = output.toByteArray();
+        path = fileClient.upload(imgByte, 373760, "jpg", null);
+        return path;
+    }
+
 }

+ 1 - 1
src/main/java/com/uas/platform/b2b/controller/MakeOrderChangeController.java

@@ -125,7 +125,7 @@ public class MakeOrderChangeController {
 	 *
 	 * @return
 	 */
-	@RequestMapping(value = "/permission/xls", method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/permission", method = RequestMethod.GET)
 	@ResponseBody
 	public ModelMap exportPermission() {
 		return new ModelMap("success", true);

+ 16 - 5
src/main/java/com/uas/platform/b2b/controller/MakeOrderController.java

@@ -62,7 +62,7 @@ public class MakeOrderController {
 	 * @param params
 	 * @return
 	 */
-	@RequestMapping(value = "/status", method = RequestMethod.GET)
+	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<MakeOrder> getAllMakeOrders(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购订单列表(包括委外明细)(全部)");
@@ -96,7 +96,7 @@ public class MakeOrderController {
 	 * @param params
 	 * @return
 	 */
-	@RequestMapping(value = "/status", params = RequestState.DONE, method = RequestMethod.GET)
+	@RequestMapping(value = "/info/search", params = RequestState.DONE, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<MakeOrder> getDoneMakeOrders(PageParams params, String searchFilter) {
 		logger.log("委外加工单", "查看收到的委外加工单列表(已回复)");
@@ -132,7 +132,7 @@ public class MakeOrderController {
 	 * @param params
 	 * @return
 	 */
-	@RequestMapping(value = "/status", params = RequestState.TODO, method = RequestMethod.GET)
+	@RequestMapping(value = "/info/search", params = RequestState.TODO, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<MakeOrder> getToDoMakeOrders(PageParams params, String searchFilter) {
 		logger.log("委外加工单", "查看收到的委外加工单列表(未回复)");
@@ -168,7 +168,7 @@ public class MakeOrderController {
 	 * @param params
 	 * @return
 	 */
-	@RequestMapping(value = "/status", params = RequestState.END, method = RequestMethod.GET)
+	@RequestMapping(value = "/info/search", params = RequestState.END, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<MakeOrder> getEndMakeOrders(PageParams params, String searchFilter) {
 		logger.log("委外加工单", "查看收到的委外加工单列表(已结案)");
@@ -238,6 +238,17 @@ public class MakeOrderController {
 		return makeOrderService.findById(id);
 	}
 
+	/**
+	 * 打印权限判断
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/printCount/permission", method = RequestMethod.POST)
+	@ResponseBody
+	public ModelMap printPermission() {
+		return new ModelMap("success", true);
+	}
+
 	/**
 	 * 作为卖家,根据委外单据ID查找委外加工订单(含明细)
 	 * 
@@ -257,7 +268,7 @@ public class MakeOrderController {
 	 *
 	 * @return
 	 */
-	@RequestMapping(value = "/permission/xls", method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/permission", method = RequestMethod.GET)
 	@ResponseBody
 	public ModelMap exportPermission() {
 		return new ModelMap("success", true);

+ 2 - 2
src/main/java/com/uas/platform/b2b/controller/MakeOutOrderController.java

@@ -63,7 +63,7 @@ public class MakeOutOrderController {
 	 * @param searchFilter
 	 * @return
 	 */
-	@RequestMapping(method = RequestMethod.GET)
+	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<MakeOrder> getAllMakeOutOrders(PageParams params, String searchFilter) {
 		logger.log("委外加工单", "查看委托客户加工的单据列表(全部)");
@@ -97,7 +97,7 @@ public class MakeOutOrderController {
 	 * @param id
 	 * @return
 	 */
-	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
+	@RequestMapping(value = "/{id}/info", method = RequestMethod.GET)
 	@ResponseBody
 	public MakeOrder getReceivedPurchaseOrderItemById(@PathVariable("id") Long id) {
 		logger.log("自己委外加工单", "获取单个自己委外加工单,id:" + id);

+ 5 - 5
src/main/java/com/uas/platform/b2b/controller/PurcInquiryController.java

@@ -121,8 +121,8 @@ public class PurcInquiryController {
 	 * @param id
 	 * @return
 	 */
-	@RequestMapping(value = "/submit/{id}", method = RequestMethod.POST)
-	private ModelMap sumbit(@PathVariable Long id) {
+	@RequestMapping(value = "/submit/update", method = RequestMethod.POST)
+	private ModelMap sumbit(Long id) {
 		return purcInquiryService.sumbit(id);
 	}
 
@@ -358,8 +358,8 @@ public class PurcInquiryController {
 	 * @param id
 	 * @return
 	 */
-	@RequestMapping(value = "/pubishInquiry/{id}", method = RequestMethod.POST)
-	private ModelMap pubishInquiry(@PathVariable Long id) {
+	@RequestMapping(value = "/submit/updatePublic", method = RequestMethod.POST)
+	private ModelMap pubishInquiry(Long id) {
 		return purcInquiryService.pubishInquiry(id);
 	}
 
@@ -412,7 +412,7 @@ public class PurcInquiryController {
 	 * @param id
 	 * @return
 	 */
-	@RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
+	@RequestMapping(value = "/{id}/info", method = RequestMethod.GET)
 	private InquiryDetailInfo getDetail(@PathVariable Long id) {
 		return purcInquiryService.getInquiryDetail(id);
 	}

+ 1 - 1
src/main/java/com/uas/platform/b2b/controller/SaleApBillController.java

@@ -61,7 +61,7 @@ public class SaleApBillController {
 	 * @param searchFilter
 	 * @return
 	 */
-	@RequestMapping(method = RequestMethod.GET)
+	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<PurchaseApBill> getReceivedPurchaseApBills(PageParams params, String searchFilter) {
 		logger.log("客户应付发票", "获取全部客户应付发票");

+ 8 - 8
src/main/java/com/uas/platform/b2b/controller/SaleApCheckController.java

@@ -292,7 +292,7 @@ public class SaleApCheckController {
 	 * @param searchFilter
 	 * @return
 	 */
-	@RequestMapping(method = RequestMethod.GET)
+	@RequestMapping(value = "/info/search", method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<PurchaseApCheck> getPurchaseApChecks(PageParams params, String searchFilter) {
 		logger.log("应收对账单", "作为买家,获取全部应收对账单");
@@ -323,7 +323,7 @@ public class SaleApCheckController {
 	/**
 	 * 作为卖家,获取应收对账单(未对账)
 	 */
-	@RequestMapping(params = RequestState.TODO, method = RequestMethod.GET)
+	@RequestMapping(value = "/info/search", params = RequestState.TODO, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<PurchaseApCheck> getTodoApChecks(PageParams params, String searchFilter) {
 		logger.log("应收对账单", "获取未对账应收对账单");
@@ -357,7 +357,7 @@ public class SaleApCheckController {
 	/**
 	 * 作为卖家,获取应收对账单(已确认)
 	 */
-	@RequestMapping(params = RequestState.DONE, method = RequestMethod.GET)
+	@RequestMapping(value = "/info/search", params = RequestState.DONE, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<PurchaseApCheck> getDoneApChecks(PageParams params, String searchFilter) {
 		logger.log("应收对账单", "获取已确认应收对账单");
@@ -389,7 +389,7 @@ public class SaleApCheckController {
 	/**
 	 * 作为卖家,获取应收对账单(不同意)
 	 */
-	@RequestMapping(params = RequestState.END, method = RequestMethod.GET)
+	@RequestMapping(value = "/info/search", params = RequestState.END, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<PurchaseApCheck> getEndApChecks(PageParams params, String searchFilter) {
 		logger.log("应收对账单", "获取不同意,已作废应收对账单");
@@ -427,7 +427,7 @@ public class SaleApCheckController {
 	 * @param searchFilter
 	 * @return
 	 */
-	@RequestMapping(value = "/allxls", method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/list", method = RequestMethod.GET)
 	public ModelAndView exportApCheck(String searchFilter) {
 		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
 		PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);
@@ -450,7 +450,7 @@ public class SaleApCheckController {
 	 * @param searchFilter
 	 * @return
 	 */
-	@RequestMapping(value = "/allxls", params = RequestState.DONE, method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/list", params = RequestState.DONE, method = RequestMethod.GET)
 	public ModelAndView exportApCheckDone(String searchFilter) {
 		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
 		PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);
@@ -473,7 +473,7 @@ public class SaleApCheckController {
 	 * @param searchFilter
 	 * @return
 	 */
-	@RequestMapping(value = "/allxls", params = RequestState.TODO, method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/list", params = RequestState.TODO, method = RequestMethod.GET)
 	public ModelAndView exportApCheckTodo(String searchFilter) {
 		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
 		PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);
@@ -496,7 +496,7 @@ public class SaleApCheckController {
 	 * @param searchFilter
 	 * @return
 	 */
-	@RequestMapping(value = "/allxls", params = RequestState.END, method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/list", params = RequestState.END, method = RequestMethod.GET)
 	public ModelAndView exportApChecks(String searchFilter) {
 		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
 		PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);

+ 3 - 3
src/main/java/com/uas/platform/b2b/controller/SaleInquiryController.java

@@ -482,10 +482,10 @@ public class SaleInquiryController {
 	}
 
 	/**
-	 * 作为卖家,收到的采购询价明细
+	 * 作为卖家,收到的采购询价明细(手机端)
 	 * 
 	 */
-	@RequestMapping(value = "/items/{inquiryItemId}", method = RequestMethod.GET)
+	@RequestMapping(value = "/{inquiryItemId}/info/mobile", method = RequestMethod.GET)
 	@ResponseBody
 	public PurchaseInquiryItem getInquiryItemById(@PathVariable("inquiryItemId") Long inquiryItemId) {
 		PurchaseInquiryItem item = purchaseInquiryService.findItemByItemId(inquiryItemId);
@@ -560,7 +560,7 @@ public class SaleInquiryController {
 	 *
 	 * @return
 	 */
-	@RequestMapping(value = "/permission/xls", method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/permission", method = RequestMethod.GET)
 	@ResponseBody
 	public ModelMap exportPermission() {
 		return new ModelMap("success", true);

+ 1 - 1
src/main/java/com/uas/platform/b2b/controller/SaleInquiryMouldController.java

@@ -463,7 +463,7 @@ public class SaleInquiryMouldController {
 	 *
 	 * @return
 	 */
-	@RequestMapping(value = "/permission/xls", method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/permission", method = RequestMethod.GET)
 	@ResponseBody
 	public ModelMap exportPermission() {
 		return new ModelMap("success", true);

+ 149 - 148
src/main/java/com/uas/platform/b2b/controller/SaleNoticeController.java

@@ -112,94 +112,9 @@ public class SaleNoticeController {
 		return searchService.searchPurchaseNoticeIds(keyword, pageParams);
 	}
 
-	/**
-	 * 作为卖家,收到的送货提醒(待发货) -不搜索
-	 *
-	 * @param params
-	 * @return
-	 * @throws UnsupportedEncodingException
-	 */
-	@RequestMapping(value = "/info/nosearch", params = RequestState.TODO, method = RequestMethod.GET)
-	@ResponseBody
-	public SPage<PurchaseNotice> getTodoPurchaseNoticesInfo(PageParams params, String keyword, Long fromDate, Long endDate) {
-		SearchFilter filter = new SearchFilter();
-		filter.setEndDate(endDate);
-		filter.setFromDate(fromDate);
-		SearchFilter disfilter = userService.distribute();
-		if (disfilter != null && disfilter.getDistribute() == null) {
-			return null;
-		}
-		if (disfilter != null && !CollectionUtils.isEmpty(disfilter.getDistribute())) {
-			List<Object> list = new ArrayList<>();
-			list.addAll(disfilter.getDistribute());
-			filter.setDistribute(list);
-		}
-		PageInfo pageInfo = new PageInfo(params);
-		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
-		pageInfo.filter("status", (short)Status.NOT_REPLY.value());
-		pageInfo.filter("waiting", Constant.NO);
-		return purchaseNoticeService.findAllNoticesByPageInfo(pageInfo, null, filter);
-	}
-
-	/**
-	 * 作为卖家,收到的送货提醒(已发货)
-	 *
-	 * @param params
-	 * @return
-	 * @throws UnsupportedEncodingException
-	 */
-	@RequestMapping(value = "/info/nosearch", params = RequestState.DONE, method = RequestMethod.GET)
-	@ResponseBody
-	public SPage<PurchaseNotice> getDonePurchaseNoticesInfo(PageParams params, String keyword, Long fromDate, Long endDate) {
-		logger.log("客户送货提醒", "查看收到的客户送货提醒列表(已发货)");
-		SearchFilter filter = new SearchFilter();
-		filter.setEndDate(endDate);
-		filter.setFromDate(fromDate);
-		SearchFilter disfilter = userService.distribute();
-		if (disfilter != null && disfilter.getDistribute() == null) {
-			return null;
-		}
-		if (disfilter != null && !CollectionUtils.isEmpty(disfilter.getDistribute())) {
-			List<Object> list = new ArrayList<>();
-			list.addAll(disfilter.getDistribute());
-			filter.setDistribute(list);
-		}
-		PageInfo pageInfo = new PageInfo(params);
-		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
-		pageInfo.filter("status", (short)Status.REPLIED.value());
-		return purchaseNoticeService.findDoneNoticesByPageInfo(pageInfo, null, filter);
-	}
-
-
-	/**
-	 * 作为卖家,收到的送货提醒,对应id
-	 * 
-	 * @param id
-	 * @return
-	 */
-	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
-	@ResponseBody
-	public PurchaseNotice getReceivedPurchaseNoticeById(@PathVariable("id") Long id) {
-		logger.log("客户送货提醒", "查看单个客户送货提醒", null, null, id);
-		return purchaseNoticeService.findById(id);
-	}
-
-	/**
-	 * 作为卖家,收到的送货提醒,对应id
-	 * 
-	 * @param id
-	 * @return
-	 */
-	@RequestMapping(value = "/{id}/sendItems", method = RequestMethod.GET)
-	@ResponseBody
-	public List<SaleSendItem> getSendItemsNoticeById(@PathVariable("id") Long id) {
-		logger.log("客户送货提醒", "查看单个客户送货提醒的发货记录", null, null, id);
-		return purchaseNoticeService.findSendById(id);
-	}
-
 	/**
 	 * 作为卖家,收到的送货提醒(待发货)
-	 * 
+	 *
 	 * @param params
 	 * @return
 	 * @throws UnsupportedEncodingException
@@ -238,7 +153,7 @@ public class SaleNoticeController {
 
 	/**
 	 * 作为卖家,收到的送货提醒(已发货)
-	 * 
+	 *
 	 * @param params
 	 * @return
 	 * @throws UnsupportedEncodingException
@@ -277,7 +192,7 @@ public class SaleNoticeController {
 
 	/**
 	 * 作为卖家,收到的送货提醒(备料中)
-	 * 
+	 *
 	 * @param params
 	 * @return
 	 * @throws UnsupportedEncodingException
@@ -285,7 +200,7 @@ public class SaleNoticeController {
 	@RequestMapping(value = "/info/search", params = RequestState.WAITING, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<PurchaseNotice> getWaitingPurchaseNotices(PageParams params, String keyword, Long fromDate,
-			Long endDate){
+														   Long endDate){
 		logger.log("客户送货提醒", "查看收到的客户送货提醒列表(备料中)");
 		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
 		pageParams.getFilters().put("pn_venduu", SystemSession.getUser().getEnterprise().getUu());
@@ -316,7 +231,7 @@ public class SaleNoticeController {
 
 	/**
 	 * 作为卖家,收到的送货提醒(已结案)
-	 * 
+	 *
 	 * @param params
 	 * @return
 	 * @throws UnsupportedEncodingException
@@ -352,6 +267,92 @@ public class SaleNoticeController {
 		return searchService.searchPurchaseNoticeIds(keyword, pageParams);
 	}
 
+	/**
+	 * 作为卖家,收到的送货提醒(待发货) -不搜索
+	 *
+	 * @param params
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/info/nosearch", params = RequestState.TODO, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseNotice> getTodoPurchaseNoticesInfo(PageParams params, String keyword, Long fromDate, Long endDate) {
+		SearchFilter filter = new SearchFilter();
+		filter.setEndDate(endDate);
+		filter.setFromDate(fromDate);
+		SearchFilter disfilter = userService.distribute();
+		if (disfilter != null && disfilter.getDistribute() == null) {
+			return null;
+		}
+		if (disfilter != null && !CollectionUtils.isEmpty(disfilter.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			list.addAll(disfilter.getDistribute());
+			filter.setDistribute(list);
+		}
+		PageInfo pageInfo = new PageInfo(params);
+		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+		pageInfo.filter("status", (short)Status.NOT_REPLY.value());
+		pageInfo.filter("waiting", Constant.NO);
+		return purchaseNoticeService.findAllNoticesByPageInfo(pageInfo, null, filter);
+	}
+
+	/**
+	 * 作为卖家,收到的送货提醒(已发货)
+	 *
+	 * @param params
+	 * @return
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/info/nosearch", params = RequestState.DONE, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseNotice> getDonePurchaseNoticesInfo(PageParams params, String keyword, Long fromDate, Long endDate) {
+		logger.log("客户送货提醒", "查看收到的客户送货提醒列表(已发货)");
+		SearchFilter filter = new SearchFilter();
+		filter.setEndDate(endDate);
+		filter.setFromDate(fromDate);
+		SearchFilter disfilter = userService.distribute();
+		if (disfilter != null && disfilter.getDistribute() == null) {
+			return null;
+		}
+		if (disfilter != null && !CollectionUtils.isEmpty(disfilter.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			list.addAll(disfilter.getDistribute());
+			filter.setDistribute(list);
+		}
+		PageInfo pageInfo = new PageInfo(params);
+		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+		pageInfo.filter("status", (short)Status.REPLIED.value());
+		return purchaseNoticeService.findDoneNoticesByPageInfo(pageInfo, null, filter);
+	}
+
+
+	/**
+	 * 作为卖家,收到的送货提醒,对应id
+	 * 
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
+	@ResponseBody
+	public PurchaseNotice getReceivedPurchaseNoticeById(@PathVariable("id") Long id) {
+		logger.log("客户送货提醒", "查看单个客户送货提醒", null, null, id);
+		return purchaseNoticeService.findById(id);
+	}
+
+	/**
+	 * 作为卖家,收到的送货提醒,对应id
+	 * 
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/{id}/sendItems", method = RequestMethod.GET)
+	@ResponseBody
+	public List<SaleSendItem> getSendItemsNoticeById(@PathVariable("id") Long id) {
+		logger.log("客户送货提醒", "查看单个客户送货提醒的发货记录", null, null, id);
+		return purchaseNoticeService.findSendById(id);
+	}
+
+
 	/**
 	 * 作为卖家,针对送货提醒发货
 	 * 
@@ -408,7 +409,7 @@ public class SaleNoticeController {
 	 * @param params
 	 * @return
 	 */
-	@RequestMapping(value = "/sends", method = RequestMethod.GET)
+	@RequestMapping(value = "/sends/info/search", method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<SaleSendAll> getSaleSends(PageParams params, String keyword, Long fromDate, Long endDate) {
 		logger.log("发货单", "查看全部的发货单");
@@ -438,66 +439,13 @@ public class SaleNoticeController {
 		return searchService.searchSaleSendIds(keyword, pageParams);
 	}
 
-	/**
-	 * 作为卖家,查看单个发货单
-	 * 
-	 * @param params
-	 * @return
-	 */
-	@RequestMapping(value = "/sends/{id}/info", method = RequestMethod.GET)
-	@ResponseBody
-	public SaleSendAll getSaleSendsById(PageParams params, @PathVariable("id") Long id) {
-		logger.log("发货单", "查看单个送货单", "根据Id查找", "", id);
-		return purchaseNoticeService.findSaleSendById(id);
-	}
-
-	/**
-	 * 打印权限判断
-	 *
-	 * @return
-	 */
-	@RequestMapping(value = "/sends/print/permission", method = RequestMethod.POST)
-	@ResponseBody
-	public ModelMap printPermission() {
-		return new ModelMap("success", true);
-	}
-
-	/**
-	 * 增加发货单打印次数
-	 *
-	 * @param params
-	 * @return
-	 */
-	@RequestMapping(value = "/sends/print/{id}", method = RequestMethod.POST)
-	@ResponseBody
-	public void printCount(PageParams params, @PathVariable("id") Long id) {
-		logger.log("发货单", "打印单个发货单", "根据Id查找", "", id);
-		purchaseNoticeService.printCount(id);
-	}
-
-	/**
-	 * 更新发货单的条码规则
-	 * 
-	 * @param json
-	 */
-	@RequestMapping(value = "/sends/{id}", method = RequestMethod.POST)
-	@ResponseBody
-	public void updateSaleSend(@RequestBody String json) {
-		SaleSendItem saleSendItem = FlexJsonUtils.fromJson(json, SaleSendItem.class);
-		if (saleSendItem != null && saleSendItem.getId() != null) {
-			logger.log("条码维护", "保存条码数据", "根据Id查找", "", saleSendItem.getId());
-			purchaseNoticeService.updateBarCode(saleSendItem.getId(), saleSendItem.getPackageQty(),
-					saleSendItem.getOutBoxQty());
-		}
-	}
-
 	/**
 	 * 作为卖家,查看送货单-已收料
-	 * 
+	 *
 	 * @param params
 	 * @return
 	 */
-	@RequestMapping(value = "/sends", params = RequestState.DONE, method = RequestMethod.GET)
+	@RequestMapping(value = "/sends/info/search", params = RequestState.DONE, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<SaleSendAll> getReceivedSaleSends(PageParams params, String keyword, Long fromDate, Long endDate) {
 		logger.log("发货单", "查看全部的送货单");
@@ -531,11 +479,11 @@ public class SaleNoticeController {
 
 	/**
 	 * 作为卖家,查看送货单-未收料(包括部分收料)
-	 * 
+	 *
 	 * @param params
 	 * @return
 	 */
-	@RequestMapping(value = "/sends", params = RequestState.TODO, method = RequestMethod.GET)
+	@RequestMapping(value = "/sends/info/search", params = RequestState.TODO, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<SaleSendAll> getUnReceivedSaleSends(PageParams params, String keyword, Long fromDate, Long endDate) {
 		logger.log("发货单", "查看全部的送货单");
@@ -566,6 +514,59 @@ public class SaleNoticeController {
 		return searchService.searchSaleSendIds(keyword, pageParams);
 	}
 
+	/**
+	 * 作为卖家,查看单个发货单
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/sends/{id}/info", method = RequestMethod.GET)
+	@ResponseBody
+	public SaleSendAll getSaleSendsById(PageParams params, @PathVariable("id") Long id) {
+		logger.log("发货单", "查看单个送货单", "根据Id查找", "", id);
+		return purchaseNoticeService.findSaleSendById(id);
+	}
+
+	/**
+	 * 打印权限判断
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/sends/print/permission", method = RequestMethod.POST)
+	@ResponseBody
+	public ModelMap printPermission() {
+		return new ModelMap("success", true);
+	}
+
+	/**
+	 * 增加发货单打印次数
+	 *
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/sends/print/{id}", method = RequestMethod.POST)
+	@ResponseBody
+	public void printCount(PageParams params, @PathVariable("id") Long id) {
+		logger.log("发货单", "打印单个发货单", "根据Id查找", "", id);
+		purchaseNoticeService.printCount(id);
+	}
+
+	/**
+	 * 更新发货单的条码规则
+	 * 
+	 * @param json
+	 */
+	@RequestMapping(value = "/sends/{id}", method = RequestMethod.POST)
+	@ResponseBody
+	public void updateSaleSend(@RequestBody String json) {
+		SaleSendItem saleSendItem = FlexJsonUtils.fromJson(json, SaleSendItem.class);
+		if (saleSendItem != null && saleSendItem.getId() != null) {
+			logger.log("条码维护", "保存条码数据", "根据Id查找", "", saleSendItem.getId());
+			purchaseNoticeService.updateBarCode(saleSendItem.getId(), saleSendItem.getPackageQty(),
+					saleSendItem.getOutBoxQty());
+		}
+	}
+
 	/**
 	 * 导出权限判断
 	 *

+ 1 - 1
src/main/java/com/uas/platform/b2b/controller/SaleOrderChangeController.java

@@ -353,7 +353,7 @@ public class SaleOrderChangeController {
 	 *
 	 * @return
 	 */
-	@RequestMapping(value = "/permission/xls", method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/permission", method = RequestMethod.GET)
 	@ResponseBody
 	public ModelMap exportPermission() {
 		return new ModelMap("success", true);

+ 12 - 1
src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java

@@ -150,6 +150,17 @@ public class SaleOrderController {
 		return new ResponseEntity<String>(HttpStatus.OK);
 	}
 
+	/**
+	 * 打印权限判断(采购方)
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/custPrintCount/permission", method = RequestMethod.POST)
+	@ResponseBody
+	public ModelMap custPrintPermission() {
+		return new ModelMap("success", true);
+	}
+
 	/**
 	 * 打印订单,增加打印次数(采购方)
 	 * 记录打印日志
@@ -715,7 +726,7 @@ public class SaleOrderController {
 	 *
 	 * @return
 	 */
-	@RequestMapping(value = "/permission/xls", method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/permission", method = RequestMethod.GET)
 	@ResponseBody
 	public ModelMap exportPermission() {
 		return new ModelMap("success", true);

+ 2 - 2
src/main/java/com/uas/platform/b2b/controller/SaleQuotationController.java

@@ -470,7 +470,7 @@ public class SaleQuotationController {
 	 * @param id
 	 * @return
 	 */
-	@RequestMapping(value = "/item/{id}", method = RequestMethod.GET)
+	@RequestMapping(value = "/{id}/info", method = RequestMethod.GET)
 	@ResponseBody
 	public SaleQuotationItem getQuotationItem(@PathVariable("id") Long id) {
 		logger.log("主动报价单", "查找主动报价明细", id.toString());
@@ -482,7 +482,7 @@ public class SaleQuotationController {
 	 *
 	 * @return
 	 */
-	@RequestMapping(value = "/permission/xls", method = RequestMethod.GET)
+	@RequestMapping(value = "/xls/permission", method = RequestMethod.GET)
 	@ResponseBody
 	public ModelMap exportPermission() {
 		return new ModelMap("success", true);

+ 4 - 4
src/main/java/com/uas/platform/b2b/controller/SaleSampleController.java

@@ -391,7 +391,7 @@ public class SaleSampleController {
 	 * @param endDate
 	 * @return
 	 */
-	@RequestMapping(value = "/approval", method = RequestMethod.GET)
+	@RequestMapping(value = "/approval/info/search", method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<PurchaseProofingApproval> getProofingApprovals(PageParams params, String keyword, Long fromDate,
 			Long endDate) {
@@ -432,7 +432,7 @@ public class SaleSampleController {
 	 * @param endDate
 	 * @return
 	 */
-	@RequestMapping(value = "/approval", params = RequestState.AGREED, method = RequestMethod.GET)
+	@RequestMapping(value = "/approval/info/search", params = RequestState.AGREED, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<PurchaseProofingApproval> getQualifiedProofingApprovals(PageParams params, String keyword, Long fromDate,
 																Long endDate) {
@@ -477,7 +477,7 @@ public class SaleSampleController {
 	 * @param endDate
 	 * @return
 	 */
-	@RequestMapping(value = "/approval", params = RequestState.REFUSED, method = RequestMethod.GET)
+	@RequestMapping(value = "/approval/info/search", params = RequestState.REFUSED, method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<PurchaseProofingApproval> getUnqualifiedProofingApprovals(PageParams params, String keyword, Long fromDate,
 																Long endDate) {
@@ -516,7 +516,7 @@ public class SaleSampleController {
 	 * @param id
 	 * @return
 	 */
-	@RequestMapping(value = "/approval/{id}", method = RequestMethod.GET)
+	@RequestMapping(value = "/approval/{id}/info", method = RequestMethod.GET)
 	@ResponseBody
 	public PurchaseProofingApproval getProofingDetailApproval(@PathVariable("id") Long id) {
 		logger.log("客户认定单", "查看所有客户认定单详情界面");

+ 17 - 0
src/main/java/com/uas/platform/b2b/controller/SnapshotController.java

@@ -98,6 +98,9 @@ public class SnapshotController {
 	@Autowired
 	private PurchaseTenderService purchaseTenderService;
 
+	@Autowired
+	private VendorPerformanceAssessService vpaService;
+
 	/**
 	 * 统计待处理事项
 	 * 
@@ -474,6 +477,20 @@ public class SnapshotController {
 			}
 		}).task(new Runnable() {
 
+			@Override
+			public void run() {
+				//供应商绩效考核
+				SystemSession.setUser(user);
+				int count = 0;
+				List<Object[]> list = vpaService.getVpaCount("sale");
+				for (Object[] objects : list){
+					count = count + Integer.valueOf(objects[0].toString());
+				}
+				hashtable.put("vendorPerformanceAssess", count);
+				SystemSession.clear();
+			}
+		}).task(new Runnable() {
+
 			@Override
 			public void run() {
 				//客户采购询价

+ 3 - 3
src/main/java/com/uas/platform/b2b/controller/VendorController.java

@@ -49,7 +49,7 @@ public class VendorController {
 	/**
 	 * 获取供应商
 	 */
-	@RequestMapping(method = RequestMethod.GET)
+	@RequestMapping(value= "/info/search", method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<Vendor> getVendors(PageParams params, String keyword) {
 		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
@@ -91,7 +91,7 @@ public class VendorController {
 	/**
 	 * 获取客户
 	 */
-	@RequestMapping(value = "/customer", method = RequestMethod.GET)
+	@RequestMapping(value = "/customer/info/search", method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<Vendor> getCustomers(PageParams params, String keyword) {
 		com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
@@ -149,7 +149,7 @@ public class VendorController {
 	 *
 	 * @return
 	 */
-	@RequestMapping(value = "/customer/permission/xls", method = RequestMethod.GET)
+	@RequestMapping(value = "/customer/xls/permission", method = RequestMethod.GET)
 	public ModelMap exportVendorsPermission() {
 		return new ModelMap("success", true);
 	}

+ 75 - 0
src/main/java/com/uas/platform/b2b/controller/VendorPerformanceAssessController.java

@@ -0,0 +1,75 @@
+package com.uas.platform.b2b.controller;
+
+import com.uas.platform.b2b.model.VendorPerformanceAssess;
+import com.uas.platform.b2b.search.SearchService;
+import com.uas.platform.b2b.service.VendorPerformanceAssessService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.PageParams;
+import com.uas.search.b2b.model.SPage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 供应商绩效考核
+ *
+ * Created by 黄诚天 on 2017-10-15.
+ */
+@SuppressWarnings("deprecation")
+@RestController
+@RequestMapping("/vendorPerformanceAssess")
+public class VendorPerformanceAssessController {
+    @Autowired
+    private SearchService searchService;
+
+    @Autowired
+    private VendorPerformanceAssessService vpaService;
+
+    /**
+     * 获取供应商绩效考核
+     */
+    @RequestMapping(value = "/info/search", method = RequestMethod.GET)
+    @ResponseBody
+    public SPage<VendorPerformanceAssess> getVpas(PageParams params, String keyword) {
+        com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, null);
+        pageParams.getFilters().put("vpa_veuu", SystemSession.getUser().getEnterprise().getUu());
+//		pageParams.getFilters().put("ve_custswitch", Constant.YES);
+//		List<Sort> sortList = new ArrayList<>();
+//		SearchFilter filter = userService.distribute();
+//		if (filter != null && filter.getDistribute() == null) {
+//			return null;
+//		}
+//		if (filter != null && !CollectionUtils.isEmpty(filter.getDistribute())) {
+//			List<Object> list = new ArrayList<>();
+//			for (Object object : filter.getDistribute()) {
+//				list.add(object);
+//			}
+//			pageParams.getFilters().put("ve_myenuu", new MultiValue(list, true));
+//		}
+//		sortList.add(new Sort("ve_id", false, Type.LONG, new Long(1)));
+//		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+        return searchService.searchVendorPerformanceAssesss(keyword, pageParams);
+    }
+
+    /**
+     * 获取供应商绩效考核详情
+     *
+     * @param id
+     * @return
+     */
+    @RequestMapping(value = "/{id}/info", method = RequestMethod.GET)
+    @ResponseBody
+    public VendorPerformanceAssess getDetail(@PathVariable Long id) {
+        return vpaService.findById(id);
+    }
+
+    /**
+     * 设置单据已读
+     * @author wangmh
+     */
+    @RequestMapping(value = "/setRead", method = RequestMethod.POST)
+    @ResponseBody
+    public void setReadVpaByIds(@RequestBody Long... sourceIds) {
+        vpaService.setReadByIds("sale", sourceIds);
+    }
+
+}

+ 3 - 4
src/main/java/com/uas/platform/b2b/dao/DeputyOrderDao.java

@@ -1,12 +1,11 @@
 package com.uas.platform.b2b.dao;
 
-import java.util.List;
-
+import com.uas.platform.b2b.model.DeputyOrder;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;
 
-import com.uas.platform.b2b.model.DeputyOrder;
+import java.util.List;
 
 @Repository
 public interface DeputyOrderDao extends JpaRepository<DeputyOrder, Long>, JpaSpecificationExecutor<DeputyOrder> {
@@ -29,7 +28,7 @@ public interface DeputyOrderDao extends JpaRepository<DeputyOrder, Long>, JpaSpe
 	 * @param deputyuu
 	 * @return
 	 */
-	List<DeputyOrder> findBySalecodeAndDeputyuu(String salecode, Long deputyuu);
+	List<DeputyOrder> findBySalecodeAndDeputyuuAndDownloadstatus(String salecode, Long deputyuu, String status);
 
 	/**
 	 * 通过单据流水号、下载状态(存在重复单号的问题)查询代采订单信息

+ 9 - 0
src/main/java/com/uas/platform/b2b/dao/InvitationRecordDao.java

@@ -28,4 +28,13 @@ public interface InvitationRecordDao
 	 * @return
 	 */
 	public List<InvitationRecord> findByUseruu(Long useruu);
+
+	/**
+	 * 通过邀请企业uu号和供应商名称查询邀请记录
+	 *
+	 * @param enuu
+	 * @param vendname
+	 * @return
+	 */
+	public InvitationRecord findByEnuuAndVendname(Long enuu, String vendname);
 }

+ 15 - 6
src/main/java/com/uas/platform/b2b/dao/VendorDao.java

@@ -1,17 +1,16 @@
 package com.uas.platform.b2b.dao;
 
-import java.util.List;
-
-import javax.persistence.QueryHint;
-
+import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.core.data.repository.GenericRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.QueryHints;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
-import com.uas.platform.b2b.model.Vendor;
-import com.uas.platform.core.data.repository.GenericRepository;
+import javax.persistence.QueryHint;
+import java.util.List;
 
 @Repository
 public interface VendorDao extends JpaSpecificationExecutor<Vendor>, GenericRepository<Vendor, Long> {
@@ -128,4 +127,14 @@ public interface VendorDao extends JpaSpecificationExecutor<Vendor>, GenericRepo
 	 * @return
 	 */
     List<Vendor> findBySynchStatus(short no);
+
+	/**
+	 * 寻找未同步到ERP的供应商信息
+	 *
+	 * @param myEnuu
+	 * @param status
+	 * @return
+	 */
+    List<Vendor> findByMyEnUUAndErpstatus(Long myEnuu, Integer status);
+
 }

+ 22 - 0
src/main/java/com/uas/platform/b2b/dao/VendorPerformanceAssessDao.java

@@ -0,0 +1,22 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.VendorPerformanceAssess;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * Created by 黄诚天 on 2017-10-12.
+ */
+@Repository
+public interface VendorPerformanceAssessDao extends JpaSpecificationExecutor<VendorPerformanceAssess>, JpaRepository<VendorPerformanceAssess, Long> {
+    @Query("from VendorPerformanceAssess v where v.enUU = :enUU and v.vpaId = :vpaId")
+    public List<VendorPerformanceAssess> findByEnUUAndVapId(@Param("enUU") long enUU, @Param("vpaId") Long vpaId);
+
+    @Query("select count(p) from VendorPerformanceAssess p where p.id in :ids")
+    List<Object[]> getUnreadCountEveryStatus(List<Long> ids);
+}

+ 9 - 2
src/main/java/com/uas/platform/b2b/erp/controller/PurchaseProdInOutController.java

@@ -4,6 +4,7 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.List;
 
+import com.uas.platform.b2b.service.PurchaseApBillService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -31,10 +32,13 @@ import com.uas.platform.core.util.serializer.FlexJsonUtils;
 public class PurchaseProdInOutController {
 
 	@Autowired
-	PurchaseAcceptService purchaseAcceptService;
+	private PurchaseAcceptService purchaseAcceptService;
 	
 	@Autowired
-	PurchaseProdInOutService purchaseProdInOutService;
+	private PurchaseProdInOutService purchaseProdInOutService;
+
+	@Autowired
+	private PurchaseApBillService purchaseApBillService;
 
 	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
@@ -81,6 +85,9 @@ public class PurchaseProdInOutController {
 	public void refreshPrice(@RequestParam("data") String data) throws UnsupportedEncodingException {
 		String jsonStr = URLDecoder.decode(data, "UTF-8");
 		List<ProdInOutRefreshPrice> prodInOuts = FlexJsonUtils.fromJsonArray(jsonStr, ProdInOutRefreshPrice.class);
+		// 更新采购验收单的价格
 		purchaseAcceptService.save(purchaseProdInOutService.convertPirceForProdIn(prodInOuts));
+		// 更新关联的应付发票的价格
+		purchaseApBillService.refreshPrice(prodInOuts);
 	}
 }

+ 91 - 0
src/main/java/com/uas/platform/b2b/erp/controller/VendorPerformanceAssessErpController.java

@@ -0,0 +1,91 @@
+package com.uas.platform.b2b.erp.controller;
+
+import com.uas.platform.b2b.erp.model.VendorPerformanceAssessErp;
+import com.uas.platform.b2b.erp.service.VendorPerformanceAssessErpService;
+import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
+import com.uas.platform.b2b.model.VendorPerformanceAssess;
+import com.uas.platform.b2b.service.VendorPerformanceAssessService;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 对ERP的供应商绩效考核接口
+ * Created by 黄诚天 on 2017-10-12.
+ */
+@Controller
+@RequestMapping("/erp/vendorPerformanceAssess")
+public class VendorPerformanceAssessErpController {
+    @Autowired
+    private VendorPerformanceAssessErpService vpaErpService;
+
+    @Autowired
+    private VendorPerformanceAssessService vpaService;
+
+    private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
+
+    /**
+     * 将ERP的供应商绩效考核信息写到平台
+     *
+     * @param data
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    @RequestMapping(method = RequestMethod.POST)
+    @ResponseBody
+    public void saveVPAs(@RequestParam("data") String data) throws UnsupportedEncodingException {
+        String jsonStr = URLDecoder.decode(data, "UTF-8");
+        List<VendorPerformanceAssessErp> vpas = FlexJsonUtils.fromJsonArray(jsonStr, VendorPerformanceAssessErp.class);
+        vpaService.save(vpaErpService.convertVPA(vpas));
+        logger.log("供应商绩效考核信息", "上传供应商绩效考核信息", vpas.size());
+    }
+
+    /**
+     * 将平台更新的ERP的供应商绩效考核信息回传回ERP
+     *
+     * @return
+     */
+    @RequestMapping(value = "/backtouas", method = RequestMethod.GET)
+    @ResponseBody
+    public List<VendorPerformanceAssessErp> getVPAs() {
+        List<VendorPerformanceAssessErp> vpaErps = new ArrayList<VendorPerformanceAssessErp>();
+        //暂不管回传
+        List<VendorPerformanceAssess> vpas = null;
+        if (!CollectionUtils.isEmpty(vpas)) {
+            for (VendorPerformanceAssess vpa : vpas) {
+                VendorPerformanceAssessErp vpaErp = new VendorPerformanceAssessErp();
+                vpaErp.setVpa_gysqrdf(vpa.getVpaGysqrdf());
+                vpaErp.setVpa_brkyy(vpa.getVpaBrkyy());
+                vpaErp.setVpa_recordman(vpa.getVpaRecordman());
+                vpaErp.setVpa_recorddate(vpa.getVpaRecorddate());
+                vpaErps.add(vpaErp);
+            }
+        }
+        return vpaErps;
+    }
+
+    /**
+     * 更新下载成功的状态
+     *
+     * @param data
+     * @throws UnsupportedEncodingException
+     */
+    @RequestMapping(value = "/refreshDownloadstatus", method = RequestMethod.POST)
+    @ResponseBody
+    public void refreshDownloadstatus(@RequestParam("data") String data) throws UnsupportedEncodingException {
+        vpaService.onVPADownSuccess(URLDecoder.decode(data, "UTF-8").split(","));
+    }
+
+
+}

+ 43 - 0
src/main/java/com/uas/platform/b2b/erp/controller/VendorRateController.java

@@ -2,8 +2,10 @@ package com.uas.platform.b2b.erp.controller;
 
 import com.alibaba.fastjson.JSONArray;
 import com.uas.platform.b2b.dao.VendorDao;
+import com.uas.platform.b2b.erp.model.InquiryVendorInfo;
 import com.uas.platform.b2b.erp.model.VendorInfo;
 import com.uas.platform.b2b.erp.model.VendorRate;
+import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.core.logging.BufferedLoggerManager;
@@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
+import java.util.Arrays;
 import java.util.List;
 
 @Controller
@@ -28,6 +31,9 @@ public class VendorRateController {
 	@Autowired
 	private VendorDao vendorDao;
 
+	@Autowired
+	private VendorService vendorService;
+
 	/**
 	 * 上传供应商费率
 	 * 
@@ -84,4 +90,41 @@ public class VendorRateController {
 		}
 	}
 
+
+	/**
+	 * 同步erp的未注册平台的供应商进行邀请注册
+	 *
+	 * @param data
+	 * @throws UnsupportedEncodingException
+	 */
+	@RequestMapping(value = "/invite", method = RequestMethod.POST)
+	@ResponseBody
+	public void uploadVendorInfo(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		String jsonStr = URLDecoder.decode(data, "UTF-8");
+		List<InquiryVendorInfo> infos = JSONArray.parseArray(jsonStr, InquiryVendorInfo.class);
+		vendorService.saveInvitation(infos);
+		logger.log("供应商资料", "邀请供应商开通平台", infos.size());
+	}
+
+	/**
+	 * 获取未同步UU号到ERP的供应商信息
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/downloadUU", method = RequestMethod.GET)
+	@ResponseBody
+	public List<InquiryVendorInfo> getVendUU() {
+		return vendorService.getInfo();
+	}
+
+	/**
+	 * erp更新供应商uu后回传到平台更新下载状态
+	 *
+	 * @param data
+	 */
+	@RequestMapping(value = "/check", method = RequestMethod.POST)
+	@ResponseBody
+	public void checkSuccess(@RequestParam("data") String data) {
+		vendorService.updateStatus(data);
+	}
 }

+ 74 - 0
src/main/java/com/uas/platform/b2b/erp/model/ErpInviteRecord.java

@@ -0,0 +1,74 @@
+package com.uas.platform.b2b.erp.model;
+
+/**
+ * 记录询价邀请注册的记录,防止重复发送邀请
+ *
+ * Created by hejq on 2017-10-13.
+ */
+public class ErpInviteRecord {
+
+    /**
+     * 邮箱
+     */
+    private String ve_email;
+
+    /**
+     * 手机号
+     */
+    private String ve_tel;
+
+    /**
+     * 状态
+     */
+    private String ve_status;
+
+    /**
+     * 时间
+     */
+    private String ve_date;
+
+    /**
+     * 供应商名称
+     */
+    private String ve_name;
+
+    public String getVe_email() {
+        return ve_email;
+    }
+
+    public void setVe_email(String ve_email) {
+        this.ve_email = ve_email;
+    }
+
+    public String getVe_tel() {
+        return ve_tel;
+    }
+
+    public void setVe_tel(String ve_tel) {
+        this.ve_tel = ve_tel;
+    }
+
+    public String getVe_status() {
+        return ve_status;
+    }
+
+    public void setVe_status(String ve_status) {
+        this.ve_status = ve_status;
+    }
+
+    public String getVe_date() {
+        return ve_date;
+    }
+
+    public void setVe_date(String ve_date) {
+        this.ve_date = ve_date;
+    }
+
+    public String getVe_name() {
+        return ve_name;
+    }
+
+    public void setVe_name(String ve_name) {
+        this.ve_name = ve_name;
+    }
+}

+ 13 - 1
src/main/java/com/uas/platform/b2b/erp/model/InquiryDetail.java

@@ -45,6 +45,7 @@ public class InquiryDetail {
 	private String id_vendyyzzh;// 供应商营业执照号
 	private String in_code;// 公共询价时epr没有表不同,这时,需要新建数据
 	private String in_inquirytype;// 询价类型,公共询价传回到ERP时进行特殊处理
+    private Integer id_quto;//给是否自动询价赋值
 
 	public Long getB2b_id_id() {
 		return b2b_id_id;
@@ -270,7 +271,15 @@ public class InquiryDetail {
 		this.in_inquirytype = in_inquirytype;
 	}
 
-	/**
+    public Integer getId_quto() {
+        return id_quto;
+    }
+
+    public void setId_quto(Integer id_quto) {
+        this.id_quto = id_quto;
+    }
+
+    /**
 	 * 转为平台的采购询价明细
 	 * 
 	 * @return
@@ -340,6 +349,9 @@ public class InquiryDetail {
 				files.add(new RemoteFile(attach));
 			}
 		}
+		if("自动询价".equals(item.getInquiry().getRemark())) {
+            this.id_quto = 1;
+        }
 	}
 
 	public InquiryDetail(SaleQuotationItem item) {

+ 179 - 0
src/main/java/com/uas/platform/b2b/erp/model/InquiryVendorInfo.java

@@ -0,0 +1,179 @@
+package com.uas.platform.b2b.erp.model;
+
+import com.uas.platform.b2b.model.InvitationRecord;
+
+import java.util.Date;
+
+public class InquiryVendorInfo {
+
+	/**
+	 * 当前账套企业名称
+	 */
+	private String en_name;
+	
+	/**
+	 * 企业营业执照号
+	 */
+	private String en_businesscode;
+	
+	/**
+	 * 管理员姓名
+	 */
+	private String en_adminname;
+	
+	/**
+	 * 管理员UU号
+	 */
+	private String en_adminuu;
+	
+	/**
+	 * 供应商编号
+	 */
+	private String ve_code;
+	
+	/**
+	 * 供应商名称
+	 */
+	private String ve_name;
+	
+	/**
+	 * 供应商联系邮箱
+	 */
+	private String ve_email;
+	
+	/**
+	 * 供应商联系人
+	 */
+	private String ve_contact;
+	
+	/**
+	 * 供应商联系电话
+	 */
+	private String ve_mobile;
+	
+	/**
+	 * 供应商营业执照
+	 */
+	private String ve_webserver;
+	
+	/**
+	 * 供应商UU
+	 */
+	private String ve_uu;
+
+	/**
+	 * b2b供应商表的id,为了回传更新状态
+	 *
+	 */
+	private Long b2b_id;
+
+	public String getEn_name() {
+		return en_name;
+	}
+
+	public void setEn_name(String en_name) {
+		this.en_name = en_name;
+	}
+
+	public String getEn_businesscode() {
+		return en_businesscode;
+	}
+
+	public void setEn_businesscode(String en_businesscode) {
+		this.en_businesscode = en_businesscode;
+	}
+
+	public String getEn_adminname() {
+		return en_adminname;
+	}
+
+	public void setEn_adminname(String en_adminname) {
+		this.en_adminname = en_adminname;
+	}
+
+	public String getEn_adminuu() {
+		return en_adminuu;
+	}
+
+	public void setEn_adminuu(String en_adminuu) {
+		this.en_adminuu = en_adminuu;
+	}
+
+	public String getVe_code() {
+		return ve_code;
+	}
+
+	public void setVe_code(String ve_code) {
+		this.ve_code = ve_code;
+	}
+
+	public String getVe_name() {
+		return ve_name;
+	}
+
+	public void setVe_name(String ve_name) {
+		this.ve_name = ve_name;
+	}
+
+	public String getVe_email() {
+		return ve_email;
+	}
+
+	public void setVe_email(String ve_email) {
+		this.ve_email = ve_email;
+	}
+
+	public String getVe_contact() {
+		return ve_contact;
+	}
+
+	public void setVe_contact(String ve_contact) {
+		this.ve_contact = ve_contact;
+	}
+
+	public String getVe_mobile() {
+		return ve_mobile;
+	}
+
+	public void setVe_mobile(String ve_mobile) {
+		this.ve_mobile = ve_mobile;
+	}
+
+	public String getVe_webserver() {
+		return ve_webserver;
+	}
+
+	public void setVe_webserver(String ve_webserver) {
+		this.ve_webserver = ve_webserver;
+	}
+
+	public String getVe_uu() {
+		return ve_uu;
+	}
+
+	public void setVe_uu(String ve_uu) {
+		this.ve_uu = ve_uu;
+	}
+
+	public Long getB2b_id() {
+		return b2b_id;
+	}
+
+	public void setB2b_id(Long b2b_id) {
+		this.b2b_id = b2b_id;
+	}
+
+	public InvitationRecord covert() {
+		InvitationRecord record = new InvitationRecord();
+		record.setDate(new Date());
+		record.setBussinesscode(this.getEn_businesscode());
+		record.setUseruu(Long.valueOf(this.getEn_adminuu()));
+		record.setVendname(this.getVe_name());
+		record.setVenduseremail(this.getVe_email());
+		record.setVendusername(this.getVe_contact());
+		record.setVendusertel(this.getVe_mobile());
+		record.setErpdate(new Date());
+		record.setSource("erp");
+		return  record;
+	}
+}

+ 10 - 0
src/main/java/com/uas/platform/b2b/erp/model/SaleDownDetail.java

@@ -24,6 +24,7 @@ public class SaleDownDetail {
 	private Float sd_taxrate;
 	private Double sd_taxtotal;
 	private String sd_factory;
+	private String sd_prodsource;
 	
 
 	public String getSd_factory() {
@@ -162,6 +163,14 @@ public class SaleDownDetail {
 		this.sd_taxtotal = sd_taxtotal;
 	}
 
+	public String getSd_prodsource() {
+		return sd_prodsource;
+	}
+
+	public void setSd_prodsource(String sd_prodsource) {
+		this.sd_prodsource = sd_prodsource;
+	}
+
 	public SaleDownDetail() {
 
 	}
@@ -189,6 +198,7 @@ public class SaleDownDetail {
 		this.sd_total = orderItem.getAmount();
 		this.sd_taxtotal = orderItem.getNoTaxAmount();
 		this.sd_factory = orderItem.getFactory();
+		this.sd_prodsource = orderItem.getProdsource();
 	}
 
 	/**

+ 623 - 0
src/main/java/com/uas/platform/b2b/erp/model/VendorPerformanceAssessErp.java

@@ -0,0 +1,623 @@
+package com.uas.platform.b2b.erp.model;
+
+import com.uas.platform.b2b.model.VendorPerformanceAssess;
+
+import java.util.Date;
+
+/**
+ * 供应商绩效考核
+ *
+ * @author huangct
+ */
+
+public class VendorPerformanceAssessErp {
+    private String vpa_code;
+    private Long vpa_id;
+    private String vpa_status;
+    private String vpa_recordman;
+    private Date vpa_recorddate;
+    private String vpa_statuscode;
+    private String vpa_applyman;
+    private String vpa_applydep;
+    private Date vpa_applydate;
+    private String vpa_assessdate;
+    private String vpa_purchasecode;
+    private String vpa_sqe;
+    private String vpa_orderteam;
+    private String vpa_vendorcode;
+    private String vpa_vendorname;
+    private String vpa_prodkind;
+    private Double vpa_llpbhgl;
+    private Double vpa_sxbll;
+    private Double vpa_khsxcs;
+    private Double vpa_cxzdyc;
+    private Double vpa_8dhfjsl;
+    private Double vpa_ycffl;
+    private Double vpa_gfphd;
+    private Double vpa_zlzhdf;
+    private Double vpa_zlqzdf;
+    private Double vpa_jszc;
+    private Double vpa_jsbz;
+    private Double vpa_jsfx;
+    private Double vpa_jszlwzqk;
+    private Double vpa_yphgl;
+    private Double vpa_gcsl;
+    private Double vpa_kkxyq;
+    private Double vpa_wlsffsjszlwt;
+    private Double vpa_jszhdf;
+    private Double vpa_jsqzdf;
+    private Double vpa_cbjj;
+    private Double vpa_zftj;
+    private Double vpa_dyzc;
+    private Double vpa_fwzc;
+    private Double vpa_cgkfzhdf;
+    private Double vpa_wljf;
+    private Double vpa_djhcs;
+    private Double vpa_ngpcl;
+    private Double vpa_fwxl;
+    private Double vpa_cgzhdf;
+    private Double vpa_cgjcgkfqzdf;
+    private Double vpa_zjdf;
+    private String vpa_gysqrdf;
+    private String vpa_brkyy;
+    private String vpa_zlpffj;
+    private String vpa_jspffj;
+    private String vpa_cgpffj;
+    private Date vpa_auditdate;
+    private String vpa_auditor;
+    private String vpa_jbxxfj;
+    private String vpa_purchasename;
+    private String vpa_sqename;
+    private String vpa_ordername;
+    private Long ve_uu;
+
+    public String getVpa_code() {
+        return vpa_code;
+    }
+
+    public void setVpa_code(String vpa_code) {
+        this.vpa_code = vpa_code;
+    }
+
+    public Long getVpa_id() {
+        return vpa_id;
+    }
+
+    public void setVpa_id(Long vpa_id) {
+        this.vpa_id = vpa_id;
+    }
+
+    public String getVpa_status() {
+        return vpa_status;
+    }
+
+    public void setVpa_status(String vpa_status) {
+        this.vpa_status = vpa_status;
+    }
+
+    public String getVpa_recordman() {
+        return vpa_recordman;
+    }
+
+    public void setVpa_recordman(String vpa_recordman) {
+        this.vpa_recordman = vpa_recordman;
+    }
+
+    public Date getVpa_recorddate() {
+        return vpa_recorddate;
+    }
+
+    public void setVpa_recorddate(Date vpa_recorddate) {
+        this.vpa_recorddate = vpa_recorddate;
+    }
+
+    public String getVpa_statuscode() {
+        return vpa_statuscode;
+    }
+
+    public void setVpa_statuscode(String vpa_statuscode) {
+        this.vpa_statuscode = vpa_statuscode;
+    }
+
+    public String getVpa_applyman() {
+        return vpa_applyman;
+    }
+
+    public void setVpa_applyman(String vpa_applyman) {
+        this.vpa_applyman = vpa_applyman;
+    }
+
+    public String getVpa_applydep() {
+        return vpa_applydep;
+    }
+
+    public void setVpa_applydep(String vpa_applydep) {
+        this.vpa_applydep = vpa_applydep;
+    }
+
+    public Date getVpa_applydate() {
+        return vpa_applydate;
+    }
+
+    public void setVpa_applydate(Date vpa_applydate) {
+        this.vpa_applydate = vpa_applydate;
+    }
+
+    public String getVpa_assessdate() {
+        return vpa_assessdate;
+    }
+
+    public void setVpa_assessdate(String vpa_assessdate) {
+        this.vpa_assessdate = vpa_assessdate;
+    }
+
+    public String getVpa_purchasecode() {
+        return vpa_purchasecode;
+    }
+
+    public void setVpa_purchasecode(String vpa_purchasecode) {
+        this.vpa_purchasecode = vpa_purchasecode;
+    }
+
+    public String getVpa_sqe() {
+        return vpa_sqe;
+    }
+
+    public void setVpa_sqe(String vpa_sqe) {
+        this.vpa_sqe = vpa_sqe;
+    }
+
+    public String getVpa_orderteam() {
+        return vpa_orderteam;
+    }
+
+    public void setVpa_orderteam(String vpa_orderteam) {
+        this.vpa_orderteam = vpa_orderteam;
+    }
+
+    public String getVpa_vendorcode() {
+        return vpa_vendorcode;
+    }
+
+    public void setVpa_vendorcode(String vpa_vendorcode) {
+        this.vpa_vendorcode = vpa_vendorcode;
+    }
+
+    public String getVpa_vendorname() {
+        return vpa_vendorname;
+    }
+
+    public void setVpa_vendorname(String vpa_vendorname) {
+        this.vpa_vendorname = vpa_vendorname;
+    }
+
+    public String getVpa_prodkind() {
+        return vpa_prodkind;
+    }
+
+    public void setVpa_prodkind(String vpa_prodkind) {
+        this.vpa_prodkind = vpa_prodkind;
+    }
+
+    public Double getVpa_llpbhgl() {
+        return vpa_llpbhgl;
+    }
+
+    public void setVpa_llpbhgl(Double vpa_llpbhgl) {
+        this.vpa_llpbhgl = vpa_llpbhgl;
+    }
+
+    public Double getVpa_sxbll() {
+        return vpa_sxbll;
+    }
+
+    public void setVpa_sxbll(Double vpa_sxbll) {
+        this.vpa_sxbll = vpa_sxbll;
+    }
+
+    public Double getVpa_khsxcs() {
+        return vpa_khsxcs;
+    }
+
+    public void setVpa_khsxcs(Double vpa_khsxcs) {
+        this.vpa_khsxcs = vpa_khsxcs;
+    }
+
+    public Double getVpa_cxzdyc() {
+        return vpa_cxzdyc;
+    }
+
+    public void setVpa_cxzdyc(Double vpa_cxzdyc) {
+        this.vpa_cxzdyc = vpa_cxzdyc;
+    }
+
+    public Double getVpa_8dhfjsl() {
+        return vpa_8dhfjsl;
+    }
+
+    public void setVpa_8dhfjsl(Double vpa_8dhfjsl) {
+        this.vpa_8dhfjsl = vpa_8dhfjsl;
+    }
+
+    public Double getVpa_ycffl() {
+        return vpa_ycffl;
+    }
+
+    public void setVpa_ycffl(Double vpa_ycffl) {
+        this.vpa_ycffl = vpa_ycffl;
+    }
+
+    public Double getVpa_gfphd() {
+        return vpa_gfphd;
+    }
+
+    public void setVpa_gfphd(Double vpa_gfphd) {
+        this.vpa_gfphd = vpa_gfphd;
+    }
+
+    public Double getVpa_zlzhdf() {
+        return vpa_zlzhdf;
+    }
+
+    public void setVpa_zlzhdf(Double vpa_zlzhdf) {
+        this.vpa_zlzhdf = vpa_zlzhdf;
+    }
+
+    public Double getVpa_zlqzdf() {
+        return vpa_zlqzdf;
+    }
+
+    public void setVpa_zlqzdf(Double vpa_zlqzdf) {
+        this.vpa_zlqzdf = vpa_zlqzdf;
+    }
+
+    public Double getVpa_jszc() {
+        return vpa_jszc;
+    }
+
+    public void setVpa_jszc(Double vpa_jszc) {
+        this.vpa_jszc = vpa_jszc;
+    }
+
+    public Double getVpa_jsbz() {
+        return vpa_jsbz;
+    }
+
+    public void setVpa_jsbz(Double vpa_jsbz) {
+        this.vpa_jsbz = vpa_jsbz;
+    }
+
+    public Double getVpa_jsfx() {
+        return vpa_jsfx;
+    }
+
+    public void setVpa_jsfx(Double vpa_jsfx) {
+        this.vpa_jsfx = vpa_jsfx;
+    }
+
+    public Double getVpa_jszlwzqk() {
+        return vpa_jszlwzqk;
+    }
+
+    public void setVpa_jszlwzqk(Double vpa_jszlwzqk) {
+        this.vpa_jszlwzqk = vpa_jszlwzqk;
+    }
+
+    public Double getVpa_yphgl() {
+        return vpa_yphgl;
+    }
+
+    public void setVpa_yphgl(Double vpa_yphgl) {
+        this.vpa_yphgl = vpa_yphgl;
+    }
+
+    public Double getVpa_gcsl() {
+        return vpa_gcsl;
+    }
+
+    public void setVpa_gcsl(Double vpa_gcsl) {
+        this.vpa_gcsl = vpa_gcsl;
+    }
+
+    public Double getVpa_kkxyq() {
+        return vpa_kkxyq;
+    }
+
+    public void setVpa_kkxyq(Double vpa_kkxyq) {
+        this.vpa_kkxyq = vpa_kkxyq;
+    }
+
+    public Double getVpa_wlsffsjszlwt() {
+        return vpa_wlsffsjszlwt;
+    }
+
+    public void setVpa_wlsffsjszlwt(Double vpa_wlsffsjszlwt) {
+        this.vpa_wlsffsjszlwt = vpa_wlsffsjszlwt;
+    }
+
+    public Double getVpa_jszhdf() {
+        return vpa_jszhdf;
+    }
+
+    public void setVpa_jszhdf(Double vpa_jszhdf) {
+        this.vpa_jszhdf = vpa_jszhdf;
+    }
+
+    public Double getVpa_jsqzdf() {
+        return vpa_jsqzdf;
+    }
+
+    public void setVpa_jsqzdf(Double vpa_jsqzdf) {
+        this.vpa_jsqzdf = vpa_jsqzdf;
+    }
+
+    public Double getVpa_cbjj() {
+        return vpa_cbjj;
+    }
+
+    public void setVpa_cbjj(Double vpa_cbjj) {
+        this.vpa_cbjj = vpa_cbjj;
+    }
+
+    public Double getVpa_zftj() {
+        return vpa_zftj;
+    }
+
+    public void setVpa_zftj(Double vpa_zftj) {
+        this.vpa_zftj = vpa_zftj;
+    }
+
+    public Double getVpa_dyzc() {
+        return vpa_dyzc;
+    }
+
+    public void setVpa_dyzc(Double vpa_dyzc) {
+        this.vpa_dyzc = vpa_dyzc;
+    }
+
+    public Double getVpa_fwzc() {
+        return vpa_fwzc;
+    }
+
+    public void setVpa_fwzc(Double vpa_fwzc) {
+        this.vpa_fwzc = vpa_fwzc;
+    }
+
+    public Double getVpa_cgkfzhdf() {
+        return vpa_cgkfzhdf;
+    }
+
+    public void setVpa_cgkfzhdf(Double vpa_cgkfzhdf) {
+        this.vpa_cgkfzhdf = vpa_cgkfzhdf;
+    }
+
+    public Double getVpa_wljf() {
+        return vpa_wljf;
+    }
+
+    public void setVpa_wljf(Double vpa_wljf) {
+        this.vpa_wljf = vpa_wljf;
+    }
+
+    public Double getVpa_djhcs() {
+        return vpa_djhcs;
+    }
+
+    public void setVpa_djhcs(Double vpa_djhcs) {
+        this.vpa_djhcs = vpa_djhcs;
+    }
+
+    public Double getVpa_ngpcl() {
+        return vpa_ngpcl;
+    }
+
+    public void setVpa_ngpcl(Double vpa_ngpcl) {
+        this.vpa_ngpcl = vpa_ngpcl;
+    }
+
+    public Double getVpa_fwxl() {
+        return vpa_fwxl;
+    }
+
+    public void setVpa_fwxl(Double vpa_fwxl) {
+        this.vpa_fwxl = vpa_fwxl;
+    }
+
+    public Double getVpa_cgzhdf() {
+        return vpa_cgzhdf;
+    }
+
+    public void setVpa_cgzhdf(Double vpa_cgzhdf) {
+        this.vpa_cgzhdf = vpa_cgzhdf;
+    }
+
+    public Double getVpa_cgjcgkfqzdf() {
+        return vpa_cgjcgkfqzdf;
+    }
+
+    public void setVpa_cgjcgkfqzdf(Double vpa_cgjcgkfqzdf) {
+        this.vpa_cgjcgkfqzdf = vpa_cgjcgkfqzdf;
+    }
+
+    public Double getVpa_zjdf() {
+        return vpa_zjdf;
+    }
+
+    public void setVpa_zjdf(Double vpa_zjdf) {
+        this.vpa_zjdf = vpa_zjdf;
+    }
+
+    public String getVpa_gysqrdf() {
+        return vpa_gysqrdf;
+    }
+
+    public void setVpa_gysqrdf(String vpa_gysqrdf) {
+        this.vpa_gysqrdf = vpa_gysqrdf;
+    }
+
+    public String getVpa_brkyy() {
+        return vpa_brkyy;
+    }
+
+    public void setVpa_brkyy(String vpa_brkyy) {
+        this.vpa_brkyy = vpa_brkyy;
+    }
+
+    public String getVpa_zlpffj() {
+        return vpa_zlpffj;
+    }
+
+    public void setVpa_zlpffj(String vpa_zlpffj) {
+        this.vpa_zlpffj = vpa_zlpffj;
+    }
+
+    public String getVpa_jspffj() {
+        return vpa_jspffj;
+    }
+
+    public void setVpa_jspffj(String vpa_jspffj) {
+        this.vpa_jspffj = vpa_jspffj;
+    }
+
+    public String getVpa_cgpffj() {
+        return vpa_cgpffj;
+    }
+
+    public void setVpa_cgpffj(String vpa_cgpffj) {
+        this.vpa_cgpffj = vpa_cgpffj;
+    }
+
+    public Date getVpa_auditdate() {
+        return vpa_auditdate;
+    }
+
+    public void setVpa_auditdate(Date vpa_auditdate) {
+        this.vpa_auditdate = vpa_auditdate;
+    }
+
+    public String getVpa_auditor() {
+        return vpa_auditor;
+    }
+
+    public void setVpa_auditor(String vpa_auditor) {
+        this.vpa_auditor = vpa_auditor;
+    }
+
+    public String getVpa_jbxxfj() {
+        return vpa_jbxxfj;
+    }
+
+    public void setVpa_jbxxfj(String vpa_jbxxfj) {
+        this.vpa_jbxxfj = vpa_jbxxfj;
+    }
+
+    public String getVpa_purchasename() {
+        return vpa_purchasename;
+    }
+
+    public void setVpa_purchasename(String vpa_purchasename) {
+        this.vpa_purchasename = vpa_purchasename;
+    }
+
+    public String getVpa_sqename() {
+        return vpa_sqename;
+    }
+
+    public void setVpa_sqename(String vpa_sqename) {
+        this.vpa_sqename = vpa_sqename;
+    }
+
+    public String getVpa_ordername() {
+        return vpa_ordername;
+    }
+
+    public void setVpa_ordername(String vpa_ordername) {
+        this.vpa_ordername = vpa_ordername;
+    }
+
+    public Long getVe_uu() {
+        return ve_uu;
+    }
+
+    public void setVe_uu(Long ve_uu) {
+        this.ve_uu = ve_uu;
+    }
+
+    /**
+     * 转为平台的产品
+     *
+     * @return
+     */
+    public VendorPerformanceAssess convert(Long enUU) {
+        VendorPerformanceAssess vpa = new VendorPerformanceAssess();
+        vpa.setEnUU(enUU);
+        vpa.setVpaVeuu(this.ve_uu);
+
+        vpa.setVpaCode(this.vpa_code);
+        vpa.setVpaId(this.vpa_id);
+        vpa.setVpaStatus(this.vpa_status);
+        vpa.setVpaRecordman(this.vpa_recordman);
+        vpa.setVpaRecorddate(this.vpa_recorddate);
+        vpa.setVpaStatuscode(this.vpa_statuscode);
+        vpa.setVpaApplyman(this.vpa_applyman);
+        vpa.setVpaApplydep(this.vpa_applydep);
+        vpa.setVpaApplydate(this.vpa_applydate);
+        vpa.setVpaAssessdate(this.vpa_assessdate);
+
+        vpa.setVpaPurchasecode(this.vpa_purchasecode);
+        vpa.setVpaSqe(this.vpa_sqe);
+        vpa.setVpaOrderteam(this.vpa_orderteam);
+        vpa.setVpaVendorcode(this.vpa_vendorcode);
+        vpa.setVpaVendorname(this.vpa_vendorname);
+        vpa.setVpaProdkind(this.vpa_prodkind);
+        vpa.setVpaLlpbhgl(this.vpa_llpbhgl);
+        vpa.setVpaSxbll(this.vpa_sxbll);
+        vpa.setVpaKhsxcs(this.vpa_khsxcs);
+        vpa.setVpaCxzdyc(this.vpa_cxzdyc);
+
+        vpa.setVpa8dhfjsl(this.vpa_8dhfjsl);
+        vpa.setVpaYcffl(this.vpa_ycffl);
+        vpa.setVpaGfphd(this.vpa_gfphd);
+        vpa.setVpaZlzhdf(this.vpa_zlzhdf);
+        vpa.setVpaZlqzdf(this.vpa_zlqzdf);
+        vpa.setVpaJszc(this.vpa_jszc);
+        vpa.setVpaJsbz(this.vpa_jsbz);
+        vpa.setVpaJsfx(this.vpa_jsfx);
+        vpa.setVpaJszlwzqk(this.vpa_jszlwzqk);
+        vpa.setVpaYphgl(this.vpa_yphgl);
+
+        vpa.setVpaGcsl(this.vpa_gcsl);
+        vpa.setVpaKkxyq(this.vpa_kkxyq);
+        vpa.setVpaWlsffsjszlwt(this.vpa_wlsffsjszlwt);
+        vpa.setVpaJszhdf(this.vpa_jszhdf);
+        vpa.setVpaJsqzdf(this.vpa_jsqzdf);
+        vpa.setVpaCbjj(this.vpa_cbjj);
+        vpa.setVpaZftj(this.vpa_zftj);
+        vpa.setVpaDyzc(this.vpa_dyzc);
+        vpa.setVpaFwzc(this.vpa_fwzc);
+        vpa.setVpaCgkfzhdf(this.vpa_cgkfzhdf);
+
+        vpa.setVpaWljf(this.vpa_wljf);
+        vpa.setVpaDjhcs(this.vpa_djhcs);
+        vpa.setVpaNgpcl(this.vpa_ngpcl);
+        vpa.setVpaFwxl(this.vpa_fwxl);
+        vpa.setVpaCgzhdf(this.vpa_cgzhdf);
+        vpa.setVpaCgjcgkfqzdf(this.vpa_cgjcgkfqzdf);
+        vpa.setVpaZjdf(this.vpa_zjdf);
+        vpa.setVpaGysqrdf(this.vpa_gysqrdf);
+        vpa.setVpaBrkyy(this.vpa_brkyy);
+        vpa.setVpaZlpffj(this.vpa_zlpffj);
+
+        vpa.setVpaJspffj(this.vpa_jspffj);
+        vpa.setVpaCgpffj(this.vpa_cgpffj);
+        vpa.setVpaAuditdate(this.vpa_auditdate);
+        vpa.setVpaAuditor(this.vpa_auditor);
+        vpa.setVpaJbxxfj(this.vpa_jbxxfj);
+        vpa.setVpaPurchasename(this.vpa_purchasename);
+        vpa.setVpaSqename(this.vpa_sqename);
+        vpa.setVpaOrdername(this.vpa_ordername);
+
+        return vpa;
+    }
+
+}

+ 18 - 0
src/main/java/com/uas/platform/b2b/erp/service/VendorPerformanceAssessErpService.java

@@ -0,0 +1,18 @@
+package com.uas.platform.b2b.erp.service;
+
+import com.uas.platform.b2b.erp.model.VendorPerformanceAssessErp;
+import com.uas.platform.b2b.model.VendorPerformanceAssess;
+
+import java.util.List;
+
+public interface VendorPerformanceAssessErpService {
+	
+	/**
+	 * 将ERP系统的供应商绩效考核,转为平台的供应商绩效考核
+	 * 
+	 * @param vpas
+	 * @return
+	 */
+	List<VendorPerformanceAssess> convertVPA(List<VendorPerformanceAssessErp> vpas);
+	
+}

+ 32 - 0
src/main/java/com/uas/platform/b2b/erp/service/VendorService.java

@@ -0,0 +1,32 @@
+package com.uas.platform.b2b.erp.service;
+
+import com.uas.platform.b2b.erp.model.InquiryVendorInfo;
+
+import java.util.List;
+
+/**
+ * Created by hejq on 2017-09-29.
+ */
+public interface VendorService {
+
+    /**
+     * 保存erp邀请记录
+     *
+     * @param infos
+     */
+    void saveInvitation(List<InquiryVendorInfo> infos);
+
+    /**
+     * 获取注册平台后的供应商的信息
+     *
+     * @return
+     */
+    List<InquiryVendorInfo> getInfo();
+
+    /**
+     * 更新平台供应商UU下载状态
+     *
+     * @param ids
+     */
+    void updateStatus(String ids);
+}

+ 46 - 0
src/main/java/com/uas/platform/b2b/erp/service/impl/VendorPerformanceAssessErpServiceImpl.java

@@ -0,0 +1,46 @@
+package com.uas.platform.b2b.erp.service.impl;
+
+import com.uas.platform.b2b.dao.VendorPerformanceAssessDao;
+import com.uas.platform.b2b.erp.model.VendorPerformanceAssessErp;
+import com.uas.platform.b2b.erp.service.VendorPerformanceAssessErpService;
+import com.uas.platform.b2b.model.VendorPerformanceAssess;
+import com.uas.platform.b2b.support.SystemSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by 黄诚天 on 2017-10-12.
+ */
+@Service
+public class VendorPerformanceAssessErpServiceImpl implements VendorPerformanceAssessErpService {
+
+    @Autowired
+    private VendorPerformanceAssessDao vpaDao;
+
+    @Override
+    public List<VendorPerformanceAssess> convertVPA(List<VendorPerformanceAssessErp> vpaErps) {
+        List<VendorPerformanceAssess> vaps = new ArrayList<VendorPerformanceAssess>();
+        long enUU = SystemSession.getUser().getEnterprise().getUu();
+        for (VendorPerformanceAssessErp vpaErp : vpaErps) {
+            VendorPerformanceAssess vpaResult = null;
+            List<VendorPerformanceAssess> list = vpaDao.findByEnUUAndVapId(enUU,vpaErp.getVpa_id());
+            if (!CollectionUtils.isEmpty(list)) {
+                vpaResult = list.get(0);
+            }
+
+            if (vpaResult == null) {// 平台上不存在的新上传上来的物料,新增
+                vaps.add(vpaErp.convert(enUU));
+            } else {// 平台上已经存在的物料,修改
+                //TODO 不需要?
+                VendorPerformanceAssess vpa = vpaErp.convert(enUU);
+                vpa.setVpaId(vpaResult.getVpaId());
+                vaps.add(vpa);
+            }
+        }
+        return vaps;
+    }
+}

+ 188 - 0
src/main/java/com/uas/platform/b2b/erp/service/impl/VendorServiceImpl.java

@@ -0,0 +1,188 @@
+package com.uas.platform.b2b.erp.service.impl;
+
+import com.alibaba.dubbo.common.utils.CollectionUtils;
+import com.uas.account.util.AccountUtils;
+import com.uas.message.mail.service.MailService;
+import com.uas.platform.b2b.dao.CommonDao;
+import com.uas.platform.b2b.dao.InvitationRecordDao;
+import com.uas.platform.b2b.dao.VendorDao;
+import com.uas.platform.b2b.erp.model.ErpInviteRecord;
+import com.uas.platform.b2b.erp.model.InquiryVendorInfo;
+import com.uas.platform.b2b.erp.service.VendorService;
+import com.uas.platform.b2b.model.InvitationRecord;
+import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.support.MessageConf;
+import com.uas.platform.b2b.support.SysConf;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.temporary.model.SmsMessage;
+import com.uas.platform.core.model.Status;
+import com.uas.platform.core.util.HttpUtil;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * Created by hejq on 2017-09-29.
+ */
+@Service
+public class VendorServiceImpl implements VendorService{
+
+    @Autowired
+    private InvitationRecordDao invitationRecordDao;
+
+    @Autowired
+    private MailService mailService;
+
+    @Autowired
+    private MessageConf messageConf;
+
+    @Autowired
+    private VendorDao vendorDao;
+
+    @Autowired
+    private SysConf sysConf;
+
+    @Autowired
+    private CommonDao commonDao;
+
+    /**
+     * 短信接口
+     */
+    final String messageUrl = "http://message.ubtob.com/sms/send";
+
+    /**
+     * 日期格式
+     */
+    final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    @Override
+    public void saveInvitation(List<InquiryVendorInfo> infos) {
+        if(!CollectionUtils.isEmpty(infos)) {
+            for(InquiryVendorInfo info :infos) {
+                boolean tplstatus = false;
+                boolean msgstatus = false;
+                InvitationRecord record = invitationRecordDao.findByEnuuAndVendname(SystemSession.getUser().getEnterprise().getUu(), info.getVe_name());
+                if(null == record || Status.NOT_UPLOAD.value() == record.getStatus()) {
+                    record = info.covert();
+                    //发送邮件前先进行判断,每天每个供应商只发送一封邮件
+                    List<ErpInviteRecord> inviteRecords = getRecord(record.getVendname());
+                    if(inviteRecords.size() == 0) {
+                        // 发送邮件或短信成功才进行保存
+                        if(record.getVenduseremail() != null) {
+                            Map<String, Object> model = new HashMap<String, Object>();
+                            // 邮件信息
+                            if (null != record.getVendusername()) {
+                                model.put("vendorusername", record.getVendusername().trim());
+                            }
+                            model.put("vendorname", record.getVendname().trim());
+                            model.put("custname", info.getEn_adminname() + "(" + info.getEn_name() + ")");
+                            // 注册地址链接,为了测试正式分开,从系统配置中取
+                            String url = sysConf.getRegisterUrl() + "?inviteuid=" + record.getBussinesscode()
+                                    + "&inviteUserCode=" + SystemSession.getUser().getUserUU() + "&method=addVendor";
+                            model.put("registerUrl", url);
+                            try {
+                                mailService.send(messageConf.getTplInvitationForERP(), record.getVenduseremail(), model);
+                                record.setStatus(Status.DOWNLOADED.value());
+                                tplstatus = true;
+                            } catch (Exception e) {
+                                record.setStatus(Status.NOT_UPLOAD.value());
+                                e.printStackTrace();
+                            }
+                        }
+                        if(record.getVendusertel() != null) {
+                            try {
+                                SmsMessage sms = new SmsMessage();
+                                List<Object> obj = new ArrayList<Object>();
+                                obj.add(record.getVendusername());
+                                obj.add(record.getVendname());
+                                obj.add(info.getEn_adminname() + "(" + info.getEn_name()  + ")");
+                                sms.setParams(obj);
+                                sms.setReceiver(record.getVendusertel());
+                                sms.setTemplateId(messageConf.getMsgInvitationForERP());
+                                HttpUtil.sendPost(messageUrl, FlexJsonUtils.toJsonDeep(sms));
+                                record.setStatus(Status.DOWNLOADED.value());
+                                msgstatus = true;
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                        }
+                        if(tplstatus || msgstatus) {
+                            invitationRecordDao.save(record);
+                            //记录状态
+                            addNewRecord(record.getVendusertel(), record.getVenduseremail(), sdf.format(new Date()), record.getVendname());
+                        }
+                        // 同步一个数据到账户中心(不是必须,不判断状态)
+                        if(record.getId() == null) {// 新增时候才进行同步
+                            try {
+                                record.setUser(null);
+                                record.setId(null);
+                                record.setSamecount(null);
+                                record.setVenduu(null);
+                                record.setBussinesscode(SystemSession.getUser().getEnterprise().getEnBussinessCode());
+                                AccountUtils.synchroInvitation(FlexJsonUtils.toJsonDeep(record));
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 查询邀请是否已经发送
+     *
+     * @param venduseremail
+     * @param vendusertel
+     * @return
+     */
+    private List<ErpInviteRecord> getRecord(String name) {
+        String sql = "select * from invitation_tplrecord where ve_name = '" + name +"'";
+        List<ErpInviteRecord> records = commonDao.query(sql, ErpInviteRecord.class);
+        return records;
+    }
+
+    /**
+     * 记录一个邮件发送状况,防止重复发送
+     *
+     * @param vendusertel
+     * @param venduseremail
+     * @param format
+     */
+    private void addNewRecord(String vendusertel, String venduseremail, String date, String name) {
+        String sql = "insert into invitation_tplrecord values('" + venduseremail + "','" + vendusertel + "','success','" + date + "','" + name +"')";
+        commonDao.getJdbcTemplate().update(sql);
+    }
+
+    @Override
+    public List<InquiryVendorInfo> getInfo() {
+        List<Vendor> vendors = vendorDao.findByMyEnUUAndErpstatus(SystemSession.getUser().getEnterprise().getUu(), Status.NOT_UPLOAD.value());
+        List<InquiryVendorInfo> infos = new ArrayList<InquiryVendorInfo>();
+        if(!CollectionUtils.isEmpty(vendors)) {
+            for(Vendor vendor : vendors) {
+                InquiryVendorInfo info = vendor.covert();
+                infos.add(info);
+            }
+        }
+        return infos;
+    }
+
+    @Override
+    public void updateStatus(String ids) {
+       updateDownStatus(ids);
+    }
+
+    /**
+     * 更新平台供应商UU的下载状态
+     *
+     * @param ids
+     */
+    private void updateDownStatus(String ids) {
+        String sql = "update purc$vendors set ve_erpstatus = 203 where ve_id in (" + ids +")";
+        commonDao.getJdbcTemplate().update(sql);
+    }
+}

+ 44 - 0
src/main/java/com/uas/platform/b2b/model/InvitationRecord.java

@@ -114,6 +114,26 @@ public class InvitationRecord implements Serializable {
 	@Column(name = "in_venduu")
 	private Long venduu;
 
+	/**
+	 * 邀请来源
+	 */
+	@Column(name = "in_source")
+	private String source;
+
+	/**
+	 * 邀请状态
+	 */
+	@Column(name = "in_status")
+	private Integer status;
+
+	/**
+	 * erp数据传入时间
+	 *
+	 * @return
+	 */
+	@Column(name = "in_erpdate")
+	private Date erpdate;
+
 	public Long getId() {
 		return id;
 	}
@@ -225,4 +245,28 @@ public class InvitationRecord implements Serializable {
 	public void setUser(User user) {
 		this.user = user;
 	}
+
+	public String getSource() {
+		return source;
+	}
+
+	public void setSource(String source) {
+		this.source = source;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public Date getErpdate() {
+		return erpdate;
+	}
+
+	public void setErpdate(Date erpdate) {
+		this.erpdate = erpdate;
+	}
 }

+ 20 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderAllItem.java

@@ -19,6 +19,8 @@ import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 
+import com.uas.platform.b2b.core.util.StringUtil;
+import org.apache.axis.utils.StringUtils;
 import org.codehaus.jackson.annotate.JsonIgnore;
 
 import com.alibaba.fastjson.annotation.JSONField;
@@ -178,9 +180,18 @@ public class PurchaseOrderAllItem {
 	@Transient
 	private Boolean key;
 
+	/**
+	 * erp传入时间
+	 */
 	@Column(name = "pd_erpdate")
 	private Date erpDate;
 
+	/**
+	 * 物料路径来源
+	 */
+	@Column(name = "pd_prodsource")
+	private String prodsource;
+
 	public Long getId() {
 		return id;
 	}
@@ -375,6 +386,15 @@ public class PurchaseOrderAllItem {
 		this.erpDate = erpDate;
 	}
 
+	public String getProdsource() {
+		// 默认是供应商的物料
+		return StringUtils.isEmpty(prodsource) ? "seller" : prodsource;
+	}
+
+	public void setProdsource(String prodsource) {
+		this.prodsource = prodsource;
+	}
+
 	public double getBalance() {
 		double qtyNum, returnQtyNum, acceptQtyNum;
 		qtyNum = qty == null ? 0 : qty;

+ 30 - 6
src/main/java/com/uas/platform/b2b/model/Vendor.java

@@ -15,6 +15,7 @@ import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 
+import com.uas.platform.b2b.erp.model.InquiryVendorInfo;
 import org.codehaus.jackson.annotate.JsonIgnore;
 import org.hibernate.annotations.Cache;
 import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -51,10 +52,10 @@ public class Vendor implements Serializable {
 	private Integer status;
 
 	/**
-	 * 我的企业UU
-	 */
-	@Column(name = "ve_myenuu")
-	private Long myEnUU;
+     * 我的企业UU
+     */
+    @Column(name = "ve_myenuu")
+    private Long myEnUU;
 	
 	/**
 	 * 我的企业
@@ -154,6 +155,15 @@ public class Vendor implements Serializable {
 	@Column(name = "ve_synchstatus")
 	private Short synchStatus;
 
+	/**
+	 * 同步到erp的状态
+	 * <pre>
+	 *     主要是针对erp邀请注册后自动添加供应商,并且同步erp的供应商uu
+	 * </pre>
+	 */
+	@Column(name = "ve_erpstatus")
+	private Integer erpstatus;
+
 	public Long getId() {
 		return id;
 	}
@@ -282,8 +292,6 @@ public class Vendor implements Serializable {
 		this.servicerswitch = servicerswitch;
 	}
 
-
-
 	public Short getCustswitch() {
 		return custswitch;
 	}
@@ -313,4 +321,20 @@ public class Vendor implements Serializable {
 		return this.vendorEnterprise.getEnName();
 	}
 
+	public Integer getErpstatus() {
+		return erpstatus;
+	}
+
+	public void setErpstatus(Integer erpstatus) {
+		this.erpstatus = erpstatus;
+	}
+
+
+	public InquiryVendorInfo covert() {
+		InquiryVendorInfo info = new InquiryVendorInfo();
+		info.setB2b_id(this.id);
+		info.setVe_uu(String.valueOf(this.vendEnUU));
+		info.setVe_webserver(this.vendorEnterprise.getEnBussinessCode());
+		return info;
+	}
 }

+ 713 - 0
src/main/java/com/uas/platform/b2b/model/VendorPerformanceAssess.java

@@ -0,0 +1,713 @@
+package com.uas.platform.b2b.model;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 供应商绩效考核
+ *
+ * @author huangct
+ */
+
+@Entity
+@Table(name = "vendorperformanceassess")
+public class VendorPerformanceAssess implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "vendorperformanceassess_gen")
+    @SequenceGenerator(name = "vendorperformanceassess_gen", sequenceName = "vendorperformanceassess_seq", allocationSize = 1)
+    @Column(name = "id")
+    private Long id;
+
+    /**
+     * 采购员号
+     */
+    @Column(name = "enuu")
+    private Long enUU;
+
+    /**
+     * 采购员企业消信息
+     */
+    @OneToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH })
+    @JoinColumn(name = "enuu", insertable = false, updatable = false)
+    private EnterpriseInfo enterprise;
+
+    @Column(name = "vpa_id")
+    private Long vpaId;
+
+    @Column(name = "vpa_code")
+    private String vpaCode;
+
+    @Column(name = "vpa_status")
+    private String vpaStatus;
+
+    @Column(name = "vpa_recordman")
+    private String vpaRecordman;
+
+    @Column(name = "vpa_recorddate")
+    private Date vpaRecorddate;
+
+    @Column(name = "vpa_statuscode")
+    private String vpaStatuscode;
+
+    @Column(name = "vpa_applyman")
+    private String vpaApplyman;
+
+    @Column(name = "vpa_applydep")
+    private String vpaApplydep;
+
+    @Column(name = "vpa_applydate")
+    private Date vpaApplydate;
+
+    @Column(name = "vpa_assessdate")
+    private String vpaAssessdate;
+
+    @Column(name = "vpa_purchasecode")
+    private String vpaPurchasecode;
+
+    @Column(name = "vpa_sqe")
+    private String vpaSqe;
+
+    @Column(name = "vpa_orderteam")
+    private String vpaOrderteam;
+
+    @Column(name = "vpa_vendorcode")
+    private String vpaVendorcode;
+
+    @Column(name = "vpa_vendorname")
+    private String vpaVendorname;
+
+    @Column(name = "vpa_prodkind")
+    private String vpaProdkind;
+
+    @Column(name = "vpa_llpbhgl")
+    private Double vpaLlpbhgl;
+
+    @Column(name = "vpa_sxbll")
+    private Double vpaSxbll;
+
+    @Column(name = "vpa_khsxcs")
+    private Double vpaKhsxcs;
+
+    @Column(name = "vpa_cxzdyc")
+    private Double vpaCxzdyc;
+
+    @Column(name = "vpa_8dhfjsl")
+    private Double vpa8dhfjsl;
+
+    @Column(name = "vpa_ycffl")
+    private Double vpaYcffl;
+
+    @Column(name = "vpa_gfphd")
+    private Double vpaGfphd;
+
+    @Column(name = "vpa_zlzhdf")
+    private Double vpaZlzhdf;
+
+    @Column(name = "vpa_zlqzdf")
+    private Double vpaZlqzdf;
+
+    @Column(name = "vpa_jszc")
+    private Double vpaJszc;
+
+    @Column(name = "vpa_jsbz")
+    private Double vpaJsbz;
+
+    @Column(name = "vpa_jsfx")
+    private Double vpaJsfx;
+
+    @Column(name = "vpa_jszlwzqk")
+    private Double vpaJszlwzqk;
+
+    @Column(name = "vpa_yphgl")
+    private Double vpaYphgl;
+
+    @Column(name = "vpa_gcsl")
+    private Double vpaGcsl;
+
+    @Column(name = "vpa_kkxyq")
+    private Double vpaKkxyq;
+
+    @Column(name = "vpa_wlsffsjszlwt")
+    private Double vpaWlsffsjszlwt;
+
+    @Column(name = "vpa_jszhdf")
+    private Double vpaJszhdf;
+
+    @Column(name = "vpa_jsqzdf")
+    private Double vpaJsqzdf;
+
+    @Column(name = "vpa_cbjj")
+    private Double vpaCbjj;
+
+    @Column(name = "vpa_zftj")
+    private Double vpaZftj;
+
+    @Column(name = "vpa_dyzc")
+    private Double vpaDyzc;
+
+    @Column(name = "vpa_fwzc")
+    private Double vpaFwzc;
+
+    @Column(name = "vpa_cgkfzhdf")
+    private Double vpaCgkfzhdf;
+
+    @Column(name = "vpa_wljf")
+    private Double vpaWljf;
+
+    @Column(name = "vpa_djhcs")
+    private Double vpaDjhcs;
+
+    @Column(name = "vpa_ngpcl")
+    private Double vpaNgpcl;
+
+    @Column(name = "vpa_fwxl")
+    private Double vpaFwxl;
+
+    @Column(name = "vpa_cgzhdf")
+    private Double vpaCgzhdf;
+
+    @Column(name = "vpa_cgjcgkfqzdf")
+    private Double vpaCgjcgkfqzdf;
+
+    @Column(name = "vpa_zjdf")
+    private Double vpaZjdf;
+
+    @Column(name = "vpa_gysqrdf")
+    private String vpaGysqrdf;
+
+    @Column(name = "vpa_brkyy")
+    private String vpaBrkyy;
+
+    @Column(name = "vpa_zlpffj")
+    private String vpaZlpffj;
+
+    @Column(name = "vpa_jspffj")
+    private String vpaJspffj;
+
+    @Column(name = "vpa_cgpffj")
+    private String vpaCgpffj;
+
+    @Column(name = "vpa_auditdate")
+    private Date vpaAuditdate;
+
+    @Column(name = "vpa_auditor")
+    private String vpaAuditor;
+
+    @Column(name = "vpa_jbxxfj")
+    private String vpaJbxxfj;
+
+    @Column(name = "vpa_purchasename")
+    private String vpaPurchasename;
+
+    @Column(name = "vpa_sqename")
+    private String vpaSqename;
+
+    @Column(name = "vpa_ordername")
+    private String vpaOrdername;
+
+    /**
+     * 供应商号
+     */
+    @Column(name = "vpa_veuu")
+    private Long vpaVeuu;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getEnUU() {
+        return enUU;
+    }
+
+    public void setEnUU(Long enUU) {
+        this.enUU = enUU;
+    }
+
+    public EnterpriseInfo getEnterprise() {
+        return enterprise;
+    }
+
+    public void setEnterprise(EnterpriseInfo enterprise) {
+        this.enterprise = enterprise;
+    }
+
+    public Long getVpaId() {
+        return vpaId;
+    }
+
+    public void setVpaId(Long vpaId) {
+        this.vpaId = vpaId;
+    }
+
+    public String getVpaCode() {
+        return vpaCode;
+    }
+
+    public void setVpaCode(String vpaCode) {
+        this.vpaCode = vpaCode;
+    }
+
+    public String getVpaStatus() {
+        return vpaStatus;
+    }
+
+    public void setVpaStatus(String vpaStatus) {
+        this.vpaStatus = vpaStatus;
+    }
+
+    public String getVpaRecordman() {
+        return vpaRecordman;
+    }
+
+    public void setVpaRecordman(String vpaRecordman) {
+        this.vpaRecordman = vpaRecordman;
+    }
+
+    public Date getVpaRecorddate() {
+        return vpaRecorddate;
+    }
+
+    public void setVpaRecorddate(Date vpaRecorddate) {
+        this.vpaRecorddate = vpaRecorddate;
+    }
+
+    public String getVpaStatuscode() {
+        return vpaStatuscode;
+    }
+
+    public void setVpaStatuscode(String vpaStatuscode) {
+        this.vpaStatuscode = vpaStatuscode;
+    }
+
+    public String getVpaApplyman() {
+        return vpaApplyman;
+    }
+
+    public void setVpaApplyman(String vpaApplyman) {
+        this.vpaApplyman = vpaApplyman;
+    }
+
+    public String getVpaApplydep() {
+        return vpaApplydep;
+    }
+
+    public void setVpaApplydep(String vpaApplydep) {
+        this.vpaApplydep = vpaApplydep;
+    }
+
+    public Date getVpaApplydate() {
+        return vpaApplydate;
+    }
+
+    public void setVpaApplydate(Date vpaApplydate) {
+        this.vpaApplydate = vpaApplydate;
+    }
+
+    public String getVpaAssessdate() {
+        return vpaAssessdate;
+    }
+
+    public void setVpaAssessdate(String vpaAssessdate) {
+        this.vpaAssessdate = vpaAssessdate;
+    }
+
+    public String getVpaPurchasecode() {
+        return vpaPurchasecode;
+    }
+
+    public void setVpaPurchasecode(String vpaPurchasecode) {
+        this.vpaPurchasecode = vpaPurchasecode;
+    }
+
+    public String getVpaSqe() {
+        return vpaSqe;
+    }
+
+    public void setVpaSqe(String vpaSqe) {
+        this.vpaSqe = vpaSqe;
+    }
+
+    public String getVpaOrderteam() {
+        return vpaOrderteam;
+    }
+
+    public void setVpaOrderteam(String vpaOrderteam) {
+        this.vpaOrderteam = vpaOrderteam;
+    }
+
+    public String getVpaVendorcode() {
+        return vpaVendorcode;
+    }
+
+    public void setVpaVendorcode(String vpaVendorcode) {
+        this.vpaVendorcode = vpaVendorcode;
+    }
+
+    public String getVpaVendorname() {
+        return vpaVendorname;
+    }
+
+    public void setVpaVendorname(String vpaVendorname) {
+        this.vpaVendorname = vpaVendorname;
+    }
+
+    public String getVpaProdkind() {
+        return vpaProdkind;
+    }
+
+    public void setVpaProdkind(String vpaProdkind) {
+        this.vpaProdkind = vpaProdkind;
+    }
+
+    public Double getVpaLlpbhgl() {
+        return vpaLlpbhgl;
+    }
+
+    public void setVpaLlpbhgl(Double vpaLlpbhgl) {
+        this.vpaLlpbhgl = vpaLlpbhgl;
+    }
+
+    public Double getVpaSxbll() {
+        return vpaSxbll;
+    }
+
+    public void setVpaSxbll(Double vpaSxbll) {
+        this.vpaSxbll = vpaSxbll;
+    }
+
+    public Double getVpaKhsxcs() {
+        return vpaKhsxcs;
+    }
+
+    public void setVpaKhsxcs(Double vpaKhsxcs) {
+        this.vpaKhsxcs = vpaKhsxcs;
+    }
+
+    public Double getVpaCxzdyc() {
+        return vpaCxzdyc;
+    }
+
+    public void setVpaCxzdyc(Double vpaCxzdyc) {
+        this.vpaCxzdyc = vpaCxzdyc;
+    }
+
+    public Double getVpa8dhfjsl() {
+        return vpa8dhfjsl;
+    }
+
+    public void setVpa8dhfjsl(Double vpa8dhfjsl) {
+        this.vpa8dhfjsl = vpa8dhfjsl;
+    }
+
+    public Double getVpaYcffl() {
+        return vpaYcffl;
+    }
+
+    public void setVpaYcffl(Double vpaYcffl) {
+        this.vpaYcffl = vpaYcffl;
+    }
+
+    public Double getVpaGfphd() {
+        return vpaGfphd;
+    }
+
+    public void setVpaGfphd(Double vpaGfphd) {
+        this.vpaGfphd = vpaGfphd;
+    }
+
+    public Double getVpaZlzhdf() {
+        return vpaZlzhdf;
+    }
+
+    public void setVpaZlzhdf(Double vpaZlzhdf) {
+        this.vpaZlzhdf = vpaZlzhdf;
+    }
+
+    public Double getVpaZlqzdf() {
+        return vpaZlqzdf;
+    }
+
+    public void setVpaZlqzdf(Double vpaZlqzdf) {
+        this.vpaZlqzdf = vpaZlqzdf;
+    }
+
+    public Double getVpaJszc() {
+        return vpaJszc;
+    }
+
+    public void setVpaJszc(Double vpaJszc) {
+        this.vpaJszc = vpaJszc;
+    }
+
+    public Double getVpaJsbz() {
+        return vpaJsbz;
+    }
+
+    public void setVpaJsbz(Double vpaJsbz) {
+        this.vpaJsbz = vpaJsbz;
+    }
+
+    public Double getVpaJsfx() {
+        return vpaJsfx;
+    }
+
+    public void setVpaJsfx(Double vpaJsfx) {
+        this.vpaJsfx = vpaJsfx;
+    }
+
+    public Double getVpaJszlwzqk() {
+        return vpaJszlwzqk;
+    }
+
+    public void setVpaJszlwzqk(Double vpaJszlwzqk) {
+        this.vpaJszlwzqk = vpaJszlwzqk;
+    }
+
+    public Double getVpaYphgl() {
+        return vpaYphgl;
+    }
+
+    public void setVpaYphgl(Double vpaYphgl) {
+        this.vpaYphgl = vpaYphgl;
+    }
+
+    public Double getVpaGcsl() {
+        return vpaGcsl;
+    }
+
+    public void setVpaGcsl(Double vpaGcsl) {
+        this.vpaGcsl = vpaGcsl;
+    }
+
+    public Double getVpaKkxyq() {
+        return vpaKkxyq;
+    }
+
+    public void setVpaKkxyq(Double vpaKkxyq) {
+        this.vpaKkxyq = vpaKkxyq;
+    }
+
+    public Double getVpaWlsffsjszlwt() {
+        return vpaWlsffsjszlwt;
+    }
+
+    public void setVpaWlsffsjszlwt(Double vpaWlsffsjszlwt) {
+        this.vpaWlsffsjszlwt = vpaWlsffsjszlwt;
+    }
+
+    public Double getVpaJszhdf() {
+        return vpaJszhdf;
+    }
+
+    public void setVpaJszhdf(Double vpaJszhdf) {
+        this.vpaJszhdf = vpaJszhdf;
+    }
+
+    public Double getVpaJsqzdf() {
+        return vpaJsqzdf;
+    }
+
+    public void setVpaJsqzdf(Double vpaJsqzdf) {
+        this.vpaJsqzdf = vpaJsqzdf;
+    }
+
+    public Double getVpaCbjj() {
+        return vpaCbjj;
+    }
+
+    public void setVpaCbjj(Double vpaCbjj) {
+        this.vpaCbjj = vpaCbjj;
+    }
+
+    public Double getVpaZftj() {
+        return vpaZftj;
+    }
+
+    public void setVpaZftj(Double vpaZftj) {
+        this.vpaZftj = vpaZftj;
+    }
+
+    public Double getVpaDyzc() {
+        return vpaDyzc;
+    }
+
+    public void setVpaDyzc(Double vpaDyzc) {
+        this.vpaDyzc = vpaDyzc;
+    }
+
+    public Double getVpaFwzc() {
+        return vpaFwzc;
+    }
+
+    public void setVpaFwzc(Double vpaFwzc) {
+        this.vpaFwzc = vpaFwzc;
+    }
+
+    public Double getVpaCgkfzhdf() {
+        return vpaCgkfzhdf;
+    }
+
+    public void setVpaCgkfzhdf(Double vpaCgkfzhdf) {
+        this.vpaCgkfzhdf = vpaCgkfzhdf;
+    }
+
+    public Double getVpaWljf() {
+        return vpaWljf;
+    }
+
+    public void setVpaWljf(Double vpaWljf) {
+        this.vpaWljf = vpaWljf;
+    }
+
+    public Double getVpaDjhcs() {
+        return vpaDjhcs;
+    }
+
+    public void setVpaDjhcs(Double vpaDjhcs) {
+        this.vpaDjhcs = vpaDjhcs;
+    }
+
+    public Double getVpaNgpcl() {
+        return vpaNgpcl;
+    }
+
+    public void setVpaNgpcl(Double vpaNgpcl) {
+        this.vpaNgpcl = vpaNgpcl;
+    }
+
+    public Double getVpaFwxl() {
+        return vpaFwxl;
+    }
+
+    public void setVpaFwxl(Double vpaFwxl) {
+        this.vpaFwxl = vpaFwxl;
+    }
+
+    public Double getVpaCgzhdf() {
+        return vpaCgzhdf;
+    }
+
+    public void setVpaCgzhdf(Double vpaCgzhdf) {
+        this.vpaCgzhdf = vpaCgzhdf;
+    }
+
+    public Double getVpaCgjcgkfqzdf() {
+        return vpaCgjcgkfqzdf;
+    }
+
+    public void setVpaCgjcgkfqzdf(Double vpaCgjcgkfqzdf) {
+        this.vpaCgjcgkfqzdf = vpaCgjcgkfqzdf;
+    }
+
+    public Double getVpaZjdf() {
+        return vpaZjdf;
+    }
+
+    public void setVpaZjdf(Double vpaZjdf) {
+        this.vpaZjdf = vpaZjdf;
+    }
+
+    public String getVpaGysqrdf() {
+        return vpaGysqrdf;
+    }
+
+    public void setVpaGysqrdf(String vpaGysqrdf) {
+        this.vpaGysqrdf = vpaGysqrdf;
+    }
+
+    public String getVpaBrkyy() {
+        return vpaBrkyy;
+    }
+
+    public void setVpaBrkyy(String vpaBrkyy) {
+        this.vpaBrkyy = vpaBrkyy;
+    }
+
+    public String getVpaZlpffj() {
+        return vpaZlpffj;
+    }
+
+    public void setVpaZlpffj(String vpaZlpffj) {
+        this.vpaZlpffj = vpaZlpffj;
+    }
+
+    public String getVpaJspffj() {
+        return vpaJspffj;
+    }
+
+    public void setVpaJspffj(String vpaJspffj) {
+        this.vpaJspffj = vpaJspffj;
+    }
+
+    public String getVpaCgpffj() {
+        return vpaCgpffj;
+    }
+
+    public void setVpaCgpffj(String vpaCgpffj) {
+        this.vpaCgpffj = vpaCgpffj;
+    }
+
+    public Date getVpaAuditdate() {
+        return vpaAuditdate;
+    }
+
+    public void setVpaAuditdate(Date vpaAuditdate) {
+        this.vpaAuditdate = vpaAuditdate;
+    }
+
+    public String getVpaAuditor() {
+        return vpaAuditor;
+    }
+
+    public void setVpaAuditor(String vpaAuditor) {
+        this.vpaAuditor = vpaAuditor;
+    }
+
+    public String getVpaJbxxfj() {
+        return vpaJbxxfj;
+    }
+
+    public void setVpaJbxxfj(String vpaJbxxfj) {
+        this.vpaJbxxfj = vpaJbxxfj;
+    }
+
+    public String getVpaPurchasename() {
+        return vpaPurchasename;
+    }
+
+    public void setVpaPurchasename(String vpaPurchasename) {
+        this.vpaPurchasename = vpaPurchasename;
+    }
+
+    public String getVpaSqename() {
+        return vpaSqename;
+    }
+
+    public void setVpaSqename(String vpaSqename) {
+        this.vpaSqename = vpaSqename;
+    }
+
+    public String getVpaOrdername() {
+        return vpaOrdername;
+    }
+
+    public void setVpaOrdername(String vpaOrdername) {
+        this.vpaOrdername = vpaOrdername;
+    }
+
+    public Long getVpaVeuu() {
+        return vpaVeuu;
+    }
+
+    public void setVpaVeuu(Long vpaVeuu) {
+        this.vpaVeuu = vpaVeuu;
+    }
+}

+ 8 - 0
src/main/java/com/uas/platform/b2b/search/SearchService.java

@@ -512,4 +512,12 @@ public interface SearchService {
 	 * @return
 	 */
     SPage<SaleTenderQuestion> searchSaleTenderQuestion(String keyword, PageParams pageParams);
+
+	/**
+	 * 获取供应商绩效考核
+	 * @param keyword
+	 * @param pageParams
+	 * @return
+	 */
+	SPage<VendorPerformanceAssess> searchVendorPerformanceAssesss(String keyword, PageParams pageParams);
 }

+ 13 - 0
src/main/java/com/uas/platform/b2b/search/SearchServiceImpl.java

@@ -186,6 +186,9 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 	@Autowired
 	private KindService kindService;
 
+	@Autowired
+	private VendorPerformanceAssessDao vpaDao;
+
 	/**
 	 * 联想词size
 	 */
@@ -1356,4 +1359,14 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 		return null;
 	}
 
+	/**
+	 * 供应商绩效考核
+	 */
+	@Override
+	public SPage<VendorPerformanceAssess> searchVendorPerformanceAssesss(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.VENDORPERFORMANCEASSESS, pageParams);
+		List<VendorPerformanceAssess> content = vpaDao.findAll(idsPage.getContent());
+		sortByProperty(content, VendorPerformanceAssess.class, "id", idsPage.getContent());
+		return toSPage(idsPage, content);
+	}
 }

+ 11 - 4
src/main/java/com/uas/platform/b2b/service/PurchaseApBillService.java

@@ -1,13 +1,13 @@
 package com.uas.platform.b2b.service;
 
-import java.util.List;
-
-import org.springframework.data.domain.Page;
-
+import com.uas.platform.b2b.erp.model.ProdInOutRefreshPrice;
 import com.uas.platform.b2b.model.PurchaseApBill;
 import com.uas.platform.b2b.model.PurchaseApBillItem;
 import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.core.model.PageInfo;
+import org.springframework.data.domain.Page;
+
+import java.util.List;
 
 public interface PurchaseApBillService {
 
@@ -80,4 +80,11 @@ public interface PurchaseApBillService {
 	public Long getAllCount();
 
     Integer getApBillUnreadCount();
+
+	/**
+	 * erp批量更新采购验收单的单价,平台需要批量更新关联的应付发票的单价
+	 *
+	 * @param acceptItems
+	 */
+	public void refreshPrice(List<ProdInOutRefreshPrice> prodInOuts);
 }

+ 32 - 0
src/main/java/com/uas/platform/b2b/service/VendorPerformanceAssessService.java

@@ -0,0 +1,32 @@
+package com.uas.platform.b2b.service;
+
+import com.uas.platform.b2b.model.VendorPerformanceAssess;
+
+import java.util.List;
+
+public interface VendorPerformanceAssessService {
+
+	/**
+	 * 批量保存供应商绩效考核信息
+	 *
+	 * @param vpas
+	 * @return
+	 */
+	public List<VendorPerformanceAssess> save(List<VendorPerformanceAssess> vpas);
+
+
+	/**
+	 * 供应商绩效考核下载成功,更新下载状态
+	 * 
+	 * @param idArray
+	 */
+	public void onVPADownSuccess(String[] idArray);
+
+	public VendorPerformanceAssess findById(Long id);
+
+	List<Object[]> getVpaCount(String category);
+
+	public List<Long> getUnreadIds(String category);
+
+    void setReadByIds(String sale, Long[] sourceIds);
+}

+ 2 - 0
src/main/java/com/uas/platform/b2b/service/impl/BaseInfoServiceImpl.java

@@ -621,6 +621,7 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 					orderDetail.setNumber(i);
 					orderDetail.setPuid(order.getId());
 					orderDetail.setPrice(Double.valueOf(orderitem.getPrice()));
+					orderDetail.setProdsource(orderitem.getProdsource());
 					// 这里根据币别设置税率信息,非RMB全部设置0
 					if(!order.getCurrency().equals("RMB")) {
 						orderDetail.setTaxrate((float) 0);
@@ -635,6 +636,7 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 					orderDetail.setPuid(order.getId());
 					orderDetail.setPrice(Double.valueOf(orderitem.getPrice()));
 					orderDetail.setTaxrate(orderitem.getTaxrate());
+					orderDetail.setProdsource(orderitem.getProdsource());
 				}
 				orderDetails.add(orderDetail);
 				i++;

+ 23 - 43
src/main/java/com/uas/platform/b2b/service/impl/DeputyOrderServiceImpl.java

@@ -1,48 +1,8 @@
 package com.uas.platform.b2b.service.impl;
 
-import java.text.DecimalFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.ui.ModelMap;
-
-import com.uas.platform.b2b.dao.CommonDao;
-import com.uas.platform.b2b.dao.DeputyHisVendorsDao;
-import com.uas.platform.b2b.dao.DeputyLastOrderKeywordsDao;
-import com.uas.platform.b2b.dao.DeputyOrderDao;
-import com.uas.platform.b2b.dao.DeputyOrderItemDao;
-import com.uas.platform.b2b.dao.DeputyOrderKeywordsDao;
-import com.uas.platform.b2b.dao.DeputyOrdersLogDao;
-import com.uas.platform.b2b.dao.DeputyPaymentCompanyDao;
-import com.uas.platform.b2b.dao.PagingReleaseCountDao;
-import com.uas.platform.b2b.dao.VendorDao;
+import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.mobile.dao.DeputyEnterpriseDao;
-import com.uas.platform.b2b.model.DeputyEnterprise;
-import com.uas.platform.b2b.model.DeputyHisVendors;
-import com.uas.platform.b2b.model.DeputyLastOrderKeywords;
-import com.uas.platform.b2b.model.DeputyOrder;
-import com.uas.platform.b2b.model.DeputyOrderItem;
-import com.uas.platform.b2b.model.DeputyOrderKeywords;
-import com.uas.platform.b2b.model.DeputyOrdersLog;
-import com.uas.platform.b2b.model.DeputyPaymentCompany;
-import com.uas.platform.b2b.model.SearchFilter;
-import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.service.DeputyOrderService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
@@ -53,6 +13,26 @@ import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.search.b2b.model.SPage;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 @Service
 public class DeputyOrderServiceImpl implements DeputyOrderService {
@@ -451,7 +431,7 @@ public class DeputyOrderServiceImpl implements DeputyOrderService {
 	@Override
 	public ModelMap checkOrders(String salecode, Long deputyuu) {
 		ModelMap map = new ModelMap();
-		List<DeputyOrder> orders = deputyOrderDao.findBySalecodeAndDeputyuu(salecode, deputyuu);
+		List<DeputyOrder> orders = deputyOrderDao.findBySalecodeAndDeputyuuAndDownloadstatus(salecode, deputyuu, "已下载");
 		if (orders.size() > 0) {
 			map.put("info", "采购单号已存在");
 		}

+ 33 - 18
src/main/java/com/uas/platform/b2b/service/impl/PurchaseApBillServiceImpl.java

@@ -1,27 +1,13 @@
 package com.uas.platform.b2b.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import com.uas.platform.b2b.dao.PagingReleaseCountDao;
-import org.apache.commons.collections.CollectionUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.ui.ModelMap;
-import org.springframework.util.StringUtils;
-
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.dao.CommonDao;
+import com.uas.platform.b2b.dao.PagingReleaseCountDao;
 import com.uas.platform.b2b.dao.PurchaseApBillDao;
 import com.uas.platform.b2b.dao.PurchaseApBillItemDao;
+import com.uas.platform.b2b.erp.model.ProdInOutRefreshPrice;
 import com.uas.platform.b2b.event.PurchaseApBillSaveEvent;
+import com.uas.platform.b2b.model.PurchaseAcceptItem;
 import com.uas.platform.b2b.model.PurchaseApBill;
 import com.uas.platform.b2b.model.PurchaseApBillItem;
 import com.uas.platform.b2b.model.SearchFilter;
@@ -33,6 +19,21 @@ import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.search.b2b.model.PageParams;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 @Service
 public class PurchaseApBillServiceImpl implements PurchaseApBillService {
@@ -49,6 +50,9 @@ public class PurchaseApBillServiceImpl implements PurchaseApBillService {
 	@Autowired
 	private PagingReleaseCountDao pagingReleaseCountDao;
 
+	@Autowired
+	private CommonDao commonDao;
+
 	@Override
 	public void save(List<PurchaseApBillItem> apBillItems) {
 		List<PurchaseApBillItem> newApBillItems = purchaseApBillItemDao.save(apBillItems);
@@ -163,4 +167,15 @@ public class PurchaseApBillServiceImpl implements PurchaseApBillService {
 				SystemSession.getUser().getUserUU(), "sale", "PURC$APBILL");
 	}
 
+	@Override
+	public void refreshPrice(List<ProdInOutRefreshPrice> prodInOuts) {
+		if(!CollectionUtils.isEmpty(prodInOuts)) {
+			for(ProdInOutRefreshPrice prod : prodInOuts) {
+				String sql = " merge into purc$apbillitem i using purc$apbill a on (i.papi_papid = a.pab_id and i.papi_pdinoutno = '" + prod.getPbu_inoutno() + "' and a.pad_venduu= " +SystemSession.getUser().getEnterprise().getUu() + ")" +
+						" when matched then update set i.papi_price = " + prod.getPbu_orderprice();
+				commonDao.getJdbcTemplate().update(sql);
+			}
+		}
+	}
+
 }

+ 111 - 0
src/main/java/com/uas/platform/b2b/service/impl/VendorPerformanceAssessServiceImpl.java

@@ -0,0 +1,111 @@
+package com.uas.platform.b2b.service.impl;
+
+import com.uas.platform.b2b.core.util.ThreadTask;
+import com.uas.platform.b2b.dao.UserDao;
+import com.uas.platform.b2b.dao.UserOrderDao;
+import com.uas.platform.b2b.dao.VendorPerformanceAssessDao;
+import com.uas.platform.b2b.model.User;
+import com.uas.platform.b2b.model.UserOrders;
+import com.uas.platform.b2b.model.VendorPerformanceAssess;
+import com.uas.platform.b2b.service.VendorPerformanceAssessService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.Status;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by 黄诚天 on 2017-10-12.
+ */
+@Service
+public class VendorPerformanceAssessServiceImpl implements VendorPerformanceAssessService {
+    @Autowired
+    private VendorPerformanceAssessDao vpaDao;
+
+    @Autowired
+    private UserOrderDao userOrderDao;
+
+    @Autowired
+    private UserDao userDao;
+
+    @Override
+    public List<VendorPerformanceAssess> save(List<VendorPerformanceAssess> vpas) {
+        //事务
+        List<VendorPerformanceAssess> newVpas = vpaDao.save(vpas);
+        saveUserOrder(newVpas);
+        return newVpas;
+    }
+
+    private void saveUserOrder(final List<VendorPerformanceAssess> newVpas) {
+        ThreadTask.getInstance().execute(new Runnable() {
+            @Override
+            public void run() {
+                List<UserOrders> list = new ArrayList<>();
+                for (VendorPerformanceAssess vpa : newVpas) {
+                    List<User> users = userDao.findByEnUU(vpa.getVpaVeuu());
+                    UserOrders userOrders;
+                    for (User user : users) {
+                        if (user == null) {
+                            continue;
+                        }
+                        userOrders = new UserOrders(user.getUserUU(), vpa.getVpaVeuu(), vpa.getId(), "sale", "vendorperformanceassess");
+                        list.add(userOrders);
+                    }
+                }
+                userOrderDao.save(list);
+            }
+        });
+    }
+
+    @Override
+    public void onVPADownSuccess(String[] idArray) {
+        for (String id : idArray) {
+            VendorPerformanceAssess vpa = vpaDao.findOne(Long.parseLong(id));
+            if (vpa != null) {
+                //下载状态暂无
+                //vpa.setDownloadstatus(Status.DOWNLOADED.value());
+                vpaDao.save(vpa);
+            }
+        }
+    }
+
+    @Override
+    public VendorPerformanceAssess findById(Long id) {
+        return vpaDao.findOne(id);
+    }
+
+    @Override
+    public List<Object[]> getVpaCount(String category) {
+        List<Long> ids = getUnreadIds(category);
+        List<Object[]> objs = new ArrayList<>();
+        if (CollectionUtils.isEmpty(ids)){
+            return objs;
+        }
+        objs.add(new Object[]{ids.size(), "1"});
+//        return vpaDao.getUnreadCountEveryStatus(ids);
+        return objs;
+    }
+
+    @Override
+    public List<Long> getUnreadIds(String category) {
+        return userOrderDao.getUnreadIds(SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU(), "vendorperformanceassess", category);
+    }
+
+    @Override
+    @Transactional
+    public void setReadByIds(String category, Long[] sourceIds) {
+        Long[] temp = sourceIds;
+        if (sourceIds == null || sourceIds.length == 0){
+            List<Long> ids = userOrderDao.getUnreadIds(SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU(), "vendorperformanceassess", category);
+            if (CollectionUtils.isEmpty(ids)){
+                return;
+            }
+            temp = ids.toArray(new Long[ids.size()]);
+        }
+        userOrderDao.setReadStatus(SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU(), "vendorperformanceassess", category, (short) Status.READ.value(), temp);
+    }
+}

+ 248 - 0
src/main/java/com/uas/platform/b2b/support/FileUploadHttp.java

@@ -0,0 +1,248 @@
+package com.uas.platform.b2b.support;
+
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.http.Consts;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.entity.mime.content.FileBody;
+import org.apache.http.entity.mime.content.StringBody;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.util.*;
+
+/**
+ * Created by hejq on 2017-10-10.
+ */
+public class FileUploadHttp {
+    /**
+     * 发起POST、PUT请求
+     *
+     * @param request
+     * @param params
+     * @return
+     * @throws Exception
+     */
+    public static Response get(String url, Map<String, Object> params) throws Exception {
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        HttpEntityEnclosingRequestBase request = null;
+        CloseableHttpResponse response = null;
+        try {
+            StringBuilder buf = new StringBuilder(url);
+            if (params != null && !params.isEmpty()) {
+                if (url.indexOf("?") == -1)
+                    buf.append("?");
+                else if (!url.endsWith("&"))
+                    buf.append("&");
+                Set<Map.Entry<String, Object>> entrys = params.entrySet();
+                for (Map.Entry<String, Object> entry : entrys) {
+                    buf.append(entry.getKey()).append("=").append(URLEncoder.encode(String.valueOf(entry.getValue()), "UTF-8")).append("&");
+                }
+            }
+            request = new HttpPost(buf.toString());
+            response = httpClient.execute(request);
+            return Response.getResponse(response);
+        } finally {
+            request.releaseConnection();
+            try {
+                httpClient.close();
+            } catch (IOException e) {
+            }
+            if (response != null) {
+                try {
+                    response.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+    }
+
+    /**
+     * 发起POST、PUT请求
+     *
+     * @param request
+     * @param datas
+     * @return
+     * @throws Exception
+     */
+    public static Response post(String url, Collection<?> datas) throws Exception {
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        HttpEntityEnclosingRequestBase request = new HttpPost(url);
+        CloseableHttpResponse response = null;
+        try {
+            if (datas != null && !datas.isEmpty()) {
+                request.setEntity(new StringEntity(FlexJsonUtils.toJson(datas), ContentType.create("text/plain", Consts.UTF_8)));
+            }
+            response = httpClient.execute(request);
+            return Response.getResponse(response);
+        } finally {
+            request.releaseConnection();
+            try {
+                httpClient.close();
+            } catch (IOException e) {
+            }
+            if (response != null) {
+                try {
+                    response.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+    }
+
+    /**
+     * 发起POST、PUT请求
+     *
+     * @param request
+     * @param params
+     * @return
+     * @throws Exception
+     */
+    public static Response post(String url, Map<String, String> params) throws Exception {
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        HttpEntityEnclosingRequestBase request = new HttpPost(url);
+        CloseableHttpResponse response = null;
+        try {
+            List<NameValuePair> nvps = new ArrayList<NameValuePair>();
+            if (params != null && !params.isEmpty()) {
+                Set<Map.Entry<String, String>> entrys = params.entrySet();
+                for (Map.Entry<String, String> entry : entrys) {
+                    nvps.add(new BasicNameValuePair(entry.getKey(), URLEncoder.encode(entry.getValue(), "UTF-8")));
+                }
+            }
+            request.setEntity(new UrlEncodedFormEntity(nvps));
+            response = httpClient.execute(request);
+            return Response.getResponse(response);
+        } finally {
+            request.releaseConnection();
+            try {
+                httpClient.close();
+            } catch (IOException e) {
+            }
+            if (response != null) {
+                try {
+                    response.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+    }
+
+    /**
+     * http上传文件
+     *
+     * @param url
+     *            请求地址
+     * @param filePath
+     *            附件路径
+     * @param params
+     *            参数
+     * @return
+     * @throws Exception
+     * @throws IOException
+     * @throws IllegalStateException
+     */
+    public static Response upload(String url, String filePath, Map<String, String> params) throws IllegalStateException, IOException,
+            Exception {
+        CloseableHttpClient httpClient = null;
+        CloseableHttpResponse response = null;
+        try {
+            httpClient = HttpClients.createDefault();
+            HttpPost httpPost = new HttpPost(url);
+            FileBody fileBody = new FileBody(new File(filePath));
+            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+            builder.addPart("file", fileBody);
+            if (params != null) {
+                for (String paramKey : params.keySet()) {
+                    StringBody body = new StringBody(params.get(paramKey), ContentType.create("text/plain", Consts.UTF_8));
+                    builder.addPart(paramKey, body);
+                }
+            }
+            HttpEntity reqEntity = builder.build();
+            httpPost.setEntity(reqEntity);
+            response = httpClient.execute(httpPost);
+            return Response.getResponse(response);
+        } finally {
+            try {
+                if (response != null) {
+                    response.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            try {
+                if (httpClient != null) {
+                    httpClient.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * 下载
+     *
+     * @param url
+     * @return
+     * @throws ClientProtocolException
+     * @throws IOException
+     */
+    public static InputStream download(String url) throws ClientProtocolException, IOException {
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        HttpGet httpGet = new HttpGet(url);
+        CloseableHttpResponse response = httpClient.execute(httpGet);
+        return response.getEntity().getContent();
+    }
+
+    public static class Response {
+        private int statusCode;
+        private String responseText;
+
+        public int getStatusCode() {
+            return statusCode;
+        }
+
+        public void setStatusCode(int statusCode) {
+            this.statusCode = statusCode;
+        }
+
+        public String getResponseText() {
+            return responseText;
+        }
+
+        public void setResponseText(String responseText) {
+            this.responseText = responseText;
+        }
+
+        public Response() {
+        }
+
+        public Response(HttpResponse response) throws IllegalStateException, IOException, Exception {
+            this.statusCode = response.getStatusLine().getStatusCode();
+            this.responseText = IOUtils.toString(response.getEntity().getContent());
+        }
+
+        public static Response getResponse(HttpResponse response) throws IllegalStateException, IOException, Exception {
+            if (response != null)
+                return new Response(response);
+            return null;
+        }
+    }
+}

+ 30 - 0
src/main/java/com/uas/platform/b2b/support/MessageConf.java

@@ -32,6 +32,20 @@ public class MessageConf {
 	@Value("#{message.msgTenderForB2B}")
 	private String msgTenderForB2B;
 
+	/**
+	 * erp用户邀请注册的邮件模板id
+	 *
+	 * @return
+	 */
+	@Value("#{message.tplInvitationForERP}")
+	private String tplInvitationForERP;
+
+	/**
+	 * erp用户邀请注册的短信模板id
+	 */
+	@Value("#{message.msgInvitationForERP}")
+	private String msgInvitationForERP;
+
 	/**
 	 * 邮件模版id:询价单提醒供应商报价
 	 * @return
@@ -85,6 +99,22 @@ public class MessageConf {
 		this.msgTenderForB2B = msgTenderForB2B;
 	}
 
+	public String getTplInvitationForERP() {
+		return tplInvitationForERP;
+	}
+
+	public void setTplInvitationForERP(String tplInvitationForERP) {
+		this.tplInvitationForERP = tplInvitationForERP;
+	}
+
+	public String getMsgInvitationForERP() {
+		return msgInvitationForERP;
+	}
+
+	public void setMsgInvitationForERP(String msgInvitationForERP) {
+		this.msgInvitationForERP = msgInvitationForERP;
+	}
+
 	public String getTplInquiryForB2B() {
 		return tplInquiryForB2B;
 	}

+ 16 - 0
src/main/java/com/uas/platform/b2b/support/SysConf.java

@@ -46,6 +46,22 @@ public class SysConf {
 	@Value("#{sys.reportUploadUrl}")
 	private String reportUploadUrl;
 
+    /**
+     * 账户中心注册地址
+     *
+     * @return
+     */
+    @Value("#{sys.registerUrl}")
+    private String registerUrl;
+
+    public String getRegisterUrl() {
+        return registerUrl;
+    }
+
+    public void setRegisterUrl(String registerUrl) {
+        this.registerUrl = registerUrl;
+    }
+
 	public String getB2b() {
 		return b2b;
 	}

+ 14 - 0
src/main/java/com/uas/platform/b2b/temporary/model/ChangeAdminDetail.java

@@ -34,6 +34,7 @@ public class ChangeAdminDetail implements Serializable {
 	private Date enDate;
 	private String adminPassword;
 	private String appId;
+	private String method;
 
 	public Long getId() {
 		return id;
@@ -262,4 +263,17 @@ public class ChangeAdminDetail implements Serializable {
 		this.appId = appId;
 	}
 
+
+	/**
+	 * 更换方式
+	 *
+	 * @return
+	 */
+	public String getMethod() {
+		return method;
+	}
+
+	public void setMethod(String method) {
+		this.method = method;
+	}
 }

+ 12 - 2
src/main/java/com/uas/platform/b2b/temporary/model/OrderItems.java

@@ -1,9 +1,9 @@
 package com.uas.platform.b2b.temporary.model;
 
-import java.util.Date;
-
 import com.uas.platform.b2b.model.Product;
 
+import java.util.Date;
+
 public class OrderItems {
 
 	private Date delivery;
@@ -11,6 +11,8 @@ public class OrderItems {
 	private String remark;
 	private String price;
 	private Long id;
+	//物料来源,默认导入的归属于客户,新增的归属于供应商
+	private String  prodsource;
 	// 下面是product的信息
 	private Product product;
 	private String code;
@@ -170,6 +172,14 @@ public class OrderItems {
 		this.product = product;
 	}
 
+	public String getProdsource() {
+		return prodsource;
+	}
+
+	public void setProdsource(String prodsource) {
+		this.prodsource = prodsource;
+	}
+
 	@Override
 	public String toString() {
 		return "OrderItems [delivery=" + delivery + ", qty=" + qty + ", remark=" + remark + ", price=" + price + ", id="

+ 20 - 15
src/main/java/com/uas/platform/b2b/v2/controller/EnterpriseController.java

@@ -80,21 +80,26 @@ public class EnterpriseController {
 	@RequestMapping(value = "/renewUserSpace", method = RequestMethod.POST)
 	@ResponseBody
 	public String renewUserSpace(UserSpaceDetail userSpaceDetail) throws Exception {
-		Enterprise enterprise = enterService.findByenBussinessCode(userSpaceDetail.getBusinessCode());
-		if (enterprise != null) {
-			enterprise.setEnName(userSpaceDetail.getName());
-			enterprise.setEnShortname(userSpaceDetail.getShortName());
-			enterprise.setEnAddress(userSpaceDetail.getAddress());
-			try {
-				enterpriseService.save(enterprise);
-				return "success";
-			} catch (Exception e) {
-				e.printStackTrace();
-				return "error";
-			}
-		} else {
-			return "未找到相关的企业信息";
-		}
+	    return null;
+//		Enterprise enterprise = null;
+//		if(userSpaceDetail.getUu() != null) {
+//			enterprise = enterService.findByEnUU(userSpaceDetail.getUu());
+//		}
+//		if (enterprise != null) {
+//			enterprise.setEnName(userSpaceDetail.getName());
+//			enterprise.setEnShortname(userSpaceDetail.getShortName());
+//			enterprise.setEnAddress(userSpaceDetail.getAddress());
+//			enterprise.setEnBussinessCode(userSpaceDetail.getBusinessCode());
+//			try {
+//				enterpriseService.save(enterprise);
+//				return "success";
+//			} catch (Exception e) {
+//				e.printStackTrace();
+//				return "error";
+//			}
+//		} else {
+//			return "未找到相关的企业信息";
+//		}
 	}
 
 }

+ 31 - 0
src/main/java/com/uas/platform/b2b/v2/controller/PartnerShipController.java

@@ -0,0 +1,31 @@
+package com.uas.platform.b2b.v2.controller;
+
+import com.uas.account.entity.PartnershipRecord;
+import com.uas.platform.b2b.v2.service.PartnerShipService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+/**
+ * Created by hejq on 2017-09-29.
+ *
+ * 账户中心建立合作关系后如果有后续操作同步到平台进行
+ *
+ */
+@Controller("v2.PartnerShipController")
+@RequestMapping(value = "/public/partenrship")
+public class PartnerShipController {
+
+    @Autowired
+    private PartnerShipService partnerShipService;
+
+    @RequestMapping(method = RequestMethod.POST)
+    @ResponseBody
+    public void addVendor(PartnershipRecord record) throws Exception {
+        if(null != record) {
+            partnerShipService.addVendor(record);
+        }
+    }
+}

+ 14 - 0
src/main/java/com/uas/platform/b2b/v2/service/PartnerShipService.java

@@ -0,0 +1,14 @@
+package com.uas.platform.b2b.v2.service;
+
+import com.uas.account.entity.PartnershipRecord; /**
+ * Created by hejq on 2017-09-29.
+ */
+public interface PartnerShipService {
+
+    /**
+     * 通过合作伙伴关系添加供应商
+     *
+     * @param record
+     */
+    void addVendor(PartnershipRecord record);
+}

+ 42 - 10
src/main/java/com/uas/platform/b2b/v2/service/impl/ChangeAdminServiceImpl.java

@@ -1,13 +1,5 @@
 package com.uas.platform.b2b.v2.service.impl;
 
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
 import com.uas.account.util.AccountUtils;
 import com.uas.platform.b2b.dao.EnterpriseDao;
 import com.uas.platform.b2b.dao.RoleDao;
@@ -22,6 +14,14 @@ import com.uas.platform.b2b.v2.service.ChangeAdminService;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.util.encry.Md5Utils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
 
 @SuppressWarnings("deprecation")
 @Service("v2.ChangeAdminService")
@@ -50,8 +50,13 @@ public class ChangeAdminServiceImpl implements ChangeAdminService {
 		// 如果用户存在,则更换管理员
 		User user = userService.findUserByUserTel(detail.getAdminTel());
 		Enterprise enterprise = enterpriseDao.findEnterpriseByEnBussinessCode(detail.getBusinessCode());
-		// 解除以前管理员与本企业的关系
-		EnterpriseDeleteUser(enterprise);
+		// 如果方式是删除,解除以前管理员与本企业的关系
+		if(("remove").equals(detail.getMethod())) {
+			EnterpriseDeleteUser(enterprise);
+		} else {
+			// 将以前的管理员设置成普通用户
+			updateUserRole(enterprise);
+		}
 		if (user != null) {
 			enterprise.setEnAdminuu(user.getUserUU());
 			enterprise.setAdmin(user);
@@ -99,6 +104,32 @@ public class ChangeAdminServiceImpl implements ChangeAdminService {
 		return enterprise;
 	}
 
+	private void updateUserRole(Enterprise enterprise) {
+		User newUser =  userDao.findOne(enterprise.getEnAdminuu());
+		if (!CollectionUtils.isEmpty(newUser.getRoles())) {
+			Set<Role> existRoles = newUser.getRoles();
+			if(!CollectionUtils.isEmpty(existRoles)) {// 保留用户在其他企业的角色
+				Iterator<Role> iterator = existRoles.iterator();
+				Long currentEnuu = enterprise.getUu();
+				while (iterator.hasNext()) {
+					Role role = iterator.next();
+					if(role.getEnUU().equals(currentEnuu)) {
+						iterator.remove();
+					}
+				}
+			} else {
+				existRoles = new HashSet<>();
+			}
+			newUser.setRoles(existRoles);
+			try {
+				userDao.save(newUser);
+			} catch (Exception e) {
+				throw new RuntimeException(e.getMessage());
+			}
+		}
+
+	}
+
 
 	private void EnterpriseDeleteUser(Enterprise enterprise) {
 		User user = userDao.findOne(enterprise.getEnAdminuu());
@@ -110,6 +141,7 @@ public class ChangeAdminServiceImpl implements ChangeAdminService {
 		userInfo.setUid(user.getUserTel());
 		userInfo.setSecondUID(user.getUserEmail());
 		userInfo.setDialectUID(String.valueOf(enterprise.getEnAdminuu()));
+		userInfo.setSpaceDialectUID(String.valueOf(enterprise.getUu()));
 		if (user.getEnterprises().contains(enterprise)) {
 			user.removeEnterprise(enterprise);
 			if (user.getEnterprises().size() == 0)

+ 59 - 0
src/main/java/com/uas/platform/b2b/v2/service/impl/PartnerShipServiceImpl.java

@@ -0,0 +1,59 @@
+package com.uas.platform.b2b.v2.service.impl;
+
+import com.uas.account.entity.PartnershipRecord;
+import com.uas.platform.b2b.core.util.StringUtil;
+import com.uas.platform.b2b.dao.EnterpriseDao;
+import com.uas.platform.b2b.dao.VendorDao;
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.v2.service.PartnerShipService;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.Status;
+import org.apache.axis.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * Created by hejq on 2017-09-29.
+ */
+@Service("v2.PartnerShipService")
+public class PartnerShipServiceImpl implements PartnerShipService{
+
+    @Autowired
+    private VendorDao vendorDao;
+
+    @Autowired
+    private EnterpriseDao enterpriseDao;
+
+    @Override
+    public void addVendor(PartnershipRecord record) {
+        Enterprise myEn = enterpriseDao.findEnterpriseByEnBussinessCode(record.getCustUID());
+        Enterprise vendEn = enterpriseDao.findEnterpriseByEnBussinessCode(record.getVendUID());
+        if(null != myEn && null != vendEn) {
+            List<Vendor> vendors = vendorDao.findByMyEnBusinessCodeAndVendBusinessCode(record.getCustUID(), record.getVendUID());
+            Vendor vendor = new Vendor();
+            if(!CollectionUtils.isEmpty(vendors)) {
+                vendor = vendors.get(0);
+                vendor.setErpstatus(Status.NOT_UPLOAD.value());
+            } else {
+                //客户
+                vendor.setErpstatus(Status.NOT_UPLOAD.value());
+                vendor.setMyUserUU(Long.valueOf(record.getCustUserCode()));
+                vendor.setMyEnUU(myEn.getUu());
+
+                //供应商
+                vendor.setVendUserUU(vendEn.getEnAdminuu());
+                vendor.setVendEnUU(vendEn.getUu());
+                vendor.setSynchStatus(Constant.YES);
+                vendor.setVendswitch(Constant.YES);
+                vendor.setCustswitch(Constant.YES);
+            }
+            if(null != vendor) {
+               vendorDao.save(vendor);
+            }
+        }
+    }
+}

+ 4 - 1
src/main/resources/dev/message.properties

@@ -2,7 +2,10 @@ tplInvitationForB2B=e472f874-0579-4ca2-9bb8-2635109dc7f3
 msgInvitationForB2B=73c513f8-7423-49c4-b57c-50a63bd8a0af
 tplAfterBeAddedtoB2B=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
 msgTenderForB2B=f9e29b6f-4116-4d33-9bde-048aa037f8c6
+tplInvitationForERP=d8324da8-fa97-429c-8293-761698a94db8
+msgInvitationForERP=5081e29f-47af-4556-a560-9213af11753f
 
+## messageConfig
 tplInquiryForB2B=bc60d592-9651-4ca1-9305-0852fc7c4101
 msgInquiryForB2B=72cc98e4-0c2b-4d16-944b-2e0515048b8d
-messageUrl=http://message.ubtob.com/sms/send
+messageUrl=http://message.ubtob.com/sms/send

+ 2 - 0
src/main/resources/dev/sys.properties

@@ -4,6 +4,8 @@ manage=http://218.17.158.219:9090/platform-manage
 manageInner=http://192.168.253.60:9090/platform-manage
 im=http://113.105.74.131:8092
 b2c=http://192.168.253.60:9090/platform-b2c
+registerUrl=http://10.10.100.133/sso/register
+
 #report url
 reportPrintUrl=http://print.ubtob.com/report/print?userName=B2B%s&profile=${profile}&reportName=%s&whereCondition=%s
 reportUploadUrl=http://print.ubtob.com/report/fileUpload?userName=B2B%s

+ 3 - 1
src/main/resources/prod/message.properties

@@ -2,8 +2,10 @@ tplInvitationForB2B=e472f874-0579-4ca2-9bb8-2635109dc7f3
 msgInvitationForB2B=73c513f8-7423-49c4-b57c-50a63bd8a0af
 tplAfterBeAddedtoB2B=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
 msgTenderForB2B=f9e29b6f-4116-4d33-9bde-048aa037f8c6
+tplInvitationForERP=d8324da8-fa97-429c-8293-761698a94db8
+msgInvitationForERP=5081e29f-47af-4556-a560-9213af11753f
 
-## ×Ô¶¯Ñ¯¼Û±¨¼ÛÌáÐÑ
+## messageConfig
 tplInquiryForB2B=bc60d592-9651-4ca1-9305-0852fc7c4101
 msgInquiryForB2B=72cc98e4-0c2b-4d16-944b-2e0515048b8d
 messageUrl=http://message.ubtob.com/sms/send

+ 2 - 0
src/main/resources/prod/sys.properties

@@ -4,6 +4,8 @@ manage=http://manage.ubtob.com
 manageInner=http://10.10.100.81:8080
 im=http://113.105.74.140:8092
 b2c=http://www.usoftmall.com
+registerUrl=https://account.ubtob.com/sso/register
+
 #report url
 reportPrintUrl=http://print.ubtob.com/report/print?userName=B2B%s&profile=${profile}&reportName=%s&whereCondition=%s
 reportUploadUrl=http://print.ubtob.com/report/fileUpload?userName=B2B%s

+ 3 - 1
src/main/resources/test/message.properties

@@ -2,8 +2,10 @@ tplInvitationForB2B=e472f874-0579-4ca2-9bb8-2635109dc7f3
 msgInvitationForB2B=73c513f8-7423-49c4-b57c-50a63bd8a0af
 tplAfterBeAddedtoB2B=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
 msgTenderForB2B=f9e29b6f-4116-4d33-9bde-048aa037f8c6
+tplInvitationForERP=d8324da8-fa97-429c-8293-761698a94db8
+msgInvitationForERP=5081e29f-47af-4556-a560-9213af11753f
 
-## ×Ô¶¯Ñ¯¼Û±¨¼ÛÌáÐÑ
+## messageConfig
 tplInquiryForB2B=bc60d592-9651-4ca1-9305-0852fc7c4101
 msgInquiryForB2B=72cc98e4-0c2b-4d16-944b-2e0515048b8d
 messageUrl=http://message.ubtob.com/sms/send

+ 2 - 0
src/main/resources/test/sys.properties

@@ -4,6 +4,8 @@ manage=http://218.17.158.219:9090/platform-manage
 manageInner=http://192.168.253.60:9090/platform-manage
 im=http://113.105.74.131:8092
 b2c=http://192.168.253.60:9090/platform-b2c
+registerUrl=http://10.10.100.133/sso/register
+
 #report url
 reportPrintUrl=http://print.ubtob.com/report/print?userName=B2B%s&profile=${profile}&reportName=%s&whereCondition=%s
 reportUploadUrl=http://print.ubtob.com/report/fileUpload?userName=B2B%s

+ 16 - 2
src/main/webapp/resources/js/common/services.js

@@ -264,12 +264,26 @@ define(['angular', 'toaster', 'big'], function(angular, big) {
                     success.call(null, data);
                 });
             },
-            customer: $resource('vendor/customer/:id', {}),
+            customer: $resource('vendor/customer/info/search', {}),
             vendor: $resource('vendor/:id', {}),
             userInfo: $resource('vendor/userInfo/:uu', {}),
             user: $resource('vendor/user', {}),
-            exportXls: $resource('vendor/customer/permission/xls', {})
+            exportXls: $resource('vendor/customer/xls/permission', {})
         };
+    }]).factory('VendorPerformanceAssessService', ['$resource', function($resource) {
+        return $resource('vendorPerformanceAssess/info/search', {}, {
+            getAll: {
+                url: 'vendorPerformanceAssess/info/search',
+                method: 'GET'
+            },
+            setRead: {
+                url: 'vendorPerformanceAssess/setRead',
+                method: 'POST'
+            },getDetail: {
+                url: 'vendorPerformanceAssess/:id/info',
+                method: 'GET'
+            }
+        });
     }]).factory('AccountUser', ['$resource', function($resource) {
         return $resource('account/user/:uu', {}, {
             findUsers: {

+ 104 - 11
src/main/webapp/resources/js/index/app.js

@@ -726,6 +726,14 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             url: "/productmatches",
             templateUrl: "static/tpl/index/approvalFlow/productmatches.html",
             controller: 'ProductmatchesCtrl'
+        }).state('sale.vendorPerformanceAssess', {
+            url: "/vendorPerformanceAssess",
+            templateUrl: "static/tpl/index/sale/vendorPerformanceAssess.html",
+            controller: 'VendorPerformanceAssessCtrl'
+        }).state('sale.vendorPerformanceAssess_detail', {
+            url: "/vendorPerformanceAssess/:id",
+            templateUrl: "static/tpl/index/sale/vendorPerformanceAssess_detail.html",
+            controller: 'VendorPerformanceAssessDetailCtrl'
         });
         $urlRouterProvider.otherwise('/index');
     }]);
@@ -1447,6 +1455,9 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                 case 'product':
                     $scope.unread.product = 0;
                     break;
+                case 'vendorPerformanceAssess':
+                    $scope.unread.vendorPerformanceAssess = 0;
+                    break;
                 case 'customer':
                     $scope.unread.customer = 0;
                     break;
@@ -2746,8 +2757,12 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 
             // 需方  打印    采购单
             $scope.custPrint = function (order) {
-                PurcOrder.custPrintCount({id: order.id}, {});//增加打印此次
-                ReportService.print(order.enUU, 'PURCLIST_CUST', "where purc$orders.pu_id=" + order.id);
+                PurcOrder.printPermission({}, function () {
+                    PurcOrder.custPrintCount({id: order.id}, {});//增加打印此次
+                    ReportService.print(order.enUU, 'PURCLIST_CUST', "where purc$orders.pu_id=" + order.id);
+                }, function (response) {
+                    toaster.pop('error', '打印失败', response.data);
+                });
             };
 
             $scope.openDatePicker = function ($event, item, openParam) {
@@ -2974,7 +2989,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                     $scope.tableParams.page(1);
             }
         };
-        
+
         $scope.searchMethod = false;
         // 切换数据来源(正常数据 or 历史数据)
         var getService = function () {
@@ -9670,7 +9685,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         $scope.exportXls = function () {
             FaApCheck.exportXls({}, {}, function (data) {
                 if (data.success){
-                    window.location.href = window.location.origin + '/sale/inquiry/xls?_state='+$scope.active+'&searchFilter='+angular.toJson($scope.searchFilterXls);
+                    window.location.href = window.location.origin + '/sale/apCheck/xls/list?_state='+$scope.active+'&searchFilter='+angular.toJson($scope.searchFilterXls);
                 }
             }, function (response) {
                 toaster.pop('error', '数据加载失败', response.data);
@@ -12412,7 +12427,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         $scope.exportXls = function () {
             MakeOutOrder.exportXls({}, {}, function (data) {
                 if (data.success){
-                    window.location.href = window.location.origin + '/sale/inquiry/xls?_state='+$scope.active+'&searchFilter='+angular.toJson($scope.searchFilterXls);
+                    window.location.href = window.location.origin + '/make/outorders/xls?_state='+$scope.active+'&searchFilter='+angular.toJson($scope.searchFilterXls);
                 }
             }, function (response) {
                 toaster.pop('error', '数据加载失败', response.data);
@@ -12430,7 +12445,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             $scope.isUser = data.isUser;
         });
         var loadData = function () {
-            MakeOutOrder.get({id: $stateParams.id}, function (data) {
+            MakeOutOrder.getItem({id: $stateParams.id}, function (data) {
                 $scope.order = data;
                 var sum = $scope.order.qty * $scope.order.price;
                 $scope.order.total = sum;
@@ -13913,7 +13928,8 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                     remark: null,
                     delivery: null,
                     $endDateOpen: false,
-                    taxrate: $scope.order.rate
+                    taxrate: $scope.order.rate,
+                    prodsource: 'seller'
                 });
             }
         };
@@ -13968,7 +13984,8 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                 remark: null,
                 delivery: null,
                 prid: data.id,
-                taxrate: $scope.order.rate
+                taxrate: $scope.order.rate,
+                prodsource: 'seller'
             });
         };
 
@@ -13993,7 +14010,8 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                         remark: prod.remark,
                         delivery: prod.date,
                         prid: prod.id,
-                        taxrate: prod.rate
+                        taxrate: prod.rate,
+                        prodsource: 'purchaser'
                     });
                 })
 
@@ -16419,8 +16437,10 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         // 检验订单编号是否存在
         $scope.checkOrder = function (salecode, deputyuu) {
             DeputyOrder.checkOrders({salecode: salecode, deputyuu: deputyuu}, {}, function (data) {
+                $scope.orderCodeEnable = true;
                 if (data.info) {
                     toaster.pop('error', '提示', data.info);
+                    $scope.orderCodeEnable = false;
                 }
             }, function (response) {
                 toaster.pop('error', '提示', response.data);
@@ -16528,7 +16548,9 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                 toaster.pop('info', '提示', '货款支付方式未填写');
             } else if ($scope.deOrder.deliverydate == null) {
                 toaster.pop('info', '提示', '交货时间未选择');
-            } else {
+            }  else if (!$scope.orderCodeEnable) {
+                toaster.pop('info', '提示', '采购单号重复');
+            }else {
                 angular.forEach($scope.deOrder.deputyOrderItems, function (orderitem, index) {
                     if (orderitem.prodname == null) {
                         toaster.pop('info', '提示', '订单明细第' + (index + 1) + '行产品名称未填写');
@@ -16902,8 +16924,10 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         // 检验订单编号是否存在
         $scope.checkOrder = function (salecode, deputyuu) {
             DeputyOrder.checkOrders({salecode: salecode, deputyuu: deputyuu}, {}, function (data) {
+                $scope.orderCodeEnable = true;
                 if (data.info) {
                     toaster.pop('error', '提示', data.info);
+                    $scope.orderCodeEnable = false;
                 }
             }, function (response) {
                 toaster.pop('error', '提示', response.data);
@@ -17011,7 +17035,9 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                 toaster.pop('info', '提示', '货款支付方式未填写');
             } else if ($scope.deOrder.deliverydate == null) {
                 toaster.pop('info', '提示', '交货时间未选择');
-            } else {
+            } else if (!$scope.orderCodeEnable) {
+                toaster.pop('info', '提示', '采购单号重复');
+            }else {
                 angular.forEach($scope.deOrder.deputyOrderItems, function (orderitem, index) {
                     if (orderitem.prodname == null) {
                         toaster.pop('info', '提示', '订单明细第' + (index + 1) + '行产品名称未填写');
@@ -21953,5 +21979,72 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 
     }]);
 
+    // 供应商绩效考核
+    app.controller('VendorPerformanceAssessCtrl', ['$scope', 'VendorPerformanceAssessService', 'BaseService', 'AuthenticationService', 'ngTableParams', '$modal', 'toaster', 'Vendor', 'AccountUser', 'CurrentRole', function ($scope, VendorPerformanceAssessService, BaseService, AuthenticationService, ngTableParams, $modal, toaster, Vendor, AccountUser, CurrentRole) {
+        BaseService.scrollBackToTop();
+
+        $scope.vendorPerformanceAssessParams = new ngTableParams({
+            page: 1,
+            count: 20
+        }, {
+            total: 0,
+            counts: [5, 10, 25, 50],
+            getData: function ($defer, params) {
+                $scope.loading = true;
+                var pageParams = params.url();
+                pageParams.keyword = $scope.keyword;
+                VendorPerformanceAssessService.get(BaseService.parseParams(pageParams), function (page) {
+                    $scope.loading = false;
+                    if (page) {
+                        params.total(page.totalElement);
+                        $defer.resolve(page.content);
+                        $scope.keywordXls = pageParams.keyword;
+                    }
+                    $scope.totalCount = page.totalElement;
+                }, function (response) {
+                    $scope.loading = false;
+                    toaster.pop('error', '数据加载失败', response.data);
+                });
+            }
+        });
+
+        //设置消息已读
+        var setOrdersRead = function () {
+            var sourceId = [];
+            VendorPerformanceAssessService.setRead({}, sourceId, function (message) {
+                // $scope.getUnreadIds();
+            });
+        };
+        setOrdersRead();
+
+        // 搜索框回车
+        $scope.onSearch = function (keyword) {
+            $scope.vendorPerformanceAssessParams.page(1);
+            $scope.vendorPerformanceAssessParams.reload();
+            $scope.tip = keyword;
+        };
+
+        // 查看详情
+        $scope.viewDetail = function (id) {
+            window.location.hash = "#/sale/vendorPerformanceAssess/" + id;
+        }
+
+    }]);
+
+    // 客户详情
+    app.controller('VendorPerformanceAssessDetailCtrl', ['$scope', 'toaster', '$stateParams', 'VendorPerformanceAssessService', '$modal', 'ngTableParams', 'BaseService', '$rootScope', 'AuthenticationService', function ($scope, toaster, $stateParams, VendorPerformanceAssessService, $modal, ngTableParams, BaseService, $rootScope, AuthenticationService) {
+        BaseService.scrollBackToTop();
+        var loadData = function () {
+            VendorPerformanceAssessService.getDetail({id: $stateParams.id}, {}, function (data) {
+                $scope.vendorPerformanceAssess = data;
+                }, function (response) {
+                $scope.loading = false;
+                toaster.pop('error', '数据加载失败', response.data);
+            });
+        };
+        loadData();
+    }]);
+
+
     return app;
 });

+ 1 - 1
src/main/webapp/resources/js/index/services/BaseInfo.js

@@ -95,7 +95,7 @@ define(['ngResource'], function() {
 				method: 'GET'
 			},
 			exportXls: {
-				url: 'product/baseInfo/permission/xls',
+				url: 'product/baseInfo/xls/permission',
 				method: 'GET'
 			},
 			matchbytype: {

+ 1 - 1
src/main/webapp/resources/js/index/services/DeputyOrder.js

@@ -10,7 +10,7 @@ define(['ngResource'], function() {
 				method: 'POST'
 			},
 			getOrderDetail: {
-				url: 'deputyOrder/getOrderDetail/:id/info',
+				url: 'deputyOrder/:id/info',
 				method: 'GET'
 			},
 			getProdList: {

+ 2 - 2
src/main/webapp/resources/js/index/services/Fa.js

@@ -1,7 +1,7 @@
 define([ 'ngResource'], function() {
 	angular.module('FaServices', [ 'ngResource'
 	]).factory('FaApBill', ['$resource', function($resource) {
-		return $resource('sale/apBill/:id', {}, {
+		return $resource('sale/apBill/info/search', {}, {
 			getAll: {
 				url: 'sale/apBill/:id/info',
 				method: 'GET'
@@ -107,7 +107,7 @@ define([ 'ngResource'], function() {
 			}
 		});
 	}]).factory('FaApCheck', ['$resource', function($resource) {
-		return $resource('sale/apCheck/:id', {}, {
+		return $resource('sale/apCheck/info/search', {}, {
 			getItem: {
 				url: 'sale/apCheck/:id/info',
 				method: 'GET',

+ 11 - 7
src/main/webapp/resources/js/index/services/Make.js

@@ -1,7 +1,7 @@
 define([ 'ngResource'], function() {
 	angular.module('MakeServices', [ 'ngResource'
 	]).factory('MakeOrder', ['$resource', function($resource) {
-		return $resource('make/orders/status', {}, {
+		return $resource('make/orders/info/search', {}, {
 			getItem: {
 				url: 'make/orders/:id/info',
 				method: 'GET'
@@ -22,14 +22,14 @@ define([ 'ngResource'], function() {
 				}
 			},	
 			getTodo: {
-				url: 'make/orders/status',
+				url: 'make/orders/info/search',
 				method: 'GET',
 				params: {
 					_state: 'todo'
 				}
 			},
 			getDone: {
-				url: 'make/orders/status',
+				url: 'make/orders/info/search',
 				method: 'GET',
 				params: {
 					_state: 'done'
@@ -40,7 +40,7 @@ define([ 'ngResource'], function() {
 				method: 'POST'
 			},
 			getEnd: {
-				url: 'make/orders/status',
+				url: 'make/orders/info/search',
 				method: 'GET',
 				params: {
 					_state: 'end'
@@ -60,7 +60,7 @@ define([ 'ngResource'], function() {
 				method: 'GET'
 			},
 			exportXls: {
-				url: 'make/orders/permission/xls',
+				url: 'make/orders/xls/permission',
 				method: 'GET'
 			}
 		});
@@ -82,7 +82,7 @@ define([ 'ngResource'], function() {
 				method: 'GET',
 			},
 			exportXls: {
-				url: 'make/changes/permission/xls',
+				url: 'make/changes/xls/permission',
 				method: 'GET',
 			}
 		});
@@ -103,8 +103,12 @@ define([ 'ngResource'], function() {
 			}
 		});
 	}]).factory('MakeOutOrder', ['$resource',function($resource){
-		return $resource('make/outorders/:id', {}, {
+		return $resource('make/outorders/info/search', {}, {
 			getAll: {},
+			getItem: {
+				url: 'make/outorders/:id/info',
+				method: 'GET'
+			},
 			exportXls: {
 				url: 'make/outorders/xls/permission',
 				method: 'GET'

+ 18 - 14
src/main/webapp/resources/js/index/services/Purc.js

@@ -34,6 +34,10 @@ define([ 'ngResource'], function() {
             custPrintCount: {
                 url: 'sale/orders/custPrintCount/:id',
                 method: 'POST'
+            },
+            custPrintPermission: {
+                url: 'sale/orders/custPrintCount/permission',
+                method: 'POST'
             }
 		});
 	}]).factory('PurcOrderItem', ['$resource', function($resource) {
@@ -105,7 +109,7 @@ define([ 'ngResource'], function() {
 				method: 'GET'
 			},
 			exportXls: {
-				url: 'sale/orders/permission/xls',
+				url: 'sale/orders/xls/permission',
 				method: 'GET'
 			}
 		});
@@ -273,7 +277,7 @@ define([ 'ngResource'], function() {
 				method: 'GET'
 			},
 			exportXls: {
-				url: 'sale/changes/permission/xls',
+				url: 'sale/changes/xls/permission',
 				method: 'GET'
 			}
 		});
@@ -338,7 +342,7 @@ define([ 'ngResource'], function() {
                     itemId: 'itemId'
                 }
             }, getItem: {
-                url: 'sale/inquiry/items/:itemId',
+                url: 'sale/inquiry/:itemId/info/mobile',
                 method: 'GET',
                 params: {
                     itemId: 'itemId'
@@ -375,7 +379,7 @@ define([ 'ngResource'], function() {
 				method: 'POST'
 			},
 			exportXls: {
-				url: 'sale/inquiry/permission/xls',
+				url: 'sale/inquiry/xls/permission',
 				method: 'GET'
 			}
         });
@@ -777,7 +781,7 @@ define([ 'ngResource'], function() {
 				method: 'GET'
 			},
 			exportXls: {
-				url: 'sale/mould/permission/xls',
+				url: 'sale/mould/xls/permission',
 				method: 'GET'
 			}
 		});
@@ -880,7 +884,7 @@ define([ 'ngResource'], function() {
             }
         });
 	}]).factory('SaleSend', ['$resource', function($resource) {
-		return $resource('sale/notice/sends/:id', {}, {
+		return $resource('sale/notice/sends/info/search', {}, {
 			getItem: {
 				url: 'sale/notice/sends/:id/info',
 				method: 'GET'
@@ -1059,9 +1063,9 @@ define([ 'ngResource'], function() {
 			}
 		});
 	}]).factory('PurcApproval', ['$resource', function($resource) {
-		return $resource('sale/sample/approval/:id', {}, {
+		return $resource('sale/sample/approval/info/search', {}, {
 			getItem: {
-				url: 'sale/sample/approval/:id',
+				url: 'sale/sample/approval/:id/info',
 				method: 'GET'
 			},
 			getAgreed: {
@@ -1260,7 +1264,7 @@ define([ 'ngResource'], function() {
 				isArray: true
 			},
 			getVendor: {
-				url: 'vendor'
+				url: 'vendor/info/search'
 			},
             getServicer: {
                 url: 'vendor/servicer'
@@ -1372,14 +1376,14 @@ define([ 'ngResource'], function() {
 			},
 			getItem: {
 				isArray: false,
-				url: 'sale/quotation/item/:id'
+				url: 'sale/quotation/:id/info'
 			},
 			deleteById: {
 				url: 'sale/quotation/deleteById/:id',
 				method: 'DELETE'
 			},
 			exportXls: {
-				url: 'sale/quotation/permission/xls',
+				url: 'sale/quotation/xls/permission',
 				method: 'GET'
 			}
 		});
@@ -1594,7 +1598,7 @@ define([ 'ngResource'], function() {
 				method: 'POST'
 			},
 			detail: {
-				url: 'purc/inquiry/detail/:id',
+				url: 'purc/inquiry/:id/info',
 				method: 'GET'
 			},
 			submit: {
@@ -1615,7 +1619,7 @@ define([ 'ngResource'], function() {
 				isArray: true
 			},
 			submitUnapply: {
-				url: 'purc/inquiry/submit/:id',
+				url: 'purc/inquiry/submit/update',
 				method: 'POST'
 			},
 			saveAndSubmitWithoutVendor: {
@@ -1627,7 +1631,7 @@ define([ 'ngResource'], function() {
 				method: 'POST'
 			},
 			publishInquiry: {
-				url: 'purc/inquiry/pubishInquiry/:id',
+				url: 'purc/inquiry/submit/updatePublic',
 				method: 'POST'
 			},
 			publicInquiryItem: {

+ 1 - 1
src/main/webapp/resources/tpl/index/purc/addOrder.html

@@ -2,7 +2,7 @@
 <html lang="en">
 <head>
 <meta charset="UTF-8" />
-<title>B2B商务采购变更-添加</title>
+<title>B2B商务采购-添加</title>
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
 <meta name="Keywords" content="" />
 <meta name="Description" content="" />

+ 3 - 0
src/main/webapp/resources/tpl/index/sale/left.html

@@ -6,6 +6,9 @@
 		<ul class="list-unstyled">
 			<li ui-sref-active="active"><a ui-sref="sale.customer" ng-click="setOrdersRead('customer')"><em class="new-dot" ng-if="unread.customer > 0"></em>客户资料</a></li>
 		</ul>
+		<ul class="list-unstyled">
+			<li ui-sref-active="active"><a ui-sref="sale.vendorPerformanceAssess" ng-click="setOrdersRead('vendorPerformanceAssess')"><em class="new-dot" ng-if="unread.vendorPerformanceAssess > 0"></em>绩效考核</a></li>
+		</ul>
 		<ul class="list-unstyled">
 			<li ui-sref-active="active"><a ui-sref="sale.prodList" ng-click="setOrdersRead('product')"><em class="new-dot" ng-if="unread.product > 0"></em>产品导入</a></li>
 		</ul>

+ 139 - 0
src/main/webapp/resources/tpl/index/sale/vendorPerformanceAssess.html

@@ -0,0 +1,139 @@
+<style>
+#customer-tab .header th,#customer-tab tbody tr.header,#customer-tab tbody tr.header th{
+	height: 38px;
+	text-align: center;
+	padding: 0;
+	line-height: 38px;
+	border-bottom-width: 0;
+	/*background: #f5f5f5;*/
+	border: none;
+	font-size: 14px;
+}
+#customer-tab tbody tr.header:hover{
+	border: none;
+}
+.pane .pane-header{
+	border-radius: 0px 0 0px 0px;
+	box-shadow: 0 0 3px #ccc;
+	background: linear-gradient(to top, #e7e7e7 0%,#ffffff 100%);
+	height: 40px;
+	font-size: 14px;
+	line-height: 40px;
+}
+.table>tbody+tbody{
+	border-top: none;
+}
+#customer-tab tbody td{
+	border: none;
+}
+#customer-tab .pane-body{
+	padding: 0;
+}
+#customer-tab tbody tr{
+	background: none;
+	height: 80px;
+	border-top: #e8e8e8 1px solid;
+}
+#customer-tab tbody tr td{
+	text-align: center;
+	line-height: 20px;
+	vertical-align: inherit;
+	font-size: 14px;
+}
+#customer-tab tbody tr:hover{
+	border: #d32526 2px solid;
+}
+#customer-tab .form-horizontal .form-control{
+	height: 36px;
+	line-height: 36px;
+	border: #327ebe 1px solid;
+	border-radius: 0px;
+	font-size: 14px;
+}
+#customer-tab .form-horizontal .form-group{
+	margin: 0;
+	padding: 10px 0;
+}
+#customer-tab .form-horizontal .form-group .input-group-addon{
+	width: 70px;
+	height: 36px;
+	display: inline-block;
+	background: #327ebe;
+	font-size: 16px;
+	text-align: center;
+	line-height: 36px;
+	color: #fff;
+	padding: 0;
+	border: none;
+	border-radius: 0;
+	position: absolute;
+	top: 10px;
+	right: 0;
+}
+#customer-tab table tr td a{
+	color: #5078cb;
+}
+#customer-tab table tr td a:hover{
+	color: #d32526 !important;
+}
+.form-horizontal #topSearch{
+	font-size: 16px;
+	line-height: 55px;
+}
+#customer-tab table tr td a.color32{
+	color: #323232;
+}
+#customer-tab table thead th:hover{
+	background: none;
+}
+</style>
+<div class="loading in" ng-class="{'in': loading}">
+	<i></i>
+</div>
+<div class="pane base-info" style="/*max-height: 900px;overflow-y: auto; overflow-x: hidden;*/" id="customer-tab">
+	<div class="pub-com_head">
+		<span>绩效考核</span>
+		<div class="p-right">
+			<a ng-click="exportXls()" target="_self" class="text-simple bule"><i class="fa fa-file-excel-o fa-fw"></i>导出</a>
+		</div>
+	</div>
+	<form class="form-horizontal">
+		<div class="form-group">
+			<div class="col-md-6 col-sm-6">
+				<div id="topSearch" style="float: left">
+					<span class="text-muted"><i class="fa fa-search fa-lg"></i> 搜索"{{tip}}",为您找到结果:</span>
+					单据{{vendorPerformanceAssessParams.total()}}条
+				</div>
+			</div>
+			<div class="col-md-6 col-sm-6">
+				<div class="form-group form-group-sm has-feedback">
+					<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="输入单据编号搜索" />
+               	 	<a class="btn  input-group-addon" ng-click="onSearch()">搜索</a>
+                </div>
+			</div>
+		</div>
+	</form>
+	<div class="pane-body">
+		<table class="table table-bordered table-striped table-hover"
+			ng-table="vendorPerformanceAssessParams">
+			<thead>
+				<tr class="header">
+					<th width="80">考核单号</th>
+					<th width="180">考核单位</th>
+					<th width="180">考核期间</th>
+					<th width="180">录入日期</th>
+					<th width="180">考核人</th>
+				</tr>
+			</thead>
+			<tbody ng-repeat="vendorPerformanceAssess in $data" ng-mouseenter="showUserInfo(vendorPerformanceAssess,true)" ng-mouseleave="showUserInfo(vendorPerformanceAssess,false)">
+					<tr>
+						<td class="text-center"><a ng-click="viewDetail(vendorPerformanceAssess.id)" title="查看绩效考核详情" ng-bind="::vendorPerformanceAssess.vpaCode" class="color32 order-detail"></a></td>
+						<td class="text-center" ng-bind="::vendorPerformanceAssess.enterprise.enName"></td>
+						<td class="text-center" ng-bind="::vendorPerformanceAssess.vpaAssessdate"></td>
+						<td class="text-center" ng-bind="::vendorPerformanceAssess.vpaApplydate | date: 'yyyy年MM月dd日 hh:mm'"></td>
+						<td class="text-center" ng-bind="::vendorPerformanceAssess.vpaApplyman"></td>
+					</tr>
+			</tbody>
+		</table>
+	</div>
+</div>

+ 251 - 0
src/main/webapp/resources/tpl/index/sale/vendorPerformanceAssess_detail.html

@@ -0,0 +1,251 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8"/>
+	<title>绩效考核详情</title>
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
+	<meta name="Keywords" content=""/>
+	<meta name="Description" content=""/>
+	<link rel="stylesheet" href="static/css/add.css "/>
+</head>
+<body>
+<style>
+    .com_title01 a{
+        float: right;
+        font-size: 14px;
+        color: #5078cb;
+        line-height: 50px;
+        margin-right: 10px;
+    }
+    .pro-add-data02{
+        display: none;
+        margin-top: 0;
+    }
+    .pro-add-data02.open{
+        display: inline-block;
+    }
+    .pro-add-data02 table tbody tr td{
+        padding: 15px;
+    }
+
+    .pro-add-data dl dd div.fl {
+        width: 225px;
+    }
+    .pro-add-data dl dd div.fr {
+        width: 214px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+    .pro-add-data dl dd {
+        width: auto;
+        margin: 0 auto;
+        height: 34px;
+        line-height: 34px;
+        font-size: 14px;
+        margin-top: 10px;
+        display: inline-block;
+    }
+    .float-right {
+        float: right;
+        margin-right: 35px;
+    }
+</style>
+<div class="wrap">
+	<div class="content">
+		<div class="com_head"><span>绩效考核详情</span><span class="float-right">申请日期:{{vendorPerformanceAssess.vpaApplydate | date: 'yyyy年MM月dd日 hh:mm'}}</span><span class="float-right">申请人:{{vendorPerformanceAssess.vpaApplyman}}</span></div>
+		<!--供应商绩效考核详情-->
+        <div class="pro-add-data clearfix">
+            <div class="com_title01 sty01"><span>基本信息</span></div>
+            <dl>
+                <dd>
+                    <div class="fl">单据编号:</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaCode}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">考核单位:</div>
+                    <div class="fr grey" title="{{vendorPerformanceAssess.enterprise.enName}}">{{vendorPerformanceAssess.enterprise.enName}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">考核期间:</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaAssessdate}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">采购限单:</div>
+                    <div class="fr grey" title="{{vendorPerformanceAssess.vpaPurchasename}}">{{vendorPerformanceAssess.vpaPurchasename}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">SQE:</div>
+                    <div class="fr grey" title="{{vendorPerformanceAssess.vpaSqename}}">{{vendorPerformanceAssess.vpaSqename}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">物料认定:</div>
+                    <div class="fr grey" title="{{vendorPerformanceAssess.vpaOrdername}}">{{vendorPerformanceAssess.vpaOrdername}}</div>
+                </dd>
+
+                <dd>
+                    <div class="fl">物料类别:</div>
+                    <div class="fr grey" title="{{vendorPerformanceAssess.vpaProdkind}}">{{vendorPerformanceAssess.vpaProdkind}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">审核日期:</div>
+                    <div class="fr grey">{{vendorPerformanceAssess.vpaAuditdate | date: 'yyyy年MM月dd日 hh:mm'}}</div>
+                </dd>
+                <dd>
+                    <div class="fl">审核人:</div>
+                    <div class="fr grey" title="{{vendorPerformanceAssess.vpaAuditor}}">{{vendorPerformanceAssess.vpaAuditor}}</div>
+                </dd>
+
+            </dl>
+            <div class="com_title01"><span>质量评分</span></div>
+            <div class="supply-list01 pro-info clearfix">
+                <dl>
+                    <dd>
+                        <div class="fl">来料批不合格率(15分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaLlpbhgl}}</div>
+                    </dd>
+
+                    <dd>
+                        <div class="fl">上线不良率(25分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaSxbll}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">客户失效次数(10分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaKhsxcs}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">产线重大异常(10分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaCxzdyc}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">8D回复及时率(5分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpa8dhfjsl}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">异常复发率(10分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaYcffl}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">供方配合度(25分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaGfphd}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">质量综合得分:</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaZlzhdf}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">质量权重得分(30%):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaZlqzdf}}</div>
+                    </dd>
+                </dl>
+            </div>
+            <div class="com_title01"><span>技术评分</span><</div>
+            <div class="supply-list01 pro-info clearfix">
+                <dl>
+                    <dd>
+                        <div class="fl">技术支持(10分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaJszc}}</div>
+                    </dd>
+
+                    <dd>
+                        <div class="fl">技术标准(10分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaJsbz}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">技术分析(10分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaJsfx}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">技术资料完整情况(15分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaJszlwzqk}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">样品合格率(5分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaYphgl}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">研发/工程实力(10分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaGcsl}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">可靠性要求/条件(25分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaKkxyq}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">物料是否发生技术质量问题(20分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaWlsffsjszlwt}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">技术综合得分:</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaJszhdf}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">技术权重得分(30%):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaJsqzdf}}</div>
+                    </dd>
+                </dl>
+            </div>
+            <div class="com_title01"><span>采购评分</span></div>
+            <div class="supply-list01 pro-info clearfix">
+                <dl>
+                    <dd>
+                        <div class="fl">成本降价(50分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaCbjj}}</div>
+                    </dd>
+
+                    <dd>
+                        <div class="fl">支付条件(20分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaZftj}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">打样支持(15分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaDyzc}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">服务支持(15分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaFwzc}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">采购开发综合得分:</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaCgkfzhdf}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">物料交付(50分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaWljf}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">停线/调计划次数(30分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaDjhcs}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">NG品处理(10分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaNgpcl}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">服务响应(10分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaFwxl}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">采购综合得分:</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaCgzhdf}}</div>
+                    </dd>
+                    <dd>
+                        <div class="fl">采购及采购开发权重得分(各20%):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaCgjcgkfqzdf}}</div>
+                    </dd>
+                </dl>
+            </div>
+            <div class="com_title01"><span>总评</span></div>
+            <div class="supply-list01 pro-info clearfix">
+                <dl>
+                    <dd>
+                        <div class="fl">总计得分):</div>
+                        <div class="fr grey">{{vendorPerformanceAssess.vpaZjdf}}</div>
+                    </dd>
+                </dl>
+            </div>
+        </div>
+	</div>
+</div>
+</body>
+</html>