Browse Source

增加基本单据物料的基类

suntg 7 years ago
parent
commit
5559946eea

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

@@ -1,6 +1,6 @@
 package com.uas.platform.b2b.erp.model;
 package com.uas.platform.b2b.erp.model;
 
 
-import com.uas.platform.b2b.model.ProductInfo;
+import com.uas.platform.b2b.model.Product;
 import com.uas.platform.b2b.model.PurcOrderInfoItem;
 import com.uas.platform.b2b.model.PurcOrderInfoItem;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Status;
 import com.uas.platform.core.model.Status;
@@ -144,10 +144,7 @@ public class PurchaseDetail {
 		item.setVendspec(this.pd_vendspec);
 		item.setVendspec(this.pd_vendspec);
 		item.setRemark(this.pd_remark);
 		item.setRemark(this.pd_remark);
 		item.setStatus((short) Status.NOT_REPLY.value());
 		item.setStatus((short) Status.NOT_REPLY.value());
-		ProductInfo product = new ProductInfo();
-		product.setCode(this.pd_prodcode);
-		product.setEnUU(SystemSession.getUser().getEnterprise().getUu());
-		item.setProduct(product);
+		item.setProductCode(this.pd_prodcode);
 		item.setBeipin(this.pd_beipin);
 		item.setBeipin(this.pd_beipin);
 		if (!CollectionUtils.isEmpty(this.attaches)) {
 		if (!CollectionUtils.isEmpty(this.attaches)) {
 			Set<com.uas.platform.b2b.model.Attach> b2bAttaches = new HashSet<com.uas.platform.b2b.model.Attach>();
 			Set<com.uas.platform.b2b.model.Attach> b2bAttaches = new HashSet<com.uas.platform.b2b.model.Attach>();

+ 27 - 9
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseServiceImpl.java

@@ -8,6 +8,7 @@ import com.uas.platform.b2b.erp.model.*;
 import com.uas.platform.b2b.erp.service.PurchaseService;
 import com.uas.platform.b2b.erp.service.PurchaseService;
 import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.model.*;
 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.service.NotExistProductService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
@@ -20,9 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 
 /**
 /**
  * 采购单接
  * 采购单接
@@ -70,6 +69,11 @@ public class PurchaseServiceImpl implements PurchaseService {
 		// 应用来源
 		// 应用来源
         final String appId = "uas";
         final String appId = "uas";
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
+
+		// 获取物料编号集合
+		Set<String> productCodes = getProductCodes(purchases);
+		// 通过公共物料服务获取所有用到的物料信息
+		Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, productCodes);
 		for (Purchase purchase : purchases) {
 		for (Purchase purchase : purchases) {
 			// 先查看是否已存在
 			// 先查看是否已存在
 			List<PurchaseOrder> orders = purchaseOrderDao.findByEnUUAndCode(enUU, purchase.getPu_code());
 			List<PurchaseOrder> orders = purchaseOrderDao.findByEnUUAndCode(enUU, purchase.getPu_code());
@@ -115,17 +119,16 @@ public class PurchaseServiceImpl implements PurchaseService {
 						item.setOrder(order);
 						item.setOrder(order);
 						item.setStatus((short) Status.NOT_REPLY.value());
 						item.setStatus((short) Status.NOT_REPLY.value());
 						// 取平台的产品ID
 						// 取平台的产品ID
-						ProductInfo product = item.getProduct();
-						List<Product> products = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
-						if (products.size() > 0) {
-							item.setProductId(products.get(0).getId());
-							item.setErpDate(new Date(System.currentTimeMillis()));
+						ProductInfo product = products.get(item.getProductCode());
+						if (product != null) {
+							item.setProduct(product);
+							item.setErpDate(new Date());
 							orderItems.add(item);
 							orderItems.add(item);
 						} else {
 						} else {
 							if (StringUtils.isEmpty(sign)) {
 							if (StringUtils.isEmpty(sign)) {
 								sign = StringUtil.uuid();
 								sign = StringUtil.uuid();
 							}
 							}
-							productList.add(new NotExistProduct(product.getCode(), enUU, OrderType.purchase.name(), purchase.getPu_code(), Constant.NO, sign));
+							productList.add(new NotExistProduct(item.getProductCode(), enUU, OrderType.purchase.name(), purchase.getPu_code(), Constant.NO, sign));
 						}
 						}
 					}
 					}
 					if (!CollectionUtils.isEmpty(productList)) {
 					if (!CollectionUtils.isEmpty(productList)) {
@@ -294,4 +297,19 @@ public class PurchaseServiceImpl implements PurchaseService {
             commonDao.getJdbcTemplate().update(sql);
             commonDao.getJdbcTemplate().update(sql);
         }
         }
     }
     }
+
+	/**
+	 * 获取订单列表的物料编号集合
+	 * @param purchases
+	 * @return
+	 */
+	private Set<String> getProductCodes(List<Purchase> purchases) {
+    	Set<String> codes = new HashSet<String>();
+		for (Purchase purchase : purchases) {
+			for (PurchaseDetail purchaseDetail : purchase.getPurchaseDetails()) {
+				codes.add(purchaseDetail.getPd_code());
+			}
+		}
+    	return codes;
+	}
 }
 }

+ 4 - 14
src/main/java/com/uas/platform/b2b/model/AbstractOrderProduct.java

@@ -16,12 +16,6 @@ import javax.persistence.Transient;
 @MappedSuperclass
 @MappedSuperclass
 public abstract class AbstractOrderProduct {
 public abstract class AbstractOrderProduct {
 
 
-    /**
-     * 物料id
-     */
-    @Transient
-    protected  Long productId;
-
     /**
     /**
      * 编号
      * 编号
      */
      */
@@ -111,18 +105,14 @@ public abstract class AbstractOrderProduct {
         this.productCmpCode = productCmpCode;
         this.productCmpCode = productCmpCode;
     }
     }
 
 
-    public Long getProductId() {
-        return productId;
-    }
+    public abstract Long getProductId();
 
 
-    public void setProductId(Long productId) {
-        this.productId = productId;
-    }
+    public abstract void setProductId(Long productId);
 
 
     public ProductInfo getProduct() {
     public ProductInfo getProduct() {
         if (product == null) {
         if (product == null) {
             product = new ProductInfo();
             product = new ProductInfo();
-            product.setId(productId);
+            product.setId(getProductId());
             product.setTitle(productTitle);
             product.setTitle(productTitle);
             product.setCode(productCode);
             product.setCode(productCode);
             product.setSpec(productSpec);
             product.setSpec(productSpec);
@@ -135,7 +125,7 @@ public abstract class AbstractOrderProduct {
 
 
     public void setProduct(ProductInfo product) {
     public void setProduct(ProductInfo product) {
         if (product != null) {
         if (product != null) {
-            this.productId = product.getId();
+            setProductId(product.getId());
             this.productTitle = product.getTitle();
             this.productTitle = product.getTitle();
             this.productCode = product.getCode();
             this.productCode = product.getCode();
             this.productSpec = product.getSpec();
             this.productSpec = product.getSpec();

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

@@ -192,12 +192,12 @@ public class PurcOrderInfoItem extends AbstractOrderProduct {
 
 
 	@Override
 	@Override
 	public Long getProductId() {
 	public Long getProductId() {
-		return super.getProductId();
+		return productId;
 	}
 	}
 
 
 	@Override
 	@Override
 	public void setProductId(Long productId) {
 	public void setProductId(Long productId) {
-		super.setProductId(productId);
+		this.productId = productId;
 	}
 	}
 
 
 	public Set<Attach> getAttachs() {
 	public Set<Attach> getAttachs() {

+ 3 - 16
src/main/java/com/uas/platform/b2b/model/PurchaseOrderAllItem.java

@@ -9,7 +9,7 @@ import java.util.*;
 
 
 @Table(name = "purc$orderitems")
 @Table(name = "purc$orderitems")
 @Entity
 @Entity
-public class PurchaseOrderAllItem {
+public class PurchaseOrderAllItem extends AbstractOrderProduct {
 
 
 	@Id
 	@Id
 	@GeneratedValue(strategy = GenerationType.AUTO)
 	@GeneratedValue(strategy = GenerationType.AUTO)
@@ -41,13 +41,6 @@ public class PurchaseOrderAllItem {
 	@Column(name = "pd_prid")
 	@Column(name = "pd_prid")
 	private Long productId;
 	private Long productId;
 
 
-	/**
-	 * 产品
-	 */
-	@OneToOne(cascade = { CascadeType.REFRESH })
-	@JoinColumn(name = "pd_prid", insertable = false, updatable = false)
-	private Product product;
-
 	/**
 	/**
 	 * 产品的附件
 	 * 产品的附件
 	 */
 	 */
@@ -227,22 +220,16 @@ public class PurchaseOrderAllItem {
 		this.order = order;
 		this.order = order;
 	}
 	}
 
 
+	@Override
 	public Long getProductId() {
 	public Long getProductId() {
 		return productId;
 		return productId;
 	}
 	}
 
 
+	@Override
 	public void setProductId(Long productId) {
 	public void setProductId(Long productId) {
 		this.productId = productId;
 		this.productId = productId;
 	}
 	}
 
 
-	public Product getProduct() {
-		return product;
-	}
-
-	public void setProduct(Product product) {
-		this.product = product;
-	}
-
 	public Set<Attach> getAttachs() {
 	public Set<Attach> getAttachs() {
 		return attachs;
 		return attachs;
 	}
 	}

+ 12 - 4
src/main/java/com/uas/platform/b2b/ps/ProductUtils.java

@@ -12,6 +12,7 @@ import com.uas.platform.core.util.HttpUtil.Response;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.http.protocol.HTTP;
 import org.apache.http.protocol.HTTP;
+import org.apache.log4j.Logger;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.ui.ModelMap;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
@@ -35,6 +36,8 @@ public class ProductUtils {
      */
      */
     private static final int ONE_TIME_DATA_SIZE = 1000;
     private static final int ONE_TIME_DATA_SIZE = 1000;
 
 
+    private static final Logger logger = Logger.getLogger(ProductUtils.class);
+
     /**
     /**
      * 分页批量更新物料
      * 分页批量更新物料
      *
      *
@@ -368,21 +371,26 @@ public class ProductUtils {
      * @param codeSet 物料code
      * @param codeSet 物料code
      * @return
      * @return
      */
      */
-    public static Map<String, ProductInfo> findByEnUUAndCodes(Long enUU, Set<String> codeSet) throws Exception {
+    public static Map<String, ProductInfo> findByEnUUAndCodes(Long enUU, Set<String> codeSet) {
         HashMap<String, Object> map = new HashMap<>(2);
         HashMap<String, Object> map = new HashMap<>(2);
         map.put("enUU", enUU);
         map.put("enUU", enUU);
         map.put("codes", FlexJsonUtils.toJsonDeep(codeSet));
         map.put("codes", FlexJsonUtils.toJsonDeep(codeSet));
-        Response res = HttpUtil.sendGetRequest(PRODUCT_PUBLIC_SERVICE_URL + "/product/get/findByEnUUAndCodes", map);
+        Response res = null;
+        try {
+            res = HttpUtil.sendGetRequest(PRODUCT_PUBLIC_SERVICE_URL + "/product/get/findByEnUUAndCodes", map);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         Map<String, ProductInfo> resultMap = new HashedMap();
         Map<String, ProductInfo> resultMap = new HashedMap();
         if (HttpStatus.OK.value() == res.getStatusCode()) {
         if (HttpStatus.OK.value() == res.getStatusCode()) {
             List<ProductInfo> productInfoList = JSONObject.parseArray(res.getResponseText(), ProductInfo.class);
             List<ProductInfo> productInfoList = JSONObject.parseArray(res.getResponseText(), ProductInfo.class);
             for (ProductInfo productInfo : productInfoList) {
             for (ProductInfo productInfo : productInfoList) {
                 resultMap.put(productInfo.getCode(), productInfo);
                 resultMap.put(productInfo.getCode(), productInfo);
             }
             }
-            return resultMap;
         } else {
         } else {
-            throw new Exception("查询物料失败");
+            logger.error("findByEnUUAndCodes http response status error: " + res.getStatusCode());
         }
         }
+        return resultMap;
     }
     }
 
 
     /**
     /**