From 5640fc8f31e729bc4ddb7881c305dc41fe20314a Mon Sep 17 00:00:00 2001
From: huangjiayang <5265313@qq.com>
Date: 星期二, 29 四月 2025 11:25:57 +0800
Subject: [PATCH] 【UPDATE-BUGFIX】优化计算气柜管路产能统计底表数据计算功能

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java |   47 +++++++++++++++++++++++++++--------------------
 1 files changed, 27 insertions(+), 20 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 5557bab..9c7677c 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
@@ -148,6 +148,7 @@
                 apsProcessRoutes.sort((a, b)->b.getProcessNumber().compareTo(a.getProcessNumber()));
                 //鏄惁鎵惧埌褰撳墠宸ュ簭
                 boolean isCurrentProcess = false;
+                boolean lastProcessStartTimeIsBeforeNow = false;
                 ApsGasPipingRouteStat preApsProcessRoute = null;
                 for (int i=0;i<apsProcessRoutes.size();i++){
                     ApsProcessRoute apsProcessRoute = apsProcessRoutes.get(i);
@@ -171,28 +172,34 @@
                     //宸ュ簭鎬诲伐鏃� 绛変簬 鏍囧噯宸ユ椂*鐢熶骇鏁伴噺
                     apsGasPipingRouteStat.setProcessTotalTime(apsProcessRoute.getStandardTime().multiply(apsGasPipingPlan.getProductionQuantity()));
                     //璁″垝寮�宸ユ棩 濡傛灉鏄綋鍓嶅簭
-                    if(apsGasPipingRouteStat.getCurrentProcessNumber().toString().equals(apsGasPipingRouteStat.getRoadProcessNumber())) {
-                        /* 瀵� stat.getProcessPlanStartDay() 鍜屽綋鍓嶆棩鏈� 杩涜瀵规瘮锛屽彧瀵规瘮鍒版棩锛屼笉鐢ㄧ鍗佸垎绉�*/
-                        LocalDate startLocalDate = LocalDate.ofInstant(apsProcessRoute.getProcessPlanStartDay().toInstant(), ZoneId.systemDefault());
-                        LocalDate nowLocalDate = LocalDate.now();
-                        if (startLocalDate.isBefore(nowLocalDate)) {
-                            apsGasPipingRouteStat.setProcessPlanStartDay(new Date());
-                        }else{
-                            apsGasPipingRouteStat.setProcessPlanStartDay(apsProcessRoute.getProcessPlanStartDay());
-                        }
-                        apsGasPipingRouteStat.setProcessPlanEndDay(apsProcessRoute.getProcessPlanEndDay());
+                    if(apsGasPipingPlan.getProcessNumber().equals(apsProcessRoute.getProcessNumber())) {
                         isCurrentProcess = true;
-                    }else{
-                        // 涓婁竴閬撳伐搴忕殑缁撴潫鏃堕棿 = 涓婁竴閬撳伐搴忕殑寮�濮嬫椂闂� + 涓婁竴閬撳伐搴忕殑鎬诲伐鏃�
-                        if(i==0){
-                            apsGasPipingRouteStat.setProcessPlanEndDay(apsGasPipingPlan.getPlanEndDay());
-                            LocalDateTime planEndDay = apsGasPipingPlan.getPlanEndDay().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-                            long seconds = apsProcessRoute.getStandardTime().multiply(apsGasPipingPlan.getProductionQuantity()).multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
-                            LocalDateTime planStartDay = planEndDay.plusSeconds(-seconds);
-                            apsGasPipingRouteStat.setProcessPlanStartDay(Date.from(planStartDay.atZone(ZoneId.systemDefault()).toInstant()));
+                    }
+                    // 涓婁竴閬撳伐搴忕殑缁撴潫鏃堕棿 = 涓婁竴閬撳伐搴忕殑寮�濮嬫椂闂� + 涓婁竴閬撳伐搴忕殑鎬诲伐鏃�
+                    if(i==0){
+                        LocalDate endLocalDate = LocalDate.ofInstant(apsGasPipingPlan.getPlanEndDay().toInstant(), ZoneId.systemDefault());
+                        LocalDate nowLocalDate = LocalDate.now();
+                        LocalDateTime planEndDay;
+                        if(endLocalDate.isBefore(nowLocalDate)){
+                            planEndDay = LocalDateTime.now();
                         }else{
-                            apsGasPipingRouteStat.setProcessPlanEndDay(preApsProcessRoute.getProcessPlanEndDay());
-                            LocalDateTime planEndDay = apsGasPipingPlan.getPlanEndDay().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                            planEndDay = apsGasPipingPlan.getPlanEndDay().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                        }
+                        apsGasPipingRouteStat.setProcessPlanEndDay(Date.from(planEndDay.atZone(ZoneId.systemDefault()).toInstant()));
+                        long seconds = apsProcessRoute.getStandardTime().multiply(apsGasPipingPlan.getProductionQuantity()).multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
+                        LocalDateTime planStartDay = planEndDay.plusSeconds(-seconds);
+                        apsGasPipingRouteStat.setProcessPlanStartDay(Date.from(planStartDay.atZone(ZoneId.systemDefault()).toInstant()));
+                        if(planStartDay.isBefore(LocalDateTime.now())){
+                            lastProcessStartTimeIsBeforeNow = true;
+                        }
+                    }else{
+                        if(lastProcessStartTimeIsBeforeNow){
+                            Date now = new Date();
+                            apsGasPipingRouteStat.setProcessPlanStartDay(now);
+                            apsGasPipingRouteStat.setProcessPlanEndDay(now);
+                        }else{
+                            apsGasPipingRouteStat.setProcessPlanEndDay(preApsProcessRoute.getProcessPlanStartDay());
+                            LocalDateTime planEndDay = preApsProcessRoute.getProcessPlanStartDay().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
                             long seconds = apsProcessRoute.getStandardTime().multiply(apsGasPipingPlan.getProductionQuantity()).multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
                             LocalDateTime planStartDay = planEndDay.plusSeconds(-seconds);
                             apsGasPipingRouteStat.setProcessPlanStartDay(Date.from(planStartDay.atZone(ZoneId.systemDefault()).toInstant()));

--
Gitblit v1.9.3