From b2c1d8836ee2478c45e7f3dd5294d590f0bac68b Mon Sep 17 00:00:00 2001
From: huangjiayang <5265313@qq.com>
Date: 星期一, 28 四月 2025 19:41:07 +0800
Subject: [PATCH] 【UPDATE-BUGFIX】修改气柜管路产能统计无数据工序显示数据
---
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java | 170 +++++++++++++++++++++++++++-----------------------------
1 files changed, 82 insertions(+), 88 deletions(-)
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java
index 0522a73..73cdfbd 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java
@@ -1,6 +1,5 @@
package com.aps.core.service.impl;
-import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.aps.common.core.utils.DateUtils;
import com.aps.common.core.utils.uuid.IdUtils;
@@ -11,6 +10,7 @@
import com.aps.core.mapper.ApsGasPipingRouteStatMapper;
import com.aps.core.service.IApsGasMaterialUsageService;
import com.aps.core.service.IApsGasPipingRouteStatService;
+import com.aps.core.service.IApsStandardProcessService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.*;
@@ -24,7 +24,7 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
-import java.sql.Timestamp;
+import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -54,6 +54,9 @@
@Autowired
private IApsGasMaterialUsageService apsGasMaterialUsageService;
+
+ @Autowired
+ private IApsStandardProcessService apsStandardProcessService;
/**
* 鏌ヨ姘斾綋绠¤矾浜ц兘璐熻浇缁熻
@@ -184,9 +187,9 @@
// 涓婁竴閬撳伐搴忕殑缁撴潫鏃堕棿 = 涓婁竴閬撳伐搴忕殑寮�濮嬫椂闂� + 涓婁竴閬撳伐搴忕殑鎬诲伐鏃�
if(apsGasPipingRouteStat.getProcessPlanStartDay()==null){
LocalDateTime previousProcessPlanStartDay = apsProcessRoutes.get(i - 1).getProcessPlanStartDay().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
- long previousProcessTotalTime = apsGasPipingRouteStatList.get(i - 1).getProcessTotalTime().longValue();
- LocalDateTime currentProcessPlanStartDay = previousProcessPlanStartDay.plusHours(previousProcessTotalTime);
- apsGasPipingRouteStat.setProcessPlanStartDay(Date.from(Timestamp.valueOf(currentProcessPlanStartDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).toInstant()));
+ long seconds = apsGasPipingRouteStatList.get(i - 1).getProcessTotalTime().multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
+ LocalDateTime currentProcessPlanStartDay = previousProcessPlanStartDay.plusSeconds(seconds);
+ apsGasPipingRouteStat.setProcessPlanStartDay(Date.from(currentProcessPlanStartDay.atZone(ZoneId.systemDefault()).toInstant()));
}
//鎻掑叆 骞� 鏈� 鏃�
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -200,9 +203,9 @@
// apsGasMaterialUsage.setItemNumber(apsGasPipingPlan.getItemNumber());
// apsGasMaterialUsage.setProcessName(apsProcessRoute.getProcessName());
// List<ApsGasMaterialUsage> apsGasMaterialUsageList = apsGasMaterialUsageService.selectApsGasMaterialUsageList(apsGasMaterialUsage);
- apsGasPipingRouteStat.setStandardDosage(apsProcessRoute.getStandardTime().multiply(apsGasPipingPlan.getProductionQuantity()));
+// apsGasPipingRouteStat.setStandardDosage(apsProcessRoute.getStandardTime().multiply(apsGasPipingPlan.getProductionQuantity()));
//宸ュ簭鎬荤敤閲� = 鏍囧噯鐢ㄩ噺*鐢熶骇鏁伴噺
- apsGasPipingRouteStat.setProcessTotalDosage(apsGasPipingRouteStat.getStandardDosage().multiply(apsGasPipingPlan.getProductionQuantity()));
+// apsGasPipingRouteStat.setProcessTotalDosage(apsGasPipingRouteStat.getStandardDosage().multiply(apsGasPipingPlan.getProductionQuantity()));
apsGasPipingRouteStat.setCreateTime(DateUtils.getNowDate());
apsGasPipingRouteStat.setCreateBy("auto");
apsGasPipingRouteStat.setBatchNumber(batchNum);
@@ -232,8 +235,18 @@
public JSONObject getCapacityPlanData(ApsGasPipingRouteStat apsGasPipingRouteStat) {
JSONObject result = new JSONObject();
HashSet<String> startPlanTimeSet = new HashSet<>();
- JSONArray processData = new JSONArray();
+ //宸ュ簭鍒嗙粍缁熻
+ LinkedHashMap<String, List<ApsResourceDateStat>> processMap = new LinkedHashMap<>();
+ List<HashMap<String, List<ApsResourceDateStat>>> processList = new ArrayList<>();
try {
+ //鑾峰彇鏍囧噯宸ュ簭鍚嶇О
+ ApsStandardProcess apsStandardProcess = new ApsStandardProcess();
+ apsStandardProcess.setMajor(apsGasPipingRouteStat.getMajor().equals("gas")?"姘旀煖":"绠¤矾");
+ List<ApsStandardProcess> apsStandardProcessList = apsStandardProcessService.selectApsStandardProcessList(apsStandardProcess);
+ apsStandardProcessList.sort((a, b)->a.getProcessName().compareTo(b.getProcessName()));
+ for(ApsStandardProcess temp:apsStandardProcessList){
+ processMap.put(temp.getProcessName(), new ArrayList<ApsResourceDateStat>());
+ }
//鑾峰彇宸ュ簭璁″垝浜ц兘鏁版嵁
HashMap<String, ApsGasPipelineCapacityPlan> apsGasPipingPlanMap = new HashMap<>();
List<ApsGasPipelineCapacityPlan> apsGasPipelineCapacityPlanList = apsGasPipelineCapacityPlanMapper.selectApsGasPipelineCapacityPlanList(new ApsGasPipelineCapacityPlan());
@@ -257,14 +270,10 @@
}
apsGasPipingRouteStats = apsGasPipingRouteStatMapper.selectApsGasPipingRouteStatList(apsGasPipingRouteStat);
//鏍规嵁寮�宸ユ棩杩涜鍗囧簭鎺掑簭
- apsGasPipingRouteStats.sort((a, b)->a.getPlanStartDay().compareTo(b.getPlanStartDay()));
- //宸ュ簭鍒嗙粍缁熻
- HashMap<String, List<ApsResourceDateStat>> processMap = new HashMap<>();
- List<HashMap<String, List<ApsResourceDateStat>>> processList = new ArrayList<>();
- HashMap<String, List<ApsResourceDateStat>> processMapMonth = new HashMap<>();
- List<HashMap<String, List<ApsResourceDateStat>>> processListMonth = new ArrayList<>();
+ apsGasPipingRouteStats.sort((a, b)->a.getProcessPlanStartDay().compareTo(b.getProcessPlanStartDay()));
//宸ュ簭寮�宸ユ棩鏈�
String planStartDate = "";
+ //缁熻鎵�鏈夊伐搴忓搴旂殑寮�宸ユ椂闂�
for (ApsGasPipingRouteStat apsGasPipingRouteStatTemp : apsGasPipingRouteStats) {
planStartDate = simpleDateFormat.format(apsGasPipingRouteStatTemp.getProcessPlanStartDay());
if("month".equals(apsGasPipingRouteStat.getSearchType())){
@@ -274,11 +283,13 @@
apsResourceDateStat.setPlanDay(LocalDate.parse(planStartDate, formatter));
apsResourceDateStat.setResourceName(apsGasPipingRouteStatTemp.getProcessName());
//鏌ヨ姘旀煖绠¤矾浜ц兘瑙勫垝琛�
- apsResourceDateStat.setDesignTimes(apsGasPipingPlanMap.get(apsGasPipingRouteStatTemp.getProcessName())!=null?apsGasPipingPlanMap.get(apsGasPipingRouteStatTemp.getProcessName()).getDayProduceAllNum().intValue():0);
+ apsResourceDateStat.setDesignTimes(apsGasPipingPlanMap.get(apsGasPipingRouteStatTemp.getProcessName())!=null?apsGasPipingPlanMap.get(apsGasPipingRouteStatTemp.getProcessName()).getDayProduceAllNum():new BigDecimal(0));
//鏌ヨ鏂欏彿宸ュ簭浜ц兘琛�
- apsResourceDateStat.setRequireTimes(apsGasPipingRouteStatTemp.getProcessTotalTime().intValue());
- if(apsResourceDateStat.getDesignTimes()!=0){
- apsResourceDateStat.setCapacityLoad(BigDecimal.valueOf(apsResourceDateStat.getRequireTimes()/apsResourceDateStat.getDesignTimes()* 100L));
+ apsResourceDateStat.setRequireTimes(apsGasPipingRouteStatTemp.getProcessTotalTime());
+ if(apsResourceDateStat.getDesignTimes().compareTo(BigDecimal.ZERO)>0){
+ apsResourceDateStat.setCapacityLoad(apsResourceDateStat.getRequireTimes()
+ .divide(apsResourceDateStat.getDesignTimes(), 2, RoundingMode.HALF_UP)
+ .multiply(new BigDecimal(100)));
}else{
apsResourceDateStat.setCapacityLoad(BigDecimal.valueOf(0));
}
@@ -289,86 +300,69 @@
apsResourceDateStatList.add(apsResourceDateStat);
processMap.put(apsGasPipingRouteStatTemp.getProcessName(), apsResourceDateStatList);
}
+ //鑱氬悎姣忛亾宸ュ簭鐨勫紑宸ユ椂闂村拰浜ц兘
processMap.forEach((processName, apsResourceDateStatList) -> {
- HashMap<String, ApsResourceDateStat> dayMap = new HashMap<>();
+ LinkedHashMap<String, ApsResourceDateStat> dayMap = new LinkedHashMap<>();
apsResourceDateStatList.forEach(apsResourceDateStat -> {
startPlanTimeSet.add(apsResourceDateStat.getPlanDay().toString());
- if("month".equals(apsGasPipingRouteStat.getSearchType())){
- if(dayMap.containsKey(apsResourceDateStat.getPlanDay().toString())){
- ApsResourceDateStat apsResourceDateStatTemp = dayMap.get(apsResourceDateStat.getPlanDay().toString());
- apsResourceDateStatTemp.setDesignTimes(apsGasPipingPlanMap.get(processName)!=null?apsGasPipingPlanMap.get(processName).getMonthProduceAllNum().intValue():0);
- apsResourceDateStatTemp.setRequireTimes(apsResourceDateStatTemp.getRequireTimes()+apsResourceDateStat.getRequireTimes());
- if(apsResourceDateStatTemp.getDesignTimes()!=0){
- apsResourceDateStatTemp.setCapacityLoad(BigDecimal.valueOf(apsResourceDateStatTemp.getRequireTimes()/apsResourceDateStatTemp.getDesignTimes()* 100L));
- }else{
- apsResourceDateStatTemp.setCapacityLoad(BigDecimal.valueOf(0));
- }
- apsResourceDateStatTemp.setResourceGroupName(processName);
- apsResourceDateStatTemp.setPlanDay(apsResourceDateStat.getPlanDay());
- dayMap.put(apsResourceDateStat.getPlanDay().toString(), apsResourceDateStatTemp);
+ if(dayMap.containsKey(apsResourceDateStat.getPlanDay().toString())){
+ ApsResourceDateStat apsResourceDateStatTemp = dayMap.get(apsResourceDateStat.getPlanDay().toString());
+ if("month".equals(apsGasPipingRouteStat.getSearchType())){
+ apsResourceDateStatTemp.setDesignTimes(apsGasPipingPlanMap.get(processName)!=null?apsGasPipingPlanMap.get(processName).getMonthProduceAllNum():new BigDecimal(0));
}else{
- dayMap.put(apsResourceDateStat.getPlanDay().toString(), apsResourceDateStat);
+ apsResourceDateStatTemp.setDesignTimes(apsGasPipingPlanMap.get(processName)!=null?apsGasPipingPlanMap.get(processName).getDayProduceAllNum():new BigDecimal(0));
}
+ apsResourceDateStatTemp.setRequireTimes(apsResourceDateStatTemp.getRequireTimes().add(apsResourceDateStat.getRequireTimes()));
+ if(apsResourceDateStatTemp.getDesignTimes().compareTo(BigDecimal.ZERO) > 0){
+ apsResourceDateStat.setCapacityLoad(apsResourceDateStat.getRequireTimes()
+ .divide(apsResourceDateStat.getDesignTimes(), 2, RoundingMode.HALF_UP)
+ .multiply(new BigDecimal(100)));
+ }else{
+ apsResourceDateStatTemp.setCapacityLoad(new BigDecimal(0));
+ }
+ apsResourceDateStatTemp.setResourceGroupName(processName);
+ apsResourceDateStatTemp.setPlanDay(apsResourceDateStat.getPlanDay());
+ dayMap.put(apsResourceDateStat.getPlanDay().toString(), apsResourceDateStatTemp);
+ }else{
+ dayMap.put(apsResourceDateStat.getPlanDay().toString(), apsResourceDateStat);
}
});
- if("month".equals(apsGasPipingRouteStat.getSearchType())){
- List<ApsResourceDateStat> tempList = new ArrayList<>();
- dayMap.forEach((key, value) -> {
- tempList.add(value);
- });
- processMapMonth.put(processName, tempList);
- }
+ List<ApsResourceDateStat> tempList = new ArrayList<>();
+ dayMap.forEach((key, value) -> {
+ tempList.add(value);
+ });
+ HashMap<String, List<ApsResourceDateStat>> temp = new HashMap<>();
+ temp.put(processName, tempList);
+ processList.add(temp);
});
+ //鎺掑簭鏃堕棿鏍囬
List<String> sortedStartPlanTimeList = new ArrayList<>(startPlanTimeSet);
Collections.sort(sortedStartPlanTimeList);
-// processMap.forEach((processName, apsResourceDateStatList) -> {
-// HashMap<String, ApsResourceDateStat> dayMap = new HashMap<>();
-// apsResourceDateStatList.forEach(apsResourceDateStat -> {
-// startPlanTimeSet.add(apsResourceDateStat.getPlanDay().toString());
-// if(dayMap.containsKey(apsResourceDateStat.getPlanDay().toString())){
-// ApsResourceDateStat apsResourceDateStatTemp = dayMap.get(apsResourceDateStat.getPlanDay().toString());
-// if("day".equals(apsGasPipingRouteStat.getSearchType())){
-// apsResourceDateStatTemp.setDesignTimes(apsResourceDateStatTemp.getDesignTimes()+apsResourceDateStat.getDesignTimes());
-// }else if("month".equals(apsGasPipingRouteStat.getSearchType())){
-// apsResourceDateStatTemp.setDesignTimes(apsGasPipingPlanMap.get(processName)!=null?apsGasPipingPlanMap.get(processName).getMonthProduceAllNum().intValue():0);
-// }
-// apsResourceDateStatTemp.setRequireTimes(apsResourceDateStatTemp.getRequireTimes()+apsResourceDateStat.getRequireTimes());
-// if(apsResourceDateStatTemp.getDesignTimes()!=0){
-// apsResourceDateStatTemp.setCapacityLoad(BigDecimal.valueOf(apsResourceDateStatTemp.getRequireTimes()/apsResourceDateStatTemp.getDesignTimes()* 100L));
-// }
-// apsResourceDateStatTemp.setResourceGroupName(processName);
-// dayMap.put(apsResourceDateStat.getPlanDay().toString(), apsResourceDateStatTemp);
-// }else{
-// dayMap.put(apsResourceDateStat.getPlanDay().toString(), apsResourceDateStat);
-// }
-// });
-// JSONArray tempList = new JSONArray();
-// dayMap.forEach((key, value) -> {
-// JSONObject temp = new JSONObject();
-// temp.put("planDay", key);
-// temp.put("designTimes", value.getDesignTimes());
-// temp.put("requireTimes", value.getRequireTimes());
-// temp.put("capacityLoad", value.getCapacityLoad());
-// temp.put("resourceGroupName", value.getResourceGroupName());
-// tempList.add(temp);
-// });
-// processData.add(new JSONObject().put(processName, tempList));
-// });
- if("month".equals(apsGasPipingRouteStat.getSearchType())){
- for (String key : processMapMonth.keySet()) {
- HashMap<String, List<ApsResourceDateStat>> temp = new HashMap<>();
- temp.put(key, processMapMonth.get(key));
- processListMonth.add(temp);
+ for (int i=0;i<processList.size();i++){
+ HashMap<String, List<ApsResourceDateStat>> temp = processList.get(i);
+ for (Map.Entry<String, List<ApsResourceDateStat>> entry : temp.entrySet()){
+ List<ApsResourceDateStat> apsResourceDateStatList = entry.getValue();
+ if(apsResourceDateStatList.size()<=0){
+ for(String tempTime:sortedStartPlanTimeList){
+ ApsResourceDateStat apsResourceDateStat = new ApsResourceDateStat();
+ apsResourceDateStat.setPlanDay(LocalDate.parse(tempTime, formatter));
+ if("month".equals(apsGasPipingRouteStat.getSearchType())){
+ apsResourceDateStat.setDesignTimes(apsGasPipingPlanMap.get(entry.getKey())!=null?apsGasPipingPlanMap.get(entry.getKey()).getMonthProduceAllNum():new BigDecimal(0));
+ }else{
+ apsResourceDateStat.setDesignTimes(apsGasPipingPlanMap.get(entry.getKey())!=null?apsGasPipingPlanMap.get(entry.getKey()).getDayProduceAllNum():new BigDecimal(0));
+ }
+ apsResourceDateStat.setRequireTimes(new BigDecimal(0));
+ apsResourceDateStat.setCapacityLoad(new BigDecimal(0));
+ apsResourceDateStat.setResourceName(entry.getKey());
+ apsResourceDateStat.setResourceGroupName(entry.getKey());
+ apsResourceDateStatList.add(apsResourceDateStat);
+ }
+ temp.put(entry.getKey(), apsResourceDateStatList);
+ processList.set(i, temp);
+ }
}
- result.put("planTable", processListMonth);
- }else{
- for (String key : processMap.keySet()) {
- HashMap<String, List<ApsResourceDateStat>> temp = new HashMap<>();
- temp.put(key, processMap.get(key));
- processList.add(temp);
- }
- result.put("planTable", processList);
}
+ result.put("planTable", processList);
result.put("planTitle", sortedStartPlanTimeList);
} catch (Exception e) {
e.printStackTrace();
@@ -431,8 +425,8 @@
dataRow.createCell(0).setCellValue(resourceName);
for (int j = 0; j < resourceDateStats.size(); j++) {
ApsResourceDateStat apsResourceDateStat = resourceDateStats.get(j);
- dataRow.createCell(j*3+1).setCellValue(apsResourceDateStat.getDesignTimes());
- dataRow.createCell(j*3+2).setCellValue(apsResourceDateStat.getRequireTimes());
+ dataRow.createCell(j*3+1).setCellValue(apsResourceDateStat.getDesignTimes().doubleValue());
+ dataRow.createCell(j*3+2).setCellValue(apsResourceDateStat.getRequireTimes().doubleValue());
if(apsResourceDateStat.getCapacityLoad()!=null){
dataRow.createCell(j*3+3).setCellValue(apsResourceDateStat.getCapacityLoad().doubleValue()+"%");
}else{
--
Gitblit v1.9.3