Browse Source

Merge remote-tracking branch 'origin/master'

chenyuesheng 3 years ago
parent
commit
590b6e42b4

+ 45 - 42
src/main/java/com/jeeplus/modules/sg/balancedlibrary/planSummary/service/PlanSummaryService.java

@@ -1,6 +1,7 @@
 
 
 package com.jeeplus.modules.sg.balancedlibrary.planSummary.service;
+import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.sg.balancedlibrary.planSummary.entity.AgriculturalDistributionNetwork;
 import com.jeeplus.modules.sg.balancedlibrary.planSummary.entity.ProcessTracking;
@@ -13,12 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
-
 /**
  * @author 杜
  */
@@ -27,8 +24,6 @@ import java.util.concurrent.atomic.AtomicReference;
 public class PlanSummaryService extends CrudService<PlanSummaryMapper, AgriculturalDistributionNetwork> {
     @Autowired
     private ReportPersonMapper reportPersonMapper;
-
-
     public List<PlanSummary>  importFile(List<AgriculturalDistributionNetwork> agriculturalDistributionNetworkList, List<ProcessTracking> processTrackingList) {
         //返回结果
         List<PlanSummary> planSummaryList = new ArrayList<>();
@@ -38,15 +33,16 @@ 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).
@@ -61,37 +57,55 @@ 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()));
             }
         });
-
-
-        //两个表 相比
-        processTrackingMap.forEach((k,v)->{
+        //配农网V / 跟踪Q
+        flagMap.forEach((k,v)->{
             String[] split = k.split("-");
-            String person = getPerson(reportPersonMap, split[1], agriculturalDistributionNetworkList, split[0]);
-            String dictLabels = DictUtils.getDictLabel(reportPersonMap.get(person), "report_department", "");
-            String materialDescription = getMaterialDescription(split[0], person, agriculturalDistributionNetworkList);
-            planSummaryList.add(new PlanSummary(person,dictLabels,split[0],materialDescription,v.toString(),
-                    //配农网是否有这个key
-                    agriculturalDistributionNetworkMap.containsKey(k)?
-                            agriculturalDistributionNetworkMap.get(k).toString():null,
-                    //需求数量是否为0  如果不为0 计算执行进度 如果为0则显示未上报
-                    //如果有这个key并且不是null时,配农网的key / 流程跟踪表的v
-                    agriculturalDistributionNetworkMap.containsKey(k)
-                            &&
-                            agriculturalDistributionNetworkMap.get(k)!=null?
-                            agriculturalDistributionNetworkMap.get(k).compareTo(new BigDecimal(0))==0?
-                                    "未上报需求":(agriculturalDistributionNetworkMap.get(k).
-                                    divide(v,1,BigDecimal.ROUND_HALF_DOWN))+ "%":
-                            "未上报需求"
-            ));
+            PlanSummary planSummary = new PlanSummary();
+           //物料编码
+            planSummary.setMaterialCoding(split[0]);
+           //查找部门
+            String dictLabels = DictUtils.getDictLabel(split[1], "report_department", "");
+           //把部门赋值给planSummary
+            planSummary.setProjectDepartment(dictLabels);
+            //如果两个表有相同的物料编码部门,
+            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(k)&&!agriculturalDistributionNetworkMap.containsKey(k)){
+                //赋值
+                planSummary.setAmountOfDemand(processTrackingMap.get(k).toString());
+                planSummary.setNumberOfReports("0");
+                planSummary.setDescriptionOfMaterials(v);
+                //流程表没有配农网有
+            }else if(!processTrackingMap.containsKey(k)&&agriculturalDistributionNetworkMap.containsKey(k)){
+                //赋值
+                planSummary.setAmountOfDemand("0");
+                //上报数量(物料编码,部门)
+                planSummary.setNumberOfReports(agriculturalDistributionNetworkMap.get(k).toString());
+                planSummary.setDescriptionOfMaterials(v);
+            }
+            //如果需求数量不是空并且不等于0
+            if(StringUtils.isNotBlank(planSummary.getAmountOfDemand())&&!"0".equals(planSummary.getAmountOfDemand())){
+                //计算 转BigDecimal  V / Q
+                planSummary.setProgressOfImplementation((new BigDecimal(planSummary.getNumberOfReports()).
+                        divide(new BigDecimal(planSummary.getAmountOfDemand()),1,BigDecimal.ROUND_HALF_DOWN)) + "%");
 
+            }else{
+                planSummary.setProgressOfImplementation("未上报需求");
+            }
+            planSummaryList.add(planSummary);
         });
-
         return planSummaryList;
 
     }
@@ -111,17 +125,6 @@ public class PlanSummaryService extends CrudService<PlanSummaryMapper, Agricultu
         });
         return name.get();
     }
-        //物料描述
-    private String getMaterialDescription(String requiredMaterialCode,String name,List<AgriculturalDistributionNetwork> agriculturalDistributionNetworkList){
-        AtomicReference<String> materialDescription = new AtomicReference<>("");
-        agriculturalDistributionNetworkList.forEach(l->{
-            if(requiredMaterialCode.equals(l.getRequiredMaterialCode())&&name.equals(l.getPlanSubmitter())){
-                materialDescription.set(l.getMaterialDescription());
-            }
-        });
-        return materialDescription
-                .get();
-    }
 
     /**
      * 查询数据库数据获取对应的部门和部门下对应的人