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

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java |   53 +++++++++++---------------
 aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingPlanMapper.xml                     |    6 ++-
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingPlan.java                       |   12 ++++++
 3 files changed, 38 insertions(+), 33 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingPlan.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingPlan.java
index dd2c4f0..3f1f122 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingPlan.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingPlan.java
@@ -170,6 +170,18 @@
     @Excel(name = "涓嬩竴宸ュ簭鍚嶇О")
     private String nextOpName;
 
+    /** 涓嬩竴宸ュ簭鍚嶇О */
+    @Excel(name = "褰撳墠宸ュ簭鍚嶇О")
+    private String stdOp;
+
+    public String getStdOp() {
+        return stdOp;
+    }
+
+    public void setStdOp(String stdOp) {
+        this.stdOp = stdOp;
+    }
+
     public String getOpStatus() {
         return opStatus;
     }
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 be5115c..b34c170 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
@@ -171,41 +171,32 @@
                     //宸ュ簭鎬诲伐鏃� 绛変簬 鏍囧噯宸ユ椂*鐢熶骇鏁伴噺
                     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());
+                    if(apsGasPipingPlan.getProcessNumber().equals(apsProcessRoute.getProcessNumber())) {
+                        if(apsGasPipingPlan.getOpStatus()==null || apsGasPipingPlan.getOpStatus().equals("瀹屽伐")){
+                            break;
                         }
-                        LocalDateTime planStartDay = apsGasPipingRouteStat.getProcessPlanStartDay().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-                        long seconds = apsProcessRoute.getStandardTime().multiply(apsGasPipingPlan.getProductionQuantity()).multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
-                        apsGasPipingRouteStat.setProcessPlanEndDay(Date.from(planStartDay.plusSeconds(seconds).atZone(ZoneId.systemDefault()).toInstant()));
                         isCurrentProcess = true;
-                    }else{
-                        // 涓婁竴閬撳伐搴忕殑缁撴潫鏃堕棿 = 涓婁竴閬撳伐搴忕殑寮�濮嬫椂闂� + 涓婁竴閬撳伐搴忕殑鎬诲伐鏃�
-                        if(i==0){
-                            apsGasPipingRouteStat.setProcessPlanEndDay(apsGasPipingPlan.getPlanEndDay());
-                            LocalDate endLocalDate = LocalDate.ofInstant(apsGasPipingPlan.getPlanEndDay().toInstant(), ZoneId.systemDefault());
-                            LocalDate nowLocalDate = LocalDate.now();
-                            LocalDateTime planEndDay;
-                            if(endLocalDate.isBefore(nowLocalDate)){
-                                planEndDay = LocalDateTime.now();
-                            }else{
-                                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){
+                        apsGasPipingRouteStat.setProcessPlanEndDay(apsGasPipingPlan.getPlanEndDay());
+                        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();
-                            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()));
+                            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()));
+                    }else{
+                        apsGasPipingRouteStat.setProcessPlanEndDay(preApsProcessRoute.getProcessPlanEndDay());
+                        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()));
                     }
                     //鎻掑叆 骞� 鏈� 鏃�
                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingPlanMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingPlanMapper.xml
index 32539f0..902d4a1 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingPlanMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingPlanMapper.xml
@@ -78,6 +78,8 @@
         <result property="processNumber"    column="process_number"    />
         <result property="planType"    column="plan_type"    />
         <result property="planEndDay"    column="plan_end_day"    />
+        <result property="stdOp"    column="std_op"    />
+        <result property="opStatus"    column="op_status"    />
         <collection property="apsProcessRoutes" javaType="java.util.ArrayList" ofType="com.aps.core.domain.ApsProcessRoute">
             <result property="processNumber"    column="process_number_sub"    />
             <result property="processName"    column="process_name"    />
@@ -287,9 +289,9 @@
     </update>
 
     <select id="selectApsGasPipingPlanWithProcess" parameterType="ApsGasPipingPlan" resultMap="ApsGasPipingPlanResultWithProcess">
-        select c.* from (select a.document_number,a.item_number,a.process_number,a.production_quantity,a.plan_type,a.plan_end_day,b.process_name,b.process_number as process_number_sub,b.standard_time,b.process_plan_start_day,b.process_plan_end_day from aps_gas_piping_plan a
+        select c.* from (select a.document_number,a.item_number,a.process_number,a.production_quantity,a.plan_type,a.plan_end_day,a.std_op,a.op_status,b.process_name,b.process_number as process_number_sub,b.standard_time,b.process_plan_start_day,b.process_plan_end_day from aps_gas_piping_plan a
            left join aps_process_route b on a.document_number = b.work_order_no
-        where a.document_status in ('0','1','2','4') and b.process_plan_start_day is not null and b.process_name in(select process_name from aps_standard_process where major='姘旀煖' or major='绠¤矾') ORDER BY a.document_number,b.process_number) c GROUP BY c.document_number,c.item_number,c.process_number,c.production_quantity,c.process_name,c.process_number_sub,c.standard_time,c.process_plan_start_day,c.plan_type,c.process_plan_end_day,c.plan_end_day
+        where a.document_status in ('0','1','2','4') and b.process_plan_start_day is not null and b.process_name in(select process_name from aps_standard_process where major='姘旀煖' or major='绠¤矾') ORDER BY a.document_number,b.process_number) c GROUP BY c.document_number,c.item_number,c.process_number,c.production_quantity,c.process_name,c.process_number_sub,c.standard_time,c.process_plan_start_day,c.plan_type,c.process_plan_end_day,c.plan_end_day,c.std_op,c.op_status
     </select>
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3