|
@@ -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();
|
|
|
- }
|
|
|
|
|
|
/**
|
|
|
* 查询数据库数据获取对应的部门和部门下对应的人
|