From 191b8ae5c768fbb97c7cdea87edde77d0a10e7da Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期五, 09 五月 2025 15:15:41 +0800
Subject: [PATCH] 钣金需求匹配-完善工时计算

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java |   71 +++++++++++++++++++----------------
 1 files changed, 38 insertions(+), 33 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 53070f7..3a71bcf 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
@@ -21,6 +21,7 @@
 import org.apache.poi.xssf.streaming.SXSSFRow;
 import org.apache.poi.xssf.streaming.SXSSFSheet;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -28,12 +29,11 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.YearMonth;
-import java.time.ZoneId;
+import java.time.*;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+
+import static java.util.stream.Collectors.groupingBy;
 
 /**
  * 姘斾綋绠¤矾浜ц兘璐熻浇缁熻Service涓氬姟灞傚鐞�
@@ -166,7 +166,7 @@
                     //宸ュ簭鍚嶇О
                     apsGasPipingRouteStat.setProcessName(apsProcessRoute.getProcessName());
                     //宸ュ簭鍙�
-                    apsGasPipingRouteStat.setRoadProcessNumber(apsProcessRoute.getProcessNumber());
+                    apsGasPipingRouteStat.setRoadProcessNumber( new BigDecimal(apsProcessRoute.getProcessNumber()) );
                     //鏍囧噯宸ユ椂
                     apsGasPipingRouteStat.setStandardTime(apsProcessRoute.getStandardTime());
                     //涓撲笟
@@ -303,37 +303,42 @@
                 formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                 simpleDateFormat = new SimpleDateFormat("yyyy-MM");
             }
-            apsGasPipingRouteStats = apsGasPipingRouteStatMapper.selectApsGasPipingRouteStatList(apsGasPipingRouteStat);
+            ApsGasPipingRouteStat queryStatParam = new ApsGasPipingRouteStat();
+            BeanUtils.copyProperties(apsGasPipingRouteStat,queryStatParam);
+            queryStatParam.setMajor("");
+            apsGasPipingRouteStats = apsGasPipingRouteStatMapper.selectApsGasPipingRouteStatList(queryStatParam);
             //鏍规嵁寮�宸ユ棩杩涜鍗囧簭鎺掑簭
             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())){
-                    planStartDate = planStartDate+"-01";
-                }
-                ApsResourceDateStat apsResourceDateStat = new ApsResourceDateStat();
-                apsResourceDateStat.setPlanDay(LocalDate.parse(planStartDate, formatter));
-                apsResourceDateStat.setResourceName(apsGasPipingRouteStatTemp.getProcessName());
-                //鏌ヨ姘旀煖绠¤矾浜ц兘瑙勫垝琛�
-                apsResourceDateStat.setDesignTimes(apsGasPipingPlanMap.get(apsGasPipingRouteStatTemp.getProcessName()+"-"+planStartDate.substring(0, 7))!=null?apsGasPipingPlanMap.get(apsGasPipingRouteStatTemp.getProcessName()+"-"+planStartDate.substring(0, 7)).getDayProduceAllNum():new BigDecimal(0));
-                //鏌ヨ鏂欏彿宸ュ簭浜ц兘琛�
-                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));
-                }
-                List<ApsResourceDateStat> apsResourceDateStatList = new ArrayList<>();
                 if(processMap.containsKey(apsGasPipingRouteStatTemp.getProcessName())){
-                    apsResourceDateStatList = processMap.get(apsGasPipingRouteStatTemp.getProcessName());
+                    planStartDate = simpleDateFormat.format(apsGasPipingRouteStatTemp.getProcessPlanStartDay());
+                    if("month".equals(apsGasPipingRouteStat.getSearchType())){
+                        planStartDate = planStartDate+"-01";
+                    }
+                    ApsResourceDateStat apsResourceDateStat = new ApsResourceDateStat();
+                    apsResourceDateStat.setPlanDay(LocalDate.parse(planStartDate, formatter));
+                    apsResourceDateStat.setResourceName(apsGasPipingRouteStatTemp.getProcessName());
+                    //鏌ヨ姘旀煖绠¤矾浜ц兘瑙勫垝琛�
+                    apsResourceDateStat.setDesignTimes(apsGasPipingPlanMap.get(apsGasPipingRouteStatTemp.getProcessName()+"-"+planStartDate.substring(0, 7))!=null?apsGasPipingPlanMap.get(apsGasPipingRouteStatTemp.getProcessName()+"-"+planStartDate.substring(0, 7)).getDayProduceAllNum():new BigDecimal(0));
+                    //鏌ヨ鏂欏彿宸ュ簭浜ц兘琛�
+                    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));
+                    }
+                   // apsResourceDateStatList = new ArrayList<>();
+
+                    List<ApsResourceDateStat>   apsResourceDateStatList = processMap.get(apsGasPipingRouteStatTemp.getProcessName());
+                    apsResourceDateStatList.add(apsResourceDateStat);
+                    processMap.put(apsGasPipingRouteStatTemp.getProcessName(), apsResourceDateStatList);
                 }
-                apsResourceDateStatList.add(apsResourceDateStat);
-                processMap.put(apsGasPipingRouteStatTemp.getProcessName(), apsResourceDateStatList);
+
             }
             //鑱氬悎姣忛亾宸ュ簭鐨勫紑宸ユ椂闂村拰浜ц兘
             processMap.forEach((processName, apsResourceDateStatList) -> {
@@ -694,10 +699,10 @@
                     }
                 }
                if(stat.getProcessPlanStartDay()!=null){
-                   Date processPlanStartDay = stat.getProcessPlanStartDay();
-                   stat.setPlanStartYear(processPlanStartDay.getYear()+"");
-                   stat.setPlanStartMonth(processPlanStartDay.getMonth()+"");
-                   stat.setPlanStartDay(processPlanStartDay.getDay()+"");
+                   String[] strNow = new SimpleDateFormat("yyyy-MM-dd").format(stat.getProcessPlanStartDay()).toString().split("-");
+                   stat.setPlanStartYear(strNow[0]);
+                   stat.setPlanStartMonth(strNow[1]);
+                   stat.setPlanStartDay(strNow[2]);
                }
                 last = stat;
                 cptStateList.add(stat);
@@ -705,7 +710,7 @@
         }
         // 鎵归噺鎻掑叆浠ユ彁楂樻�ц兘
         if (!cptStateList.isEmpty()) {
-            int batchSize = 500;
+            int batchSize = 1000;
             int size = cptStateList.size();
             for (int i = 0; i < size; i += batchSize) {
                 int end = Math.min(i + batchSize, size);

--
Gitblit v1.9.3