Просмотр исходного кода

修改采购变更单单据传输物料设置

suntg 7 лет назад
Родитель
Сommit
73ba7a6ec0

+ 17 - 5
src/main/java/com/uas/platform/b2b/erp/model/PurchaseChange.java

@@ -8,10 +8,7 @@ import com.uas.platform.core.model.Constant;
 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;
  * @author yingp
  * 
  */
-public class PurchaseChange {
+public class PurchaseChange extends KeyEntity {
 
 	private Long pc_id;
 	private String pc_code;
@@ -201,4 +198,19 @@ public class PurchaseChange {
 		return change;
 	}
 
+	@Override
+	public Object getKey() {
+		return null;
+	}
+
+	@Override
+	public List<String> getProductCode() {
+		List<String> codes = new ArrayList<>();
+		for (PurchaseChangeDetail detail : this.changeDetails) {
+			if (detail.getPcd_newprodcode() != null) {
+				codes.add(detail.getPcd_newprodcode());
+			}
+		}
+		return codes;
+	}
 }

+ 22 - 16
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseChangeServiceImpl.java

@@ -7,7 +7,9 @@ import com.uas.platform.b2b.erp.model.PurchaseChange;
 import com.uas.platform.b2b.erp.model.PurchaseChangeReply;
 import com.uas.platform.b2b.erp.service.PurchaseChangeService;
 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;
@@ -16,9 +18,7 @@ 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.*;
 
 /**
  * 采购变更新增变更物料信息判断
@@ -51,6 +51,8 @@ public class PurchaseChangeServiceImpl implements PurchaseChangeService {
 	public List<PurchaseOrderChangeItem> convertPurchaseChange(List<PurchaseChange> changes) {
 		List<PurchaseOrderChangeItem> changeItems = new ArrayList<PurchaseOrderChangeItem>();
 		long enUU = SystemSession.getUser().getEnterprise().getUu();
+		Set<String> productCodes = CollectionUtil.getProductCodeCollection(changes);
+		Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, productCodes);
 		for (PurchaseChange change : changes) {
 			PurchaseOrderChange orderChange = change.convert();
 			List<PurchaseOrder> orders = purchaseOrderDao.findByEnUUAndCode(enUU, change.getPc_purccode());
@@ -72,20 +74,23 @@ public class PurchaseChangeServiceImpl implements PurchaseChangeService {
 							// 赋值原单据信息字段
 							convertOrderItemInfo(item, orderItems.get(0));
 						}
-						// 取平台的产品ID
-						Product newProduct = item.getNewProduct();
-						List<Product> products = productDao.findByEnUUAndCode(newProduct.getEnUU(),
-								newProduct.getCode());
-						if (products.size() > 0) {
-							item.setNewProduct(products.get(0));
-							item.setNewProductId(products.get(0).getId());
+						// 设置新物料,如果新物料没变则设为原物料
+						if (item.getNewProductCode() == null || item.getNewProductCode().equals(item.getOldProductCode())) {
+							item.setNewProduct(item.getOldProduct());
 						} else {
-						    if (StringUtils.isEmpty(uuid)) {
-						        uuid = StringUtil.uuid();
-                            }
-                            productList.add(new NotExistProduct(newProduct.getCode(), enUU, OrderType.purcorderChange.name(),
-                                    change.getPc_code(), Constant.NO, uuid));
-                        }
+							// 如果修改了物料,则设置新物料
+							ProductInfo newProduct = products.get(item.getNewProductCode());
+							if (newProduct != null) {
+								item.setNewProduct(newProduct);
+							} else {
+								if (StringUtils.isEmpty(uuid)) {
+									uuid = StringUtil.uuid();
+								}
+								productList.add(new NotExistProduct(item.getNewProductCode(), enUU, OrderType.purcorderChange.name(),
+										change.getPc_code(), Constant.NO, uuid));
+							}
+						}
+
 						item.setOrderChange(orderChange);
 					}
 					if (!CollectionUtils.isEmpty(productList)) {
@@ -139,6 +144,7 @@ public class PurchaseChangeServiceImpl implements PurchaseChangeService {
 		changeItem.setOldTaxrate(orderItem.getTaxrate());
 		changeItem.setOrderItemId(orderItem.getId());
 		changeItem.setOrderItemNumber(orderItem.getNumber());
+		changeItem.setOldProduct(orderItem.getProduct());
 	}
 
 	@Override