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