Ver código fonte

Merge branch 'dev' of ssh://10.10.101.21/source/platform-b2b into debug

wangmh 9 anos atrás
pai
commit
0263a93eb2
39 arquivos alterados com 1619 adições e 303 exclusões
  1. 121 19
      src/main/java/com/uas/platform/b2b/controller/FileController.java
  2. 3 4
      src/main/java/com/uas/platform/b2b/dao/DeputyOrderDao.java
  3. 9 0
      src/main/java/com/uas/platform/b2b/dao/InvitationRecordDao.java
  4. 15 6
      src/main/java/com/uas/platform/b2b/dao/VendorDao.java
  5. 9 2
      src/main/java/com/uas/platform/b2b/erp/controller/PurchaseProdInOutController.java
  6. 43 0
      src/main/java/com/uas/platform/b2b/erp/controller/VendorRateController.java
  7. 74 0
      src/main/java/com/uas/platform/b2b/erp/model/ErpInviteRecord.java
  8. 13 1
      src/main/java/com/uas/platform/b2b/erp/model/InquiryDetail.java
  9. 179 0
      src/main/java/com/uas/platform/b2b/erp/model/InquiryVendorInfo.java
  10. 10 0
      src/main/java/com/uas/platform/b2b/erp/model/SaleDownDetail.java
  11. 32 0
      src/main/java/com/uas/platform/b2b/erp/service/VendorService.java
  12. 188 0
      src/main/java/com/uas/platform/b2b/erp/service/impl/VendorServiceImpl.java
  13. 239 161
      src/main/java/com/uas/platform/b2b/listener/MessageListener.java
  14. 44 0
      src/main/java/com/uas/platform/b2b/model/InvitationRecord.java
  15. 20 0
      src/main/java/com/uas/platform/b2b/model/PurchaseOrderAllItem.java
  16. 30 6
      src/main/java/com/uas/platform/b2b/model/Vendor.java
  17. 11 4
      src/main/java/com/uas/platform/b2b/service/PurchaseApBillService.java
  18. 2 0
      src/main/java/com/uas/platform/b2b/service/impl/BaseInfoServiceImpl.java
  19. 23 43
      src/main/java/com/uas/platform/b2b/service/impl/DeputyOrderServiceImpl.java
  20. 33 18
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseApBillServiceImpl.java
  21. 1 1
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java
  22. 248 0
      src/main/java/com/uas/platform/b2b/support/FileUploadHttp.java
  23. 30 0
      src/main/java/com/uas/platform/b2b/support/MessageConf.java
  24. 16 0
      src/main/java/com/uas/platform/b2b/support/SysConf.java
  25. 14 0
      src/main/java/com/uas/platform/b2b/temporary/model/ChangeAdminDetail.java
  26. 12 2
      src/main/java/com/uas/platform/b2b/temporary/model/OrderItems.java
  27. 20 15
      src/main/java/com/uas/platform/b2b/v2/controller/EnterpriseController.java
  28. 31 0
      src/main/java/com/uas/platform/b2b/v2/controller/PartnerShipController.java
  29. 14 0
      src/main/java/com/uas/platform/b2b/v2/service/PartnerShipService.java
  30. 42 10
      src/main/java/com/uas/platform/b2b/v2/service/impl/ChangeAdminServiceImpl.java
  31. 59 0
      src/main/java/com/uas/platform/b2b/v2/service/impl/PartnerShipServiceImpl.java
  32. 4 2
      src/main/resources/dev/message.properties
  33. 2 0
      src/main/resources/dev/sys.properties
  34. 3 1
      src/main/resources/prod/message.properties
  35. 2 0
      src/main/resources/prod/sys.properties
  36. 3 1
      src/main/resources/test/message.properties
  37. 2 0
      src/main/resources/test/sys.properties
  38. 17 6
      src/main/webapp/resources/js/index/app.js
  39. 1 1
      src/main/webapp/resources/tpl/index/purc/addOrder.html

+ 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;
+    }
+
 }

+ 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);
+
 }

+ 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);
 	}
 }

+ 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();
 	}
 
 	/**

+ 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);
+}

+ 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);
+    }
+}

+ 239 - 161
src/main/java/com/uas/platform/b2b/listener/MessageListener.java

@@ -20,123 +20,198 @@ import java.util.Set;
 /**
  * 监听新增数据事件
  * 生成对应消息
- *
  */
 @Component
 public class MessageListener implements ApplicationListener<SaveReleaseEvent<?, ?>> {
 
-	@Autowired
-	private PagingReleaseDetailDao pagingReleaseDetailDao;
+    @Autowired
+    private PagingReleaseDetailDao pagingReleaseDetailDao;
 
-	@Autowired
-	private VendorDao vendorDao;
+    @Autowired
+    private VendorDao vendorDao;
 
-	@Autowired
-	private RoleDao roleDao;
+    @Autowired
+    private EnterpriseDao enterpriseDao;
 
-	@Autowired
-	private UserDao userDao;
+    @Autowired
+    private RoleDao roleDao;
 
-	@Autowired
-	private DistributeDao distributeDao;
+    @Autowired
+    private UserDao userDao;
 
-	@Autowired
-	private MobileReleaseService mobileReleaseService;
+    @Autowired
+    private DistributeDao distributeDao;
 
-	@Autowired
-	private CommonDao commonDao;
+    @Autowired
+    private MobileReleaseService mobileReleaseService;
 
-	@Autowired
-	private PurcInquiryItemDao purcInquiryItemDao;
+    @Autowired
+    private CommonDao commonDao;
 
-	@SuppressWarnings("unchecked")
-	@Async
-	@Override
-	public void onApplicationEvent(final SaveReleaseEvent<?, ?> event) {
-		List<PagingReleaseDetail> pagingReleaseDetails = (List<PagingReleaseDetail>) event.release();
-		Set<Long> userUUs = new HashSet<>(); // 存储需要接收消息的用户UU
-		List<PagingReleaseDetail> otherReleaseDetails = new ArrayList<>(); // 用来保存单据新增的其他消息
-		// ERP公共询价比较特殊,单独处理
-		if (event instanceof PurcInquirySaveReleaseEvent) {
-			for(PagingReleaseDetail detail : pagingReleaseDetails) {
-				PurcInquiryItem item = purcInquiryItemDao.findOne(detail.getPagingRelease().getSourceId());
-				if (null != item) {
-					//先取出企业uu
-					// 产品库存在
-					String prodSql = "select distinct pr_enuu enuu from products p left join purc$vendors v " +
-							"on v.ve_vendenuu = p.pr_enuu where p.pr_title = '" + item.getProduct().getTitle() + "' " +
-							"and v.ve_myenuu = " + item.getInquiry().getEnUU();
-					// 询价单已报价的
-					String inquirySql = "select distinct id_venduu enuu from purc$inquiryitems d left join purc$inquiry n " +
-							"on n.in_id = d.id_inid left join products p on p.pr_id = d.id_prid where d.id_status = 201 " +
-							"and p.pr_title = '" + item.getProduct().getTitle() + "' and n.in_enuu = " + item.getInquiry().getEnUU();
-					// 下过采购订单的
-					String orderSql = "select distinct pu_venduu enuu from purc$orders pu left join purc$orderitems pd " +
-							"on pu.pu_id = pd.pd_puid left join products p on p.pr_id = pd.pd_prid " +
-							"where p.pr_title = '" + item.getProduct().getTitle() + "' and pu.pu_enuu = " + item.getInquiry().getEnUU();
-					// 主动报价过的
-					String quotationSql = "select distinct qu_enuu enuu from sale$quotation qu left join sale$quotationitem qd" +
-							" on qu.qu_id = qd.qd_quid left join products p on qd.qd_prid = p.pr_id " +
-							"where p.pr_title = '" + item.getProduct().getTitle() + "' and qu.qu_custuu = " + item.getInquiry().getEnUU();
-					List<UserAndEnterprise> prodEnUUs = commonDao.query(prodSql, UserAndEnterprise.class);
-					List<UserAndEnterprise> inquiryEnUUs = commonDao.query(inquirySql, UserAndEnterprise.class);
-					List<UserAndEnterprise> orderEnUUs = commonDao.query(orderSql, UserAndEnterprise.class);
-					List<UserAndEnterprise> quotationEnUUs = commonDao.query(quotationSql, UserAndEnterprise.class);
-					List<UserAndEnterprise> enuus = new ArrayList<>();
-					Set<Long> enUUs = new HashSet<>();
-					enuus.addAll(prodEnUUs);
-					enuus.addAll(inquiryEnUUs);
-					enuus.addAll(orderEnUUs);
-					enuus.addAll(quotationEnUUs);
-					// enuus存在才进行人员选择
-					if(enuus.size() > 0) {
-						for(UserAndEnterprise enter : enuus) {
-							if (!enUUs.contains(enter.getEnuu())) {
-								List<UserAndEnterprise> useruus =  commonDao.query(
-										"select user_uu useruu from sec$userrole u left join sec$roles r on u.role_id = r.role_id where r.role_desc = '业务员' and r.role_enuu = " + enter.getEnuu(),
-										UserAndEnterprise.class);
-								if (CollectionUtils.isEmpty(useruus)) {
-									useruus =  commonDao.query(
-											"select user_uu useruu from sec$userrole u left join sec$roles r on u.role_id = r.role_id where r.role_desc = '管理员' and r.role_enuu = " + enter.getEnuu(),
-											UserAndEnterprise.class);
-								}
-								// 新增消息
-								for (UserAndEnterprise userAndEnterprise : useruus) {
-									Long userUU = userAndEnterprise.getUseruu();
-									try { //去除userUU为空值的情况
-										if (null != userUU) {
-											User user = userDao.findOne(userUU);
-											if (null != user) {
-												PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(enter.getEnuu(), userUU, user.getUserName());
-												pagingReleaseDetail.setPagingRelease(detail.getPagingRelease());
-												otherReleaseDetails.add(pagingReleaseDetail);
-											}
-										}
-									} catch (RuntimeException e) {
-										e.printStackTrace();
-									}
-								}
-								enUUs.add(enter.getEnuu());
-							}
-						}
-					}
-				}
-			}
-			// 公共询价消息暂时不采用手机推送
-			pagingReleaseDetailDao.save(otherReleaseDetails);
-			// 询价单单独处理(使用共用方法会出现,分别给两个企业发同一张询价单,两个企业都存在的用户会只收到其中一个企业的一条消息。)
-//		} else if (event instanceof PurchaseInquiryItemSaveReleaseEvent || event instanceof PurchaseInquiryItemInvalidReleaseEvent || event instanceof PurchaseInquiryItemDecideReleaseEvent) {
+    @Autowired
+    private PurcInquiryItemDao purcInquiryItemDao;
 
-		} else {
-			for (PagingReleaseDetail detail : pagingReleaseDetails) {
-				// 先将产生的一条记录加入保存列表,去掉用1补充空值的情况
-				if (detail.getVendUserUU() != 1 && !userUUs.contains(detail.getVendUserUU())) {
-					userUUs.add(detail.getVendUserUU());
-				}
-				PagingRelease release = detail.getPagingRelease();
-				if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
-					if (release.getToVendor() == Constant.YES) { // 如果是发给供应商的消息,才会管理员和有权限用户都可以收到消息--2017年8月24日 16:12:05加,避免客户方用户收到太多消息
-						// 添加管理员
+    @SuppressWarnings("unchecked")
+    @Async
+    @Override
+    public void onApplicationEvent(final SaveReleaseEvent<?, ?> event) {
+        List<PagingReleaseDetail> pagingReleaseDetails = (List<PagingReleaseDetail>) event.release();
+        List<PagingReleaseDetail> otherReleaseDetails = new ArrayList<>(); // 用来保存单据新增的其他消息
+        // ERP公共询价比较特殊,单独处理
+        if (event instanceof PurcInquirySaveReleaseEvent) {
+            for (PagingReleaseDetail detail : pagingReleaseDetails) {
+                PurcInquiryItem item = purcInquiryItemDao.findOne(detail.getPagingRelease().getSourceId());
+                if (null != item) {
+                    //先取出企业uu
+                    // 产品库存在
+                    String prodSql = "select distinct pr_enuu enuu from products p left join purc$vendors v " +
+                            "on v.ve_vendenuu = p.pr_enuu where p.pr_title = '" + item.getProduct().getTitle() + "' " +
+                            "and v.ve_myenuu = " + item.getInquiry().getEnUU();
+                    // 询价单已报价的
+                    String inquirySql = "select distinct id_venduu enuu from purc$inquiryitems d left join purc$inquiry n " +
+                            "on n.in_id = d.id_inid left join products p on p.pr_id = d.id_prid where d.id_status = 201 " +
+                            "and p.pr_title = '" + item.getProduct().getTitle() + "' and n.in_enuu = " + item.getInquiry().getEnUU();
+                    // 下过采购订单的
+                    String orderSql = "select distinct pu_venduu enuu from purc$orders pu left join purc$orderitems pd " +
+                            "on pu.pu_id = pd.pd_puid left join products p on p.pr_id = pd.pd_prid " +
+                            "where p.pr_title = '" + item.getProduct().getTitle() + "' and pu.pu_enuu = " + item.getInquiry().getEnUU();
+                    // 主动报价过的
+                    String quotationSql = "select distinct qu_enuu enuu from sale$quotation qu left join sale$quotationitem qd" +
+                            " on qu.qu_id = qd.qd_quid left join products p on qd.qd_prid = p.pr_id " +
+                            "where p.pr_title = '" + item.getProduct().getTitle() + "' and qu.qu_custuu = " + item.getInquiry().getEnUU();
+                    List<UserAndEnterprise> prodEnUUs = commonDao.query(prodSql, UserAndEnterprise.class);
+                    List<UserAndEnterprise> inquiryEnUUs = commonDao.query(inquirySql, UserAndEnterprise.class);
+                    List<UserAndEnterprise> orderEnUUs = commonDao.query(orderSql, UserAndEnterprise.class);
+                    List<UserAndEnterprise> quotationEnUUs = commonDao.query(quotationSql, UserAndEnterprise.class);
+                    List<UserAndEnterprise> enuus = new ArrayList<>();
+                    Set<Long> enUUs = new HashSet<>();
+                    enuus.addAll(prodEnUUs);
+                    enuus.addAll(inquiryEnUUs);
+                    enuus.addAll(orderEnUUs);
+                    enuus.addAll(quotationEnUUs);
+                    // enuus存在才进行人员选择
+                    if (enuus.size() > 0) {
+                        for (UserAndEnterprise enter : enuus) {
+                            if (!enUUs.contains(enter.getEnuu())) {
+                                List<UserAndEnterprise> useruus = commonDao.query(
+                                        "select user_uu useruu from sec$userrole u left join sec$roles r on u.role_id = r.role_id where r.role_desc = '业务员' and r.role_enuu = " + enter.getEnuu(),
+                                        UserAndEnterprise.class);
+                                if (CollectionUtils.isEmpty(useruus)) {
+                                    useruus = commonDao.query(
+                                            "select user_uu useruu from sec$userrole u left join sec$roles r on u.role_id = r.role_id where r.role_desc = '管理员' and r.role_enuu = " + enter.getEnuu(),
+                                            UserAndEnterprise.class);
+                                }
+                                // 新增消息
+                                for (UserAndEnterprise userAndEnterprise : useruus) {
+                                    Long userUU = userAndEnterprise.getUseruu();
+                                    try { //去除userUU为空值的情况
+                                        if (null != userUU) {
+                                            User user = userDao.findOne(userUU);
+                                            if (null != user) {
+                                                PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(enter.getEnuu(), userUU, user.getUserName());
+                                                pagingReleaseDetail.setPagingRelease(detail.getPagingRelease());
+                                                otherReleaseDetails.add(pagingReleaseDetail);
+                                            }
+                                        }
+                                    } catch (RuntimeException e) {
+                                        e.printStackTrace();
+                                    }
+                                }
+                                enUUs.add(enter.getEnuu());
+                            }
+                        }
+                    }
+                }
+            }
+            // 公共询价消息暂时不采用手机推送
+            pagingReleaseDetailDao.save(otherReleaseDetails);
+            // 询价单单独处理 优先发送给分配过客户的用户,如果不存在就发送给企业管理员
+        } else if (event instanceof PurchaseInquiryItemSaveReleaseEvent || event instanceof PurchaseInquiryItemInvalidReleaseEvent || event instanceof PurchaseInquiryItemDecideReleaseEvent) {
+            for (PagingReleaseDetail detail : pagingReleaseDetails) {
+                Set<Long> userUUs = new HashSet<>(); // 存储需要接收消息的用户UU
+                PagingRelease release = detail.getPagingRelease();
+                if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
+                    List<Vendor> vendors;
+                    // 判断提前,防止客户方收到过多单据提示消息
+//					if (release.getToVendor() == Constant.YES) { // 消息接收方为供应商,查找供应商表方式不同
+                    vendors = vendorDao.findByMyEnUUAndVendUU(release.getEnUU(), detail.getVendUU());
+                    // 不添加供应商联系人
+//                    if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getVendUserUU())) {
+//                        userUUs.add(vendors.get(0).getVendUserUU());
+//                    }
+//					} else { // 消息接收方为客户,查找供应商表方式不同
+//						vendors = vendorDao.findByMyEnUUAndVendUU(detail.getVendUU(), release.getEnUU());
+//						if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getMyUserUU())) {
+//							userUUs.add(vendors.get(0).getMyUserUU());
+//						}
+//					}
+                    // 查找被分配客户的用户
+                    if (!CollectionUtils.isEmpty(vendors)) {
+                        Long vendorId = vendors.get(0).getId();
+                        List<Distribute> distributes = distributeDao.findByVendorId(vendorId);
+                        // 找出当前企业拥有管理员权限的角色
+                        List<Role> roles = roleDao.findByEnUUAndIssys(detail.getVendUU(), Constant.YES);
+                        Set<Long> adminUUs = new HashSet<>();
+                        if (!CollectionUtils.isEmpty(roles)) {
+                            List<User> admins = userDao.findByRole(roles.get(0).getId());
+                            for (User admin : admins) {
+                                adminUUs.add(admin.getUserUU());
+                            }
+                        }
+                        if (!CollectionUtils.isEmpty(distributes)) {
+                            for (Distribute distribute : distributes) {
+                                if (!userUUs.contains(distribute.getUserUU()) && !adminUUs.contains(distribute.getUserUU())) {
+                                    userUUs.add(distribute.getUserUU());
+                                }
+                            }
+                        }
+                    }
+                    // 新增消息
+                    if (!CollectionUtils.isEmpty(userUUs)) {
+                        for (Long userUU : userUUs) {
+                            try { //去除userUU为空值的情况
+                                if (null != userUU) {
+                                    User user = userDao.findOne(userUU);
+                                    if (null != user) {
+                                        PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), userUU, user.getUserName());
+                                        pagingReleaseDetail.setPagingRelease(release);
+                                        otherReleaseDetails.add(pagingReleaseDetail);
+                                    }
+                                }
+                            } catch (RuntimeException e) {
+                                e.getStackTrace();
+                            }
+                        }
+                    } else {
+                        Enterprise vendor = enterpriseDao.findOne(detail.getVendUU());
+                        if (null != vendor && null != vendor.getEnAdminuu() && null != vendor.getAdmin()) {
+                            PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), vendor.getEnAdminuu(), vendor.getAdmin().getUserName());
+                            pagingReleaseDetail.setPagingRelease(release);
+                            otherReleaseDetails.add(pagingReleaseDetail);
+                        }
+                    }
+                }
+            }
+            otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
+            if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
+                pagingReleaseDetails.addAll(otherReleaseDetails);
+            }
+            try { // 推送消息
+                mobileReleaseService.pushReleases(pagingReleaseDetails);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else {
+            for (PagingReleaseDetail detail : pagingReleaseDetails) {
+                Set<Long> userUUs = new HashSet<>(); // 存储需要接收消息的用户UU
+                // 先将产生的一条记录加入保存列表,去掉用1补充空值的情况
+                if (detail.getVendUserUU() != 1 && !userUUs.contains(detail.getVendUserUU())) {
+                    userUUs.add(detail.getVendUserUU());
+                }
+                PagingRelease release = detail.getPagingRelease();
+                if (null != detail.getVendUU() && null != release.getEnUU()) { // 确保消息有效才继续
+                    if (release.getToVendor() == Constant.YES) { // 如果是发给供应商的消息,才会管理员和有权限用户都可以收到消息--2017年8月24日 16:12:05加,避免客户方用户收到太多消息
+                        // 添加管理员
 //					List<Role> roles = roleDao.findByEnUUAndIssys(detail.getVendUU(), Constant.YES);
 //					if (!CollectionUtils.isEmpty(roles)) {
 //						List<User> admins = userDao.findByRole(roles.get(0).getId());
@@ -146,68 +221,71 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
 //							}
 //						}
 //					}
-						List<Vendor> vendors;
-						// 判断提前,防止客户方收到过多单据提示消息
+                        List<Vendor> vendors;
+                        // 判断提前,防止客户方收到过多单据提示消息
 //					if (release.getToVendor() == Constant.YES) { // 消息接收方为供应商,查找供应商表方式不同
-						vendors = vendorDao.findByMyEnUUAndVendUU(release.getEnUU(), detail.getVendUU());
-						if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getVendUserUU())) {
-							userUUs.add(vendors.get(0).getVendUserUU());
-						}
+                        vendors = vendorDao.findByMyEnUUAndVendUU(release.getEnUU(), detail.getVendUU());
+                        // 不添加供应商联系人
+//                        if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getVendUserUU())) {
+//                            userUUs.add(vendors.get(0).getVendUserUU());
+//                        }
 //					} else { // 消息接收方为客户,查找供应商表方式不同
 //						vendors = vendorDao.findByMyEnUUAndVendUU(detail.getVendUU(), release.getEnUU());
 //						if (!CollectionUtils.isEmpty(vendors) && !userUUs.contains(vendors.get(0).getMyUserUU())) {
 //							userUUs.add(vendors.get(0).getMyUserUU());
 //						}
 //					}
-						// 查找有权限的用户
-						if (!CollectionUtils.isEmpty(vendors)) {
-							Long vendorId = vendors.get(0).getId();
-							List<Distribute> distributes = distributeDao.findByVendorId(vendorId);
-							if (!CollectionUtils.isEmpty(distributes)) {
-								// 去掉已将权限转移的管理员
-								Set<Long> leaderUUs = new HashSet<>();
-								for (Distribute distribute : distributes) {
-									if (null != distribute.getIsTransfer() && distribute.getIsTransfer() == Constant.YES && distribute.getLeaderUU() != null
-											&& !leaderUUs.contains(distribute.getLeaderUU())) {
-										leaderUUs.add(distribute.getLeaderUU());
-									}
-								}
-								for (Distribute distribute : distributes) {
-									if (!userUUs.contains(distribute.getUserUU()) && !leaderUUs.contains(distribute.getUserUU())) {
-										userUUs.add(distribute.getUserUU());
-									}
-								}
-							}
-						}
-						// 新增消息
-						for (Long userUU : userUUs) {
-							try { //去除userUU为空值的情况
-								if (null != userUU) {
-									User user = userDao.findOne(userUU);
-									if (null != user) {
-										PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), userUU, user.getUserName());
-										pagingReleaseDetail.setPagingRelease(release);
-										otherReleaseDetails.add(pagingReleaseDetail);
-									}
-								}
-							} catch (RuntimeException e) {
-								e.getStackTrace();
-							}
-						}
-					} else { // 发送给客户方的,直接添加消息到保存列表
-						otherReleaseDetails.add(detail);
-					}
-				}
-			}
-			otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
-			if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
-				pagingReleaseDetails.addAll(otherReleaseDetails);
-			}
-			try { // 推送消息
-				mobileReleaseService.pushReleases(pagingReleaseDetails);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-	}
+                        // 查找有权限的用户
+                        if (!CollectionUtils.isEmpty(vendors)) {
+                            Long vendorId = vendors.get(0).getId();
+                            List<Distribute> distributes = distributeDao.findByVendorId(vendorId);
+                            if (!CollectionUtils.isEmpty(distributes)) {
+                                // 找出当前企业拥有管理员权限的角色
+                                List<Role> roles = roleDao.findByEnUUAndIssys(detail.getVendUU(), Constant.YES);
+                                Set<Long> adminUUs = new HashSet<>();
+                                if (!CollectionUtils.isEmpty(roles)) {
+                                    List<User> admins = userDao.findByRole(roles.get(0).getId());
+                                    for (User admin : admins) {
+                                        adminUUs.add(admin.getUserUU());
+                                    }
+                                }
+                                // 被分配客户的,且不是管理员的用户才接收消息
+                                for (Distribute distribute : distributes) {
+                                    if (!userUUs.contains(distribute.getUserUU()) && !adminUUs.contains(distribute.getUserUU())) {
+                                        userUUs.add(distribute.getUserUU());
+                                    }
+                                }
+                            }
+                        }
+                        // 新增消息
+                        for (Long userUU : userUUs) {
+                            try { //去除userUU为空值的情况
+                                if (null != userUU) {
+                                    User user = userDao.findOne(userUU);
+                                    if (null != user) {
+                                        PagingReleaseDetail pagingReleaseDetail = new PagingReleaseDetail(detail.getVendUU(), userUU, user.getUserName());
+                                        pagingReleaseDetail.setPagingRelease(release);
+                                        otherReleaseDetails.add(pagingReleaseDetail);
+                                    }
+                                }
+                            } catch (RuntimeException e) {
+                                e.getStackTrace();
+                            }
+                        }
+                    } else { // 发送给客户方的,直接添加消息到保存列表
+                        otherReleaseDetails.add(detail);
+                    }
+                }
+            }
+            otherReleaseDetails = pagingReleaseDetailDao.save(otherReleaseDetails);
+            if (!CollectionUtils.isEmpty(otherReleaseDetails)) {
+                pagingReleaseDetails.addAll(otherReleaseDetails);
+            }
+            try { // 推送消息
+                mobileReleaseService.pushReleases(pagingReleaseDetails);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
 }

+ 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;
+	}
 }

+ 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);
 }

+ 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);
+			}
+		}
+	}
+
 }

+ 1 - 1
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java

@@ -111,7 +111,7 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 		inquiryItems = purchaseInquiryItemDao.save(inquiryItems);
 		saveUserOrders(inquiryItems);
 		sendRemind(PurchaseInquiryItem.distinct(inquiryItems));
-		ContextUtils.publishEvent(new PurchaseInquiryItemSaveEvent(inquiryItems));
+//		ContextUtils.publishEvent(new PurchaseInquiryItemSaveEvent(inquiryItems));  // 之前的索引分词,已弃用
 		sendMessage(inquiryItems);
 	}
 

+ 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 - 2
src/main/resources/dev/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
+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

+ 17 - 6
src/main/webapp/resources/js/index/app.js

@@ -2978,7 +2978,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                     $scope.tableParams.page(1);
             }
         };
-        
+
         $scope.searchMethod = false;
         // 切换数据来源(正常数据 or 历史数据)
         var getService = function () {
@@ -13905,7 +13905,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'
                 });
             }
         };
@@ -13960,7 +13961,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'
             });
         };
 
@@ -13985,7 +13987,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'
                     });
                 })
 
@@ -16411,8 +16414,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);
@@ -16520,7 +16525,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) + '行产品名称未填写');
@@ -16894,8 +16901,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);
@@ -17003,7 +17012,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) + '行产品名称未填写');

+ 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="" />