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 | 95 +++++++++++++++++++++++++++++++----------------
1 files changed, 63 insertions(+), 32 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 4858d9e..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.*;
@@ -25,7 +25,6 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
-import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -55,6 +54,9 @@
@Autowired
private IApsGasMaterialUsageService apsGasMaterialUsageService;
+
+ @Autowired
+ private IApsStandardProcessService apsStandardProcessService;
/**
* 鏌ヨ姘斾綋绠¤矾浜ц兘璐熻浇缁熻
@@ -185,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");
@@ -201,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);
@@ -233,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());
@@ -259,9 +271,6 @@
apsGasPipingRouteStats = apsGasPipingRouteStatMapper.selectApsGasPipingRouteStatList(apsGasPipingRouteStat);
//鏍规嵁寮�宸ユ棩杩涜鍗囧簭鎺掑簭
apsGasPipingRouteStats.sort((a, b)->a.getProcessPlanStartDay().compareTo(b.getProcessPlanStartDay()));
- //宸ュ簭鍒嗙粍缁熻
- HashMap<String, List<ApsResourceDateStat>> processMap = new HashMap<>();
- List<HashMap<String, List<ApsResourceDateStat>>> processList = new ArrayList<>();
//宸ュ簭寮�宸ユ棩鏈�
String planStartDate = "";
//缁熻鎵�鏈夊伐搴忓搴旂殑寮�宸ユ椂闂�
@@ -274,13 +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())
- .divide(BigDecimal.valueOf(apsResourceDateStat.getDesignTimes()), 2, RoundingMode.HALF_UP)
- .multiply(BigDecimal.valueOf(100)));
+ 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));
}
@@ -298,14 +307,18 @@
startPlanTimeSet.add(apsResourceDateStat.getPlanDay().toString());
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){
- apsResourceDateStat.setCapacityLoad(BigDecimal.valueOf(apsResourceDateStat.getRequireTimes())
- .divide(BigDecimal.valueOf(apsResourceDateStat.getDesignTimes()), 2, RoundingMode.HALF_UP)
- .multiply(BigDecimal.valueOf(100)));
+ if("month".equals(apsGasPipingRouteStat.getSearchType())){
+ apsResourceDateStatTemp.setDesignTimes(apsGasPipingPlanMap.get(processName)!=null?apsGasPipingPlanMap.get(processName).getMonthProduceAllNum():new BigDecimal(0));
}else{
- apsResourceDateStatTemp.setCapacityLoad(BigDecimal.valueOf(0));
+ 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());
@@ -318,19 +331,37 @@
dayMap.forEach((key, value) -> {
tempList.add(value);
});
-// processMap.put(processName, tempList);
HashMap<String, List<ApsResourceDateStat>> temp = new HashMap<>();
temp.put(processName, tempList);
processList.add(temp);
});
-// for (String key : processMap.keySet()) {
-// HashMap<String, List<ApsResourceDateStat>> temp = new HashMap<>();
-// temp.put(key, processMap.get(key));
-// processList.add(temp);
-// }
//鎺掑簭鏃堕棿鏍囬
List<String> sortedStartPlanTimeList = new ArrayList<>(startPlanTimeSet);
Collections.sort(sortedStartPlanTimeList);
+ 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", processList);
result.put("planTitle", sortedStartPlanTimeList);
} catch (Exception e) {
@@ -394,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