Forráskód Böngészése

处理物料字段变更冲突问题

hejq 7 éve
szülő
commit
617cf43c37

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

@@ -84,7 +84,7 @@ public class PurchaseAPBillController {
 	 */
 	@RequestMapping(value = "/APBillAdjustment", method = RequestMethod.POST)
 	@ResponseBody
-	public void APBillAdjustment(@RequestParam("data") String data) throws UnsupportedEncodingException {
+	public void APBillAdjustment(@RequestParam("data") String data) throws Exception {
 		String jsonStr = URLDecoder.decode(data, "UTF-8");
 		List<PurchaseAPBill> apBills = FlexJsonUtils.fromJsonArray(jsonStr, PurchaseAPBill.class);
 		List<ApbillAdjustment> adjusts = purchaseAPBillService.convertApbillAdjustment(apBills);

+ 6 - 0
src/main/java/com/uas/platform/b2b/erp/controller/PurchaseForecastController.java

@@ -21,6 +21,12 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.List;
 
+/**
+ * 采购预测
+ * 
+ * @author hejq
+ * @date 2018-07-23 11:07
+ */
 @Controller
 @RequestMapping("/erp/purchase/forecast")
 public class PurchaseForecastController {

+ 29 - 4
src/main/java/com/uas/platform/b2b/erp/model/Make.java

@@ -1,20 +1,21 @@
 package com.uas.platform.b2b.erp.model;
 
-import java.sql.Date;
-import java.util.List;
-
 import com.uas.platform.b2b.model.EnterpriseInfo;
 import com.uas.platform.b2b.model.MakeOrder;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
 
+import java.sql.Date;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * ERP系统的委外加工单
  * 
  * @author suntg
  */
-public class Make {
+public class Make extends KeyEntity {
 
 	/**
 	 * id
@@ -362,4 +363,28 @@ public class Make {
 		return make;
 	}
 
+	/**
+	 * 主键值
+	 *
+	 * @return
+	 */
+	@Override
+	public Object getKey() {
+		return null;
+	}
+
+	/**
+	 * 获取物料编号
+	 * <per>
+	 * 有可能是主表带出明细数据,所以用List封装
+	 * </per>
+	 *
+	 * @return
+	 */
+	@Override
+	public List<String> getProductCode() {
+		List<String> codeStr = new ArrayList<>();
+		codeStr.add(this.ma_prodcode);
+		return codeStr;
+	}
 }

+ 28 - 6
src/main/java/com/uas/platform/b2b/erp/model/ProductSample.java

@@ -4,10 +4,7 @@ import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.support.SystemSession;
 import org.apache.commons.collections.CollectionUtils;
 
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * 买家ERP系统的打样申请单
@@ -15,7 +12,7 @@ import java.util.Set;
  * @author yingp
  * 
  */
-public class ProductSample {
+public class ProductSample extends KeyEntity {
 
 	private Long ps_id;
 	private String ps_code;
@@ -174,7 +171,7 @@ public class ProductSample {
 		proofing.setEnterprise(new EnterpriseInfo(SystemSession.getUser().getEnterprise()));
 		proofing.setEnvrequiry(ps_envrequire);
 		proofing.setIsCharge(ps_isfree);
-		Product product = new Product();
+		ProductInfo product = new ProductInfo();
 		product.setCode(ps_prodcode);
 		proofing.setProduct(product);
 		proofing.setRecorder(ps_recordor);
@@ -209,4 +206,29 @@ public class ProductSample {
 	public List<Attach> getAttaches() {
 		return attaches;
 	}
+
+	/**
+	 * 主键值
+	 *
+	 * @return
+	 */
+	@Override
+	public Object getKey() {
+		return null;
+	}
+
+	/**
+	 * 获取物料编号
+	 * <per>
+	 * 有可能是主表带出明细数据,所以用List封装
+	 * </per>
+	 *
+	 * @return
+	 */
+	@Override
+	public List<String> getProductCode() {
+		List<String> codeStr = new ArrayList<>();
+		codeStr.add(this.ps_prodcode);
+		return codeStr;
+	}
 }

+ 31 - 5
src/main/java/com/uas/platform/b2b/erp/model/PurchaseAPBill.java

@@ -7,10 +7,7 @@ import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Status;
 import org.springframework.util.CollectionUtils;
 
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * 采购方角度ERP应付票据单
@@ -19,7 +16,7 @@ import java.util.Set;
  * @date 2015年4月17日10:32:24
  *
  */
-public class PurchaseAPBill {
+public class PurchaseAPBill extends KeyEntity {
 
 	private Long ab_id;
 	private String ab_code;
@@ -254,4 +251,33 @@ public class PurchaseAPBill {
 		}
 		return apBill;
 	}
+
+	/**
+	 * 主键值
+	 *
+	 * @return
+	 */
+	@Override
+	public Object getKey() {
+		return null;
+	}
+
+	/**
+	 * 获取物料编号
+	 * <per>
+	 * 有可能是主表带出明细数据,所以用List封装
+	 * </per>
+	 *
+	 * @return
+	 */
+	@Override
+	public List<String> getProductCode() {
+	    List<String> codeStr = new ArrayList<>();
+		if (!CollectionUtils.isEmpty(details)) {
+            details.forEach(detail -> {
+                codeStr.add(detail.getAbd_prodcode());
+            });
+		}
+		return codeStr;
+	}
 }

+ 2 - 2
src/main/java/com/uas/platform/b2b/erp/model/PurchaseAPBillDetail.java

@@ -1,6 +1,6 @@
 package com.uas.platform.b2b.erp.model;
 
-import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.ProductInfo;
 import com.uas.platform.b2b.model.PurchaseApBillItem;
 import com.uas.platform.b2b.support.SystemSession;
 
@@ -151,7 +151,7 @@ public class PurchaseAPBillDetail {
 		apBillItem.setOrderDetno(abd_orderdetno);
 		apBillItem.setPdinoutNo(abd_pdinoutno);
 		apBillItem.setPrice(abd_price);
-		Product product = new Product();
+		ProductInfo product = new ProductInfo();
 		product.setCode(abd_prodcode);
 		product.setEnUU(SystemSession.getUser().getEnterprise().getUu());
 		apBillItem.setProduct(product);

+ 49 - 10
src/main/java/com/uas/platform/b2b/erp/model/PurchaseForecast.java

@@ -1,24 +1,33 @@
 package com.uas.platform.b2b.erp.model;
 
-import java.sql.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.springframework.util.CollectionUtils;
-
 import com.uas.platform.b2b.model.EnterpriseInfo;
 import com.uas.platform.b2b.model.PurchaseForecastAll;
 import com.uas.platform.b2b.model.PurchaseForecastAllItem;
 import com.uas.platform.b2b.support.SystemSession;
+import org.springframework.util.CollectionUtils;
+
+import java.sql.Date;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
-public class PurchaseForecast {
+/**
+ * 采购预测
+ *
+ * @author hejq
+ * @date 2018-07-23 11:01
+ */
+public class PurchaseForecast extends KeyEntity {
 	private Long pf_id;
 	private String pf_code;
 	private Date pf_date;
 	private String pf_kind;
 	private String pf_recorder;
-	private String pf_purpose;// 用途
+	/**
+	 * 用途
+	 */
+	private String pf_purpose;
 	private Long em_uu;
 	private List<PurchaseForecastDetail> purchaseForecastDetails;
 
@@ -97,7 +106,8 @@ public class PurchaseForecast {
 		forecast.setDate(this.pf_date);
 		forecast.setEnUU(SystemSession.getUser().getEnterprise().getUu());
 		forecast.setEnterprise(new EnterpriseInfo(SystemSession.getUser().getEnterprise()));
-		if (this.em_uu != null) {// ERP采购预测中采购员存在UU号
+		// ERP采购预测中采购员存在UU号
+		if (this.em_uu != null) {
 			forecast.setUserUU(this.em_uu);
 		}
 		forecast.setRecorder(this.pf_recorder);
@@ -113,4 +123,33 @@ public class PurchaseForecast {
 		forecast.setErpId(this.pf_id);
 		return forecast;
 	}
+
+	/**
+	 * 主键值
+	 *
+	 * @return
+	 */
+	@Override
+	public Object getKey() {
+		return null;
+	}
+
+	/**
+	 * 获取物料编号
+	 * <per>
+	 * 有可能是主表带出明细数据,所以用List封装
+	 * </per>
+	 *
+	 * @return
+	 */
+	@Override
+	public List<String> getProductCode() {
+	    List<String> codeStr = new ArrayList<>();
+		if (!CollectionUtils.isEmpty(purchaseForecastDetails)) {
+            purchaseForecastDetails.forEach(detail -> {
+                codeStr.add(detail.getPfd_prodcode());
+            });
+		}
+		return codeStr;
+	}
 }

+ 31 - 5
src/main/java/com/uas/platform/b2b/erp/model/PurchaseProdInOut.java

@@ -5,10 +5,7 @@ import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Status;
 import org.springframework.util.CollectionUtils;
 
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * 采购方角度ERP采购验收单
@@ -17,7 +14,7 @@ import java.util.Set;
  * @date 2015年4月17日10:32:24
  *
  */
-public class PurchaseProdInOut {
+public class PurchaseProdInOut extends KeyEntity {
 
 	/**
 	 * erp出入库单据的id
@@ -318,4 +315,33 @@ public class PurchaseProdInOut {
 		purchaseBadOut.setErpId(this.pi_id);
 		return purchaseBadOut;
 	}
+
+	/**
+	 * 主键值
+	 *
+	 * @return
+	 */
+	@Override
+	public Object getKey() {
+		return null;
+	}
+
+	/**
+	 * 获取物料编号
+	 * <per>
+	 * 有可能是主表带出明细数据,所以用List封装
+	 * </per>
+	 *
+	 * @return
+	 */
+	@Override
+	public List<String> getProductCode() {
+		List<String> codeStr = new ArrayList<>();
+		if (!CollectionUtils.isEmpty(details)) {
+            details.forEach(detail -> {
+                codeStr.add(detail.getPd_prodcode());
+            });
+		}
+		return null;
+	}
 }

+ 1 - 1
src/main/java/com/uas/platform/b2b/erp/service/PurchaseAPBillService.java

@@ -30,7 +30,7 @@ public interface PurchaseAPBillService {
 	 * @param apBills
 	 * @return
 	 */
-	List<ApbillAdjustment> convertApbillAdjustment(List<PurchaseAPBill> apBills);
+	List<ApbillAdjustment> convertApbillAdjustment(List<PurchaseAPBill> apBills) throws Exception;
 
 	/**
 	 * 获取应付发票对应的平台的ID

+ 19 - 13
src/main/java/com/uas/platform/b2b/erp/service/impl/MakeServiceImpl.java

@@ -2,7 +2,10 @@ package com.uas.platform.b2b.erp.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.core.util.StringUtil;
-import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.dao.CommonDao;
+import com.uas.platform.b2b.dao.EnterpriseDao;
+import com.uas.platform.b2b.dao.MakeOrderDao;
+import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.erp.exception.ExceptionNote;
 import com.uas.platform.b2b.erp.model.Make;
 import com.uas.platform.b2b.erp.model.MakeEnd;
@@ -12,7 +15,9 @@ import com.uas.platform.b2b.erp.service.MakeService;
 import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.event.MakeOrderEndReleaseEvent;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.ps.ProductUtils;
 import com.uas.platform.b2b.service.NotExistProductService;
+import com.uas.platform.b2b.support.CollectionUtil;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
 import com.uas.platform.b2b.temporary.model.OrderType;
@@ -24,19 +29,20 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
+/**
+ * 委外工单
+ * 
+ * @author hejq
+ * @date 2018-07-23 11:10
+ */
 @Service
 public class MakeServiceImpl implements MakeService {
 
 	@Autowired
 	private MakeOrderDao makeOrderDao;
 
-	@Autowired
-	private ProductDao productDao;
-
 	@Autowired
 	private EnterpriseDao enterpriseDao;
 
@@ -60,28 +66,28 @@ public class MakeServiceImpl implements MakeService {
 		// 应用来源
         final String appId = "uas";
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
+        // 获取物料编号集合
+        Set<String> productCodes = CollectionUtil.getProductCodeCollection(makes);
+        Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, productCodes);
 		for (Make make : makes) {
 			List<MakeOrder> orders = makeOrderDao.findByEnUUAndCode(enUU, make.getMa_code());
 			Enterprise vendor = enterpriseDao.findEnterpriseByUu(make.getVe_uu());
-			List<Product> products = productDao.findByEnUUAndCode(enUU, make.getMa_prodcode());
+			ProductInfo product = products.get(make.getProductCode());
             List<NotExistProduct> notExistProducts = new ArrayList<>();
             String sign = "";
-            if (!CollectionUtils.isEmpty(products)) {
+            if (null != product) {
 				if (orders.size() == 0 && vendor != null) {
 					MakeOrder makeOrder = make.convert();
-					Product product = products.get(0);
 					makeOrder.setProduct(product);
 					makeOrder.setProductId(product.getId());
 					List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(enUU, make.getVe_uu());
-					Vendor vend = new Vendor();
+					Vendor vend = vendors.get(0);
 					if (CollectionUtils.isEmpty(vendors)) {
 						vend = addVendor(make);
 						if (null != vend) {
 							// 添加合作伙伴
 							vendorService.addPartnerShipRecord(vend, appId);
 						}
-					} else {
-						vend = vendors.get(0);
 					}
 					makeOrder.setUserUU(vend.getMyUserUU());
 					makeOrder.setVendUserUU(vend.getVendUserUU());

+ 19 - 15
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseAPBillServiceImpl.java

@@ -1,31 +1,32 @@
 package com.uas.platform.b2b.erp.service.impl;
 
 import com.uas.platform.b2b.dao.EnterpriseDao;
-import com.uas.platform.b2b.dao.ProductDao;
 import com.uas.platform.b2b.dao.PurchaseApBillDao;
 import com.uas.platform.b2b.erp.model.PurchaseAPBill;
 import com.uas.platform.b2b.erp.model.PurchaseAPBillDetail;
 import com.uas.platform.b2b.erp.service.PurchaseAPBillService;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.ps.ProductUtils;
+import com.uas.platform.b2b.support.CollectionUtil;
 import com.uas.platform.b2b.support.SystemSession;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
 
+/**
+ * 应付发票
+ * 
+ * @author hejq
+ * @date 2018-07-23 11:16
+ */
 @Service
 public class PurchaseAPBillServiceImpl implements PurchaseAPBillService {
 
 	@Autowired
 	private PurchaseApBillDao purchaseApBillDao;
 
-	@Autowired
-	private ProductDao productDao;
-
 	@Autowired
 	private EnterpriseDao enterpriseDao;
 
@@ -33,6 +34,9 @@ public class PurchaseAPBillServiceImpl implements PurchaseAPBillService {
 	public List<PurchaseApBillItem> convertApBills(List<PurchaseAPBill> apBills) {
 		List<PurchaseApBillItem> apBillItems = new ArrayList<PurchaseApBillItem>();
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
+        // 获取物料编号集合
+        Set<String> productCodes = CollectionUtil.getProductCodeCollection(apBills);
+        Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, productCodes);
 		for (PurchaseAPBill apBill : apBills) {
 			List<PurchaseApBill> apBills2 = purchaseApBillDao.findByEnUUAndCode(enUU, apBill.getAb_code());
 			Enterprise vendor = enterpriseDao.findEnterpriseByUu(apBill.getAb_vendoruu());
@@ -41,12 +45,12 @@ public class PurchaseAPBillServiceImpl implements PurchaseAPBillService {
 				Iterator<PurchaseApBillItem> items = purchaseApBill.getItems().iterator();
 				while (items.hasNext()) {
 					PurchaseApBillItem apBillItem = items.next();
-					List<Product> products = productDao.findByEnUUAndCode(enUU, apBillItem.getProduct().getCode());
-					if (products.size() > 0) {
-						apBillItem.setProduct(products.get(0));
-						apBillItem.setProductId(products.get(0).getId());
+					ProductInfo product = products.get(apBillItem.getProductCode());
+					if (null != product) {
+						apBillItem.setProduct(product);
+						apBillItem.setProductId(product.getId());
 						apBillItem.setaPBill(purchaseApBill);
-						apBillItem.setErpDate(new Date());
+						apBillItem.setErpDate(new Date(System.currentTimeMillis()));
 						apBillItems.add(apBillItem);
 					} else {
 						items.remove();
@@ -73,7 +77,7 @@ public class PurchaseAPBillServiceImpl implements PurchaseAPBillService {
 	}
 
 	@Override
-	public List<ApbillAdjustment> convertApbillAdjustment(List<PurchaseAPBill> apBills) {
+	public List<ApbillAdjustment> convertApbillAdjustment(List<PurchaseAPBill> apBills) throws Exception {
 		List<ApbillAdjustment> adjusts = new ArrayList<ApbillAdjustment>();
 		if (!CollectionUtils.isEmpty(apBills)) {
 			Long enUU = SystemSession.getUser().getEnterprise().getUu();
@@ -99,7 +103,7 @@ public class PurchaseAPBillServiceImpl implements PurchaseAPBillService {
 						}
 						Enterprise enterprise = enterpriseDao.findEnterpriseByUu(adjust.getEnuu());
 						adjust.setReceivename(enterprise.getEnName());
-						List<Product> products = productDao.findByEnUUAndCode(enUU, adjust.getProdcode());
+						List<Product> products = ProductUtils.findByEnUUAndCode(enUU, adjust.getProdcode());
 						if (!CollectionUtils.isEmpty(products)) {
 							Product productInfo = products.get(0);
 							adjust.setPrid(productInfo.getId());

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

@@ -9,7 +9,6 @@ import com.uas.platform.b2b.erp.service.PurchaseChangeService;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.service.NotExistProductService;
 import com.uas.platform.b2b.support.SystemSession;
-import com.uas.platform.b2b.temporary.model.*;
 import com.uas.platform.b2b.temporary.model.OrderType;
 import com.uas.platform.core.model.Constant;
 import org.apache.axis.utils.StringUtils;
@@ -136,7 +135,6 @@ public class PurchaseChangeServiceImpl implements PurchaseChangeService {
 		changeItem.setOldDelivery(orderItem.getDelivery());
 		changeItem.setOldPrice(orderItem.getPrice());
 		changeItem.setOldProductId(orderItem.getProductId());
-		changeItem.setOldProduct(orderItem.getProduct());
 		changeItem.setOldQty(orderItem.getQty());
 		changeItem.setOldTaxrate(orderItem.getTaxrate());
 		changeItem.setOrderItemId(orderItem.getId());

+ 26 - 69
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseForecastServiceImpl.java

@@ -1,25 +1,32 @@
 package com.uas.platform.b2b.erp.service.impl;
 
-import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.dao.EnterpriseDao;
+import com.uas.platform.b2b.dao.PurchaseForecastAllDao;
+import com.uas.platform.b2b.dao.UserDao;
+import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.erp.model.PurchaseForecast;
 import com.uas.platform.b2b.erp.service.PurchaseForecastService;
 import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.ps.ProductUtils;
+import com.uas.platform.b2b.support.CollectionUtil;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Constant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
+/**
+ * 采购预测
+ *
+ * @author hejq
+ * @date 2018-07-23 10:58
+ */
 @Service
 public class PurchaseForecastServiceImpl implements PurchaseForecastService {
 
-	@Autowired
-	private ProductDao productDao;
 	@Autowired
 	private VendorDao vendorDao;
 	@Autowired
@@ -41,6 +48,9 @@ public class PurchaseForecastServiceImpl implements PurchaseForecastService {
 	public List<PurchaseForecastAllItem> convertPurchaseForecast(List<PurchaseForecast> purchaseForecasts) {
 		List<PurchaseForecastAllItem> items = new ArrayList<PurchaseForecastAllItem>();
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
+        // 获取物料编号集合
+        Set<String> productCodes = CollectionUtil.getProductCodeCollection(purchaseForecasts);
+        Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, productCodes);
 		for (PurchaseForecast purchaseForecast : purchaseForecasts) {
 			// 先查看是否已存在
 			List<PurchaseForecastAll> forecasts = purchaseForecastDao.findByEnUUAndCode(enUU,
@@ -60,19 +70,20 @@ public class PurchaseForecastServiceImpl implements PurchaseForecastService {
 					// 对明细遍历
 					for (PurchaseForecastAllItem item : forecast.getForecastItems()) {
 						item.setOrder(forecast);
-						if (item.getVendUU() != null) {// 明细中有供应商uu号
+						if (item.getVendUU() != null) {
 							List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(enUU, item.getVendUU());
 							Vendor vendor = null;
 							if (vendors.size() == 0) {
 								vendor = addVendor(item);
 								if (null != vendor) {
-									vendorService.addPartnerShipRecord(vendor, APPID); // 添加合作伙伴关系
+									// 添加合作伙伴关系
+									vendorService.addPartnerShipRecord(vendor, APPID);
 								}
 							} else {
 								vendor = vendors.get(0);
 							}
-							List<Product> products = productDao.findByEnUUAndCode(enUU, item.getProduct().getCode());
-							if (products.size() > 0 && vendor != null) {
+                            ProductInfo product = products.get(item.getProductCode());
+							if (null != product && vendor != null) {
 								item.setVendUU(vendor.getVendEnUU());
 								if (item.getVendUserUU() != null && item.getVendUserUU() != 0) {
 									List<User> vendUsers = userDao.findByEnUUAndUserUU(vendor.getVendEnUU(),
@@ -87,9 +98,10 @@ public class PurchaseForecastServiceImpl implements PurchaseForecastService {
 									// 则设为平台中供应商列表中的供应商联系人UU
 									item.setVendUserUU(vendors.get(0).getVendUserUU());
 								}
-								item.setProduct(products.get(0));
-								item.setProductId(products.get(0).getId());
-								item.setErpDate(new Date());
+
+								item.setProduct(product);
+								item.setProductId(product.getId());
+								item.setErpDate(new Date(System.currentTimeMillis()));
 								items.add(item);
 							}
 						}
@@ -103,62 +115,7 @@ public class PurchaseForecastServiceImpl implements PurchaseForecastService {
 	@Override
 	public List<PurchaseForecastAllItem> convertEDIPurchaseForecast(List<PurchaseForecast> purchaseForecasts, Long enUU) {
 		List<PurchaseForecastAllItem> items = new ArrayList<PurchaseForecastAllItem>();
-		for (PurchaseForecast purchaseForecast : purchaseForecasts) {
-			// 先查看是否已存在
-			List<PurchaseForecastAll> forecasts = purchaseForecastDao.findByEnUUAndCode(enUU,
-					purchaseForecast.getPf_code());
-			if (forecasts.size() == 0) {
-				PurchaseForecastAll forecast = purchaseForecast.convert();
-				if (!CollectionUtils.isEmpty(forecast.getForecastItems())) {
-					// 设置User
-					if (forecast.getUserUU() != null) {
-						List<User> users = userDao.findByEnUUAndUserUU(enUU, forecast.getUser().getUserUU());
-						if (CollectionUtils.isEmpty(users)) {
-							forecast.setUserUU(SystemSession.getUser().getUserUU());
-						}
-					} else {
-						forecast.setUserUU(SystemSession.getUser().getUserUU());
-					}
-					// 对明细遍历
-					for (PurchaseForecastAllItem item : forecast.getForecastItems()) {
-						item.setOrder(forecast);
-						if (item.getVendUU() != null) {// 明细中有供应商uu号
-							List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(enUU, item.getVendUU());
-							Vendor vendor = null;
-							if (vendors.size() == 0) {
-								vendor = addVendor(item);
-								if (null != vendor) {
-                                    vendorService.addPartnerShipRecord(vendor, APPID); // 添加合作伙伴关系
-								}
-							} else {
-								vendor = vendors.get(0);
-							}
-							List<Product> products = productDao.findByEnUUAndCode(enUU, item.getProduct().getCode());
-							if (products.size() > 0 && vendor != null) {
-								item.setVendUU(vendor.getVendEnUU());
-								if (item.getVendUserUU() != null && item.getVendUserUU() != 0) {
-									List<User> vendUsers = userDao.findByEnUUAndUserUU(vendor.getVendEnUU(),
-											item.getVendUserUU());
-									if (vendUsers.size() == 0) {
-										// 平台中的供应商企业不存在供应商联系人uu的用户
-										// 则设为平台中供应商列表中的供应商联系人UU
-										item.setVendUserUU(vendors.get(0).getVendUserUU());
-									}
-								} else {
-									// 买方ERP中供应商资料没有设置供应商联系人uu
-									// 则设为平台中供应商列表中的供应商联系人UU
-									item.setVendUserUU(vendors.get(0).getVendUserUU());
-								}
-								item.setProduct(products.get(0));
-								item.setProductId(products.get(0).getId());
-								item.setErpDate(new Date());
-								items.add(item);
-							}
-						}
-					}
-				}
-			}
-		}
+		// TODO 暂时不做
 		return items;
 	}
 

+ 17 - 10
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseProdInOutServiceImpl.java

@@ -11,6 +11,7 @@ import com.uas.platform.b2b.erp.service.PurchaseService;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.ps.ProductUtils;
 import com.uas.platform.b2b.service.NotExistOrderService;
+import com.uas.platform.b2b.support.CollectionUtil;
 import com.uas.platform.b2b.support.SystemSession;
 import org.apache.axis.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,7 +20,12 @@ import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 
-
+/**
+ * 出入库单
+ *
+ * @author hejq
+ * @date 2018-07-23 11:54
+ */
 @Service
 public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 
@@ -57,6 +63,9 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 	public List<PurchaseAcceptItem> convertProdInOuts(List<PurchaseProdInOut> prodInOuts) throws Exception {
 		List<PurchaseAcceptItem> acceptItems = new ArrayList<PurchaseAcceptItem>();
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
+        // 获取物料编号集合
+        Set<String> productCodes = CollectionUtil.getProductCodeCollection(prodInOuts);
+        Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, productCodes);
 		for (PurchaseProdInOut prodInOut : prodInOuts) {
 			PurchaseAccept accept = prodInOut.convent();
 			List<PurchaseAccept> accepts2 = purchaseAcceptDao.findByEnUUAndCode(enUU, accept.getCode());
@@ -91,10 +100,10 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
                                     com.uas.platform.b2b.temporary.model.OrderType.saleItem.name(), item.getOrderItem().getNumber(), sign));
 						}
 					} else {
-						List<Product> prod = productDao.findByEnUUAndCode(enUU, item.getProdcode());
-						if (prod.size() > 0) {
-							item.setProduct(prod.get(0));
-							item.setProdId(prod.get(0).getId());
+						ProductInfo productInfo = products.get(item.getProdcode());
+						if (null != productInfo) {
+							item.setProduct(productInfo);
+							item.setProdId(productInfo.getId());
 						} else {
 						    // 物料不存在先进行存储
 							Product product = new Product();
@@ -144,17 +153,15 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 								it.remove();
 							}
 						} else {
-							List<Product> prod = productDao.findByEnUUAndCode(enUU, item.getProdcode());
-							if (prod.size() > 0) {
-								item.setProduct(prod.get(0));
-								item.setProdId(prod.get(0).getId());
+							List<Product> prods = ProductUtils.findByEnUUAndCode(enUU, item.getProdcode());
+							if (prods.size() > 0) {
+								item.setProdId(prods.get(0).getId());
 							} else {
 								// 物料不存在先进行存储
 								Product product = new Product();
 								product.setCode(item.getProdcode());
 								product.setEnUU(enUU);
 								Long proId = ProductUtils.updateOne(product);
-								item.setProduct(product);
 								item.setProdId(proId);
 							}
 							item.setAccept(accepts2.get(0));

+ 10 - 10
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseSampleServiceImpl.java

@@ -8,7 +8,9 @@ import com.uas.platform.b2b.erp.model.ProductSampleApproval;
 import com.uas.platform.b2b.erp.service.PurchaseSampleService;
 import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.ps.ProductUtils;
 import com.uas.platform.b2b.service.NotExistProductService;
+import com.uas.platform.b2b.support.CollectionUtil;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.temporary.model.OrderType;
 import com.uas.platform.core.model.Constant;
@@ -17,9 +19,7 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * 打样申请单
@@ -38,9 +38,6 @@ public class PurchaseSampleServiceImpl implements PurchaseSampleService {
 	@Autowired
 	private UserDao userDao;
 
-	@Autowired
-	private ProductDao productDao;
-
 	@Autowired
 	private EnterpriseDao enterpriseDao;
 
@@ -59,12 +56,15 @@ public class PurchaseSampleServiceImpl implements PurchaseSampleService {
 		// 应用来源
 		final String appId = "uas";
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
+		// 获取物料编号集合
+		Set<String> productCodes = CollectionUtil.getProductCodeCollection(samples);
+		Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, productCodes);
 		for (ProductSample sample : samples) {
 			List<PurchaseProofing> proofingList = purchaseProofingDao.findByEnUUAndCode(enUU, sample.getPs_code());
-			List<Product> products = productDao.findByEnUUAndCode(enUU, sample.getPs_prodcode());
+			ProductInfo productInfo = products.get(sample.getPs_prodcode());
 			List<NotExistProduct> productList = new ArrayList<>();
 			String sign = "";
-			if (!CollectionUtils.isEmpty(products)) {
+			if (null != productInfo) {
 				// 平台中不存在的单据&&物料已经上传到平台
 				if (proofingList.size() == 0) {
 					PurchaseProofing proofing = sample.convert();
@@ -83,8 +83,8 @@ public class PurchaseSampleServiceImpl implements PurchaseSampleService {
 						// 单据中能获取到申请人的uu号,并且有效则为申请人,否则为企业管理员
 						proofing.setUserUU(userUU);
 						proofing.setUser(null);
-						proofing.setProduct(products.get(0));
-						proofing.setProductId(products.get(0).getId());
+						proofing.setProduct(productInfo);
+						proofing.setProductId(productInfo.getId());
                         // 对明细遍历
 						for (PurchaseProofingItem proofingItem : proofing.getProofingItems()) {
 							proofingItem.setProofing(proofing);

+ 23 - 20
src/main/java/com/uas/platform/b2b/model/PurchaseOrderChangeItem.java

@@ -1,26 +1,10 @@
 package com.uas.platform.b2b.model;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToOne;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-
+import com.alibaba.fastjson.annotation.JSONField;
 import org.codehaus.jackson.annotate.JsonIgnore;
 
-import com.alibaba.fastjson.annotation.JSONField;
+import javax.persistence.*;
+import java.util.*;
 
 /**
  * 平台里面的订单变更单明细
@@ -30,7 +14,7 @@ import com.alibaba.fastjson.annotation.JSONField;
  */
 @Table(name = "purc$changeitems")
 @Entity
-public class PurchaseOrderChangeItem {
+public class PurchaseOrderChangeItem extends AbstractOrderProduct {
 
 	@Id
 	@GeneratedValue(strategy = GenerationType.AUTO)
@@ -314,4 +298,23 @@ public class PurchaseOrderChangeItem {
 		return accepts;
 	}
 
+	/**
+	 * [抽象方法] 获取物料id
+	 *
+	 * @return
+	 */
+	@Override
+	public Long getProductId() {
+		return null;
+	}
+
+	/**
+	 * [抽象方法] 设置物料id
+	 *
+	 * @param productId 物料id
+	 */
+	@Override
+	public void setProductId(Long productId) {
+
+	}
 }