From aaa02f788851807d65260fbf6a3c5d91ff6afa71 Mon Sep 17 00:00:00 2001
From: whycxzp <perryhsu@163.com>
Date: 星期一, 05 九月 2022 10:13:55 +0800
Subject: [PATCH] 对比更新

---
 src/main/java/com/whyc/service/ProductBomHistoryService.java |   49 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 36 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/whyc/service/ProductBomHistoryService.java b/src/main/java/com/whyc/service/ProductBomHistoryService.java
index 2099f9b..353e109 100644
--- a/src/main/java/com/whyc/service/ProductBomHistoryService.java
+++ b/src/main/java/com/whyc/service/ProductBomHistoryService.java
@@ -417,8 +417,8 @@
                 if(bom.getMaterialId().equals(baseBom.getMaterialId())){
                     if(!bom.getQuantity().equals(baseBom.getQuantity())){
                         ProductBomHistory history = new ProductBomHistory();
-                        String diffSubModel = "鍘熸暟閲�:"+baseBom.getQuantity()+"/鏂版暟閲�:"+bom.getQuantity();
-                        history.setNotes(diffSubModel);
+                        String diffQuantity = "鍘熸暟閲�:"+baseBom.getQuantity()+"/鏂版暟閲�:"+bom.getQuantity();
+                        history.setNotes(diffQuantity);
                         history.setMaterialObj(bom.getMaterialObj());
                         diffList.add(history);
                     }
@@ -448,23 +448,46 @@
      */
     public Map<String, List> parseCompare(Product baseProduct, Product product) {
         List<ProductBom> bomList = product.getBomList();
-        List<ProductBom> baseBomList = new LinkedList<>();
-        ProductBom baseProductBom = null;
+        List<ProductBom> baseProductBomList = null;
 
         Map<String,List> compareMap = new HashMap<>();
-        List<ProductBomHistory> diffList = new LinkedList<>();
-        List<ProductBomHistory> addList = new LinkedList<>();
-        List<ProductBomHistory> deleteList = new LinkedList<>();
+        List<ProductBom> diffList = new LinkedList<>();
+        List<ProductBom> addList = new LinkedList<>();
+        List<ProductBom> deleteList = new LinkedList<>();
 
-        //鏍规嵁baseProduct鐨刢ode鍜宑ustom_code,鏌ユ壘鍒板熀鍑嗕骇鍝�
-        if(baseProduct == null){
-            baseProductBom = bomService.getEnabledStandardBomListByParentCode(product.getParentCode());
-        }else{
-
+        //鏌ユ壘鍒板熀鍑嗕骇鍝�
+        if(baseProduct == null){ //鏌ユ壘涓婁紶鐨勪骇鍝佹渶鏂版爣鍑嗙増鏈�
+            baseProductBomList = bomService.getEnabledBomListByParentCodeAndCustomCode(product.getParentCode(),"0");
+        }else{ //鏍规嵁baseProduct鐨刢ode鍜宑ustom_code
+            baseProductBomList = bomService.getEnabledBomListByParentCodeAndCustomCode(baseProduct.getParentCode(),baseProduct.getCustomCode());
         }
-
         //瀵规瘮:鏍规嵁code+model瀹氫綅,姣旇緝鏁伴噺
+        List<String> baseCodeModelList = baseProductBomList.stream().map(bom -> bom.getMaterialObj().getSubCode() + "/" + bom.getMaterialObj().getSubModel()).collect(Collectors.toList());
+        Map<String, List<ProductBom>> groupedBaseBomList = baseProductBomList.stream().collect(Collectors.groupingBy(bom -> bom.getMaterialObj().getSubCode() + "/" + bom.getMaterialObj().getSubModel()));
+        List<String> codeModelList = bomList.stream().map(bom -> bom.getSubCode() + "/" + bom.getSubModel()).collect(Collectors.toList());
 
+
+        bomList.forEach(bom->{
+            String codeModel = bom.getSubCode() + "/" + bom.getSubModel();
+            if(!baseCodeModelList.contains(codeModel)){
+                addList.add(bom);
+            }else{
+                ProductBom baseBom = groupedBaseBomList.get(codeModel).get(0);
+                if(bom.getQuantity().intValue()!=baseBom.getQuantity()){
+                    ProductBom diffBom = new ProductBom();
+                    String diffQuantity =  "鍘熸暟閲�:"+baseBom.getQuantity()+"/鏂版暟閲�:"+bom.getQuantity();
+                    diffBom.setNotes(diffQuantity);
+                    diffBom.setMaterialObj(bom.getMaterialObj());
+                    diffList.add(diffBom);
+                }
+            }
+        });
+        baseProductBomList.forEach(bom->{
+            String codeModel = bom.getMaterialObj().getSubCode() + "/" + bom.getMaterialObj().getSubModel();
+            if(!codeModelList.contains(codeModel)){
+                deleteList.add(bom);
+            }
+        });
         compareMap.put("diffList",diffList);
         compareMap.put("addList",addList);
         compareMap.put("deleteList",deleteList);

--
Gitblit v1.9.1