From 2a64b537e8e3bce9ce030585a3da17d48379c0ad Mon Sep 17 00:00:00 2001
From: sfd <sun.sunshine@163.com>
Date: 星期一, 26 五月 2025 15:04:45 +0800
Subject: [PATCH] 修改json类型转换错误

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java |   42 +++++++++++++++++++++++++++++++++---------
 1 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java
index bca5e70..c7bf07f 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPartRouteStatServiceImpl.java
@@ -3,6 +3,7 @@
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
@@ -13,12 +14,17 @@
 import com.aps.common.core.web.domain.AjaxResult;
 import com.aps.core.domain.ApsPartPlan;
 import com.aps.core.domain.ApsResourceDateStat;
+import com.aps.core.domain.ApsResourceGroup;
+import com.aps.core.mapper.ApsAbnormalProcessAnalysisMapper;
 import com.aps.core.mapper.ApsResourceGroupMapper;
+import com.aps.core.service.IApsAbnormalProcessAnalysisService;
+import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.util.IOUtils;
+import org.apache.poi.util.Removal;
 import org.apache.poi.xssf.streaming.SXSSFCell;
 import org.apache.poi.xssf.streaming.SXSSFRow;
 import org.apache.poi.xssf.streaming.SXSSFSheet;
@@ -28,6 +34,7 @@
 import com.aps.core.mapper.ApsPartRouteStatMapper;
 import com.aps.core.domain.ApsPartRouteStat;
 import com.aps.core.service.IApsPartRouteStatService;
+import org.springframework.transaction.annotation.Transactional;
 
 import static java.util.stream.Collectors.groupingBy;
 
@@ -46,6 +53,11 @@
     private ApsPartRouteStatMapper apsPartRouteStatMapper;
     @Autowired
     private ApsResourceGroupMapper resourceGroupMapper;
+    @Autowired
+    private ApsResourceGroupMapper apsResourceGroupMapper;
+
+    @Resource
+    private IApsAbnormalProcessAnalysisService analysisService;
 
     /**
      * 鏌ヨ闆朵欢缁熻琛�
@@ -125,6 +137,7 @@
     /**
      * 鏌ヨ闆朵欢宸ュ簭骞舵洿鏂拌鍒掑紑宸ユ棩鏈�
      * */
+    @Transactional
     @Override
     public void updatePartRoutPlanDate() {
         List<ApsPartRouteStat> tempList = apsPartRouteStatMapper.selectPartRoutStat();
@@ -144,24 +157,32 @@
                 /*鍒ゆ柇褰撳墠宸ュ簭 褰撳墠宸ュ簭鍙湁涓�鏉�*/
                 if (stat.getCurrentProcessNumber().equals(stat.getRoadProcessNumber())) {
                     /* 瀵� stat.getProcessPlanStartDay() 鍜屽綋鍓嶆棩鏈� 杩涜瀵规瘮锛屽彧瀵规瘮鍒版棩锛屼笉鐢ㄧ鍗佸垎绉�*/
-                    if (stat.getProcessPlanStartDay().toLocalDate().isBefore(LocalDateTime.now().toLocalDate())) {
-                        stat.setProcessPlanStartDay(LocalDateTime.now());
+                    LocalDate startLocalDate = LocalDate.ofInstant(stat.getProcessPlanStartDay().toInstant(), ZoneId.systemDefault());
+                    LocalDate nowLocalDate = LocalDate.now();
+                    if (startLocalDate.isBefore(nowLocalDate)) {
+                        stat.setProcessPlanStartDay(new Date());
                     }
                 }
                 /*鏈紑宸ュ伐搴忕殑璁″垝寮�宸ユ棩=涓婁竴閬撳伐搴忕殑璁″垝寮�宸ユ棩+涓婁竴閬撳伐搴忕殑宸ュ簭鎬诲伐鏃躲��*/
                 if (stat.getCurrentProcessNumber().compareTo(stat.getRoadProcessNumber()) < 0) {
                     if (last != null) {
-                        stat.setProcessPlanStartDay(last.getProcessPlanStartDay().plusHours(last.getProcessTotalTime()));
+                        LocalDateTime lastStartDate = LocalDateTime.ofInstant(last.getProcessPlanStartDay().toInstant(), ZoneId.systemDefault());
+                        long seconds = last.getProcessTotalTime().multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
+                        LocalDateTime currentStartDate = lastStartDate.plusSeconds(seconds);
+                        stat.setProcessPlanStartDay(Date.from(currentStartDate.atZone(ZoneId.systemDefault()).toInstant()));
                     }
                 }
                 /*淇濆瓨涓婁竴姝ヨ绠楃殑 寮�宸ユ棩*/
                 last = stat;
                 stat.setId(IdUtils.fastUUID().toString());
                 stat.setBatchNumber(batchNum);
+                stat.setDelFlag("0");
                 apsPartRouteStatMapper.insertApsPartRouteStat(stat);
             }
         }
         apsPartRouteStatMapper.deleteLastBatch(batchNum);
+        /*璁$畻骞朵繚瀛� 宸ュ簭寮傚父淇℃伅*/
+        analysisService.batchSaveAbnormalInfo();
     }
     /** 鏌ヨ璧勬簮鏃ュ巻琛�
      */
@@ -170,6 +191,7 @@
         /*鏌ュ嚭鎵�鏈夌粺璁$殑鏁版嵁*/
         AjaxResult result = new AjaxResult(200, "鐢熸垚鎴愬姛");
         List<ApsResourceDateStat> list = apsPartRouteStatMapper.selectResourceDateStat();
+        List<ApsResourceGroup> resourceGroupList = apsResourceGroupMapper.selectApsResourceGroupList(new ApsResourceGroup());
         if (!list.isEmpty()) {
             /*姹傚嚭璁″垝鐨勬渶澶ф椂闂达紝娌℃湁 璁剧疆涓哄綋鍓嶆椂闂�+15澶�*/
             ApsResourceDateStat apsResourceDateStat = list.stream().max(Comparator.comparing(ApsResourceDateStat::getPlanDay)).orElse(null);
@@ -186,10 +208,11 @@
                 startDay = startDay.plus(1, ChronoUnit.DAYS);
             }
             /*缁勭粐鍑哄垪澶存暟鎹�*/
-            List<String> resourceNames =list.stream().map(ApsResourceDateStat::getResourceName).distinct().toList();
+
             /*鍑嗗璧勬簮缁勪俊鎭�*/
             List<Map<String, List<ApsResourceDateStat>>> targetList = new ArrayList<>();
-            resourceNames.forEach(resourceName -> {
+            resourceGroupList.forEach(resourceGroup -> {
+                String resourceName=resourceGroup.getResourceGroupName();
                         /*鏍规嵁鏃ユ湡琛ㄥご鐨勯『搴忥紝缁勭粐鍑烘瘡涓棩鏈熶笅鐨勭粺璁¢」鐩�*/
                 Map<String, List<ApsResourceDateStat>> maps = new HashMap<>(Map.of());
                 List<ApsResourceDateStat> currentDaysResouces=new ArrayList<>();
@@ -206,8 +229,9 @@
                     else {
                         ApsResourceDateStat empty = new ApsResourceDateStat();
                         empty.setPlanDay(LocalDate.parse(planDay, formatter));
-                        empty.setDesignTimes(0);
-                        empty.setRequireTimes(0);
+                      //  empty.setDesignTimes(resourceGroup.getDevicesQuantity().intValue()*resourceGroup.getTheoryHours().intValue());
+                        empty.setDesignTimes(resourceGroup.getTheoryHours().multiply(BigDecimal.valueOf( resourceGroup.getDevicesQuantity())));
+                        empty.setRequireTimes(BigDecimal.ZERO);
                         empty.setResourceName(resourceName);
                         empty.setResourceGroupName(resourceName);
                         empty.setCapacityLoad(BigDecimal.ZERO);
@@ -279,8 +303,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());
                         dataRow.createCell(j*3+3).setCellValue(apsResourceDateStat.getCapacityLoad().doubleValue()+"%");
                     }
                 }

--
Gitblit v1.9.3