赵芳群 пре 2 година
родитељ
комит
0ac3d1e43b

+ 21 - 51
src/main/java/com/jeeplus/modules/sg/balancedlibrary/planSummary/service/PlanSummaryService.java

@@ -16,9 +16,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
 /**
  * @author 杜
  */
@@ -38,12 +35,14 @@ public class PlanSummaryService extends CrudService<PlanSummaryMapper, Agricultu
         Map<String, BigDecimal> processTrackingMap = new HashMap<>();
         //提报人
         Map<String, String> reportPersonMap = getPerson();
-
+        Map<String, String> flagMap = new HashMap<>();
         // 去重统计各个部门需求数量(配农网)
         agriculturalDistributionNetworkList.forEach(agriculturalDistributionNetwork -> {
             //物料编码+提报人
             String key = agriculturalDistributionNetwork.getRequiredMaterialCode() + "-" +
                     reportPersonMap.get(agriculturalDistributionNetwork.getPlanSubmitter());
+            String value= agriculturalDistributionNetwork.getMaterialDescription();
+            flagMap.put(key,value);
             //如果包含key
             if (agriculturalDistributionNetworkMap.containsKey(key)) {
                 agriculturalDistributionNetworkMap.put(key,agriculturalDistributionNetworkMap.get(key).
@@ -58,72 +57,43 @@ public class PlanSummaryService extends CrudService<PlanSummaryMapper, Agricultu
         //去重统计各个部门需求数量(流程表)
         processTrackingList.forEach(processTracking -> {
             String key = processTracking.getMaterialCode() + "-" + reportPersonMap.get(processTracking.getApplicant());
+            String value= processTracking.getMaterialDescription();
+            flagMap.put(key,value);
             if (processTrackingMap.containsKey(key)) {
                 processTrackingMap.put(key,processTrackingMap.get(key).add(new BigDecimal(processTracking.getDemandQuantity())));
             }else{
                 processTrackingMap.put(key,new BigDecimal(processTracking.getDemandQuantity()));
             }
         });
-        //获取所有的key(物料编码,部门),使用stream流拼接获取两表keyset转换stream流合并去重
-        List<String> keyList = Stream.concat(processTrackingMap.keySet().stream(), agriculturalDistributionNetworkMap.keySet().stream()).distinct().collect(Collectors.toList());
-
         //配农网V / 跟踪Q
-        keyList.forEach(list->{
-            String[] split = list.split("-");
+        flagMap.forEach((k,v)->{
+            String[] split = k.split("-");
             PlanSummary planSummary = new PlanSummary();
-            //物料编码
+           //物料编码
             planSummary.setMaterialCoding(split[0]);
-            //查找部门
+           //查找部门
             String dictLabels = DictUtils.getDictLabel(split[1], "report_department", "");
-            //把部门赋值给planSummary
+           //把部门赋值给planSummary
             planSummary.setProjectDepartment(dictLabels);
             //如果两个表有相同的物料编码部门,
-            if(processTrackingMap.containsKey(list)&&agriculturalDistributionNetworkMap.containsKey(list)){
-                //赋值
-                planSummary.setAmountOfDemand(processTrackingMap.get(list).toString());
-                //上报数量(物料编码,部门)
-                planSummary.setNumberOfReports(agriculturalDistributionNetworkMap.get(list).toString());
-                //过滤物料编码相同,部门相同取第一个,取物料描述
-                Optional<String> materialCoding = processTrackingList.stream().filter(processTracking -> processTracking.getMaterialCode().equals(split[0])
-                        ).findFirst().map(ProcessTracking::getMaterialDescription);
-
-                //如果Optional为空或没有值
-                if(materialCoding.isPresent()){
-                    //赋值
-                    planSummary.setDescriptionOfMaterials(materialCoding.get());
-                }else{
-                    planSummary.setDescriptionOfMaterials(null);
-                }
+            if(processTrackingMap.containsKey(k)&&agriculturalDistributionNetworkMap.containsKey(k)){
+                //赋值 上报数量(物料编码,部门)
+                planSummary.setAmountOfDemand(processTrackingMap.get(k).toString());
+                planSummary.setNumberOfReports(agriculturalDistributionNetworkMap.get(k).toString());
+                planSummary.setDescriptionOfMaterials(v);
                 //如果流程表有而配农网没有
-            }else if(processTrackingMap.containsKey(list)&&!agriculturalDistributionNetworkMap.containsKey(list)){
+            }else if(processTrackingMap.containsKey(k)&&!agriculturalDistributionNetworkMap.containsKey(k)){
                 //赋值
-                planSummary.setAmountOfDemand(processTrackingMap.get(list).toString());
+                planSummary.setAmountOfDemand(processTrackingMap.get(k).toString());
                 planSummary.setNumberOfReports("0");
-                //过滤物料编码相同,部门相同取第一个,取物料描述
-                Optional<String> materialCoding = processTrackingList.stream().filter(p -> p.getMaterialCode().equals(split[0])
-                        ).findFirst().map(ProcessTracking::getMaterialDescription);
-
-                //如果Optional为空或没有值
-                if(materialCoding.isPresent()){
-                    planSummary.setDescriptionOfMaterials(materialCoding.get());
-                }else{
-                    planSummary.setDescriptionOfMaterials(null);
-                }
+                planSummary.setDescriptionOfMaterials(v);
                 //流程表没有配农网有
-            }else if(!processTrackingMap.containsKey(list)&&agriculturalDistributionNetworkMap.containsKey(list)){
+            }else if(!processTrackingMap.containsKey(k)&&agriculturalDistributionNetworkMap.containsKey(k)){
                 //赋值
                 planSummary.setAmountOfDemand("0");
                 //上报数量(物料编码,部门)
-                planSummary.setNumberOfReports(agriculturalDistributionNetworkMap.get(list).toString());
-                Optional<String> materialCoding = agriculturalDistributionNetworkList.stream().
-                        filter(a -> a.getRequiredMaterialCode().equals(split[0]) ).findFirst().map(AgriculturalDistributionNetwork::getMaterialDescription);
-
-                //如果Optional为空或没有值
-                if(materialCoding.isPresent()){
-                    planSummary.setDescriptionOfMaterials(materialCoding.get());
-                }else{
-                    planSummary.setDescriptionOfMaterials(null);
-                }
+                planSummary.setNumberOfReports(agriculturalDistributionNetworkMap.get(k).toString());
+                planSummary.setDescriptionOfMaterials(v);
             }
             //如果需求数量不是空并且不等于0
             if(StringUtils.isNotBlank(planSummary.getAmountOfDemand())&&!"0".equals(planSummary.getAmountOfDemand())){