From 8bfafbd2e35e2cd0e370281c007fe98fe7fb91d3 Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期四, 17 四月 2025 14:15:36 +0800
Subject: [PATCH] 钣金统计表更新逻辑

---
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateProcessStat.java                  |   12 +++++
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessStatServiceImpl.java |   64 +++++++++++++++++++++++--------
 aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateProcessStatMapper.xml                |    8 +++
 3 files changed, 65 insertions(+), 19 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateProcessStat.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateProcessStat.java
index eb216e3..9d4a269 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateProcessStat.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlateProcessStat.java
@@ -1,7 +1,6 @@
 package com.aps.core.domain;
 
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -83,6 +82,10 @@
 
     /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */
     private String delFlag;
+
+
+
+    private Boolean warning;
 
     public void setId(String id) 
     {
@@ -237,6 +240,13 @@
     {
         return delFlag;
     }
+    public Boolean getWarning() {
+        return warning;
+    }
+
+    public void setWarning(Boolean warning) {
+        this.warning = warning;
+    }
 
     @Override
     public String toString() {
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessStatServiceImpl.java
index 33df3be..83ed6e3 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessStatServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessStatServiceImpl.java
@@ -110,6 +110,8 @@
         String batchNum = IdUtils.fastSimpleUUID();
         List<ApsPlateProcessStat> tempList = apsPlateProcessStatMapper.queryTempStat();
         Map<String, List<ApsPlateProcessStat>> groupByOrderNo = tempList.stream().collect(groupingBy(ApsPlateProcessStat::getWorkOrderNo));
+        Boolean hasBefore = false;
+        LocalDateTime now = LocalDateTime.now();
         for (Map.Entry<String, List<ApsPlateProcessStat>> entry : groupByOrderNo.entrySet()) {
             List<ApsPlateProcessStat> statPerOrder = entry.getValue();
             /*num 涓烘牴鎹畬宸ユ椂闂存帓搴忓嚭鐨勫簭鍙凤紝鎸夋鎺掑簭锛屽彲淇濊瘉鏄寜瀹屽伐鏃堕棿鍊掑彊鎺掑垪*/
@@ -120,33 +122,61 @@
                 stat.setId(IdUtils.fastSimpleUUID());
                 stat.setBatchNumber(batchNum);
                 stat.setCreateBy(SecurityUtils.getUsername());
+                stat.setWarning(false);
                 if(i==0){
                     Date orderPlanEndDay = stat.getOrderPlanEndDay();
                     LocalDateTime transLocalDateTime = transLocalDateTime(orderPlanEndDay);
                     LocalTime endOfDay = LocalTime.of(23, 59, 59);
                     LocalDateTime orderPlanEndDayLocalDateTime =  LocalDateTime.of( transLocalDateTime.toLocalDate(), endOfDay);
-
-                    /*璁″垝瀹屽伐鏃�=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿*/
-                    stat.setProcessPlanEndDay(transDate(orderPlanEndDayLocalDateTime));
-                    /*璁″垝寮�宸ユ棩=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿 -  宸ュ簭鎬诲伐鏃�*/
-                    stat.setProcessPlanStartDay(transDate(orderPlanEndDayLocalDateTime.minusHours(stat.getProcessTotalTime())));
-                }
-                /*褰撳伐鑹哄伐搴忓彿 > 宸ュ崟褰撳墠宸ュ簭鏃讹紝浠h〃鏄湭鏉ョ殑宸ュ簭锛屾墠杩涜璁″垝寮�宸ユ棩 鍜岃鍒掑畬宸ユ棩鐨勮绠�*/
-                if( stat.getRouteProcessNumber().compareTo(stat.getCurrentProcessNumber())>0){
-                    /*&璁″垝寮�宸ユ棩  鍜� 璁″垝瀹屾垚鏃� 锛屽悓鏃跺ぇ浜庡綋鍓嶆棩鏈熸椂鎵ц璁$畻*/
-                    LocalDateTime currentEndDay = transLocalDateTime(stat.getProcessPlanEndDay());
-                    LocalDateTime currentStartDay = transLocalDateTime(stat.getProcessPlanStartDay());
-                    if(currentEndDay.isAfter(LocalDateTime.now()) && currentStartDay.isAfter(LocalDateTime.now())){
-                        if(last!=null){
-                            /*鏈紑宸ュ伐搴忕殑璁″垝寮�宸ユ棩=涓婁竴閬撳伐搴忕殑璁″垝寮�宸ユ棩+涓婁竴閬撳伐搴忕殑宸ュ簭鎬诲伐鏃躲��*/
-                            stat.setProcessPlanEndDay(last.getProcessPlanStartDay());
-                            stat.setProcessPlanStartDay(transDate(transLocalDateTime(last.getProcessPlanStartDay()).minusHours(stat.getProcessTotalTime()) ));
+                    if(orderPlanEndDayLocalDateTime.isBefore(now)){
+                        hasBefore = true;
+                        stat.setWarning(true);
+                        stat.setProcessPlanEndDay(transDate(now));
+                        stat.setProcessPlanStartDay(transDate(now));
+                    }else {
+                        /*璁″垝瀹屽伐鏃�=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿*/
+                        stat.setProcessPlanEndDay(transDate(orderPlanEndDayLocalDateTime));
+                        /*璁″垝寮�宸ユ棩=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿 -  宸ュ簭鎬诲伐鏃�*/
+                        LocalDateTime lastPlanStartDt = orderPlanEndDayLocalDateTime.minusHours(stat.getProcessTotalTime());
+                        if(lastPlanStartDt.isBefore(now)){
+                            hasBefore = true;
+                            stat.setProcessPlanStartDay(transDate(now));
+                        }else {
+                            stat.setProcessPlanStartDay(transDate(lastPlanStartDt));
                         }
-                   }
+                    }
+                }
+                /*褰撳伐鑹哄伐搴忓彿 >= 宸ュ崟褰撳墠宸ュ簭 浠h〃鏄湭鏉ュ伐搴忥紝鎵嶈繘琛岃鍒掑紑宸ユ棩 鍜岃鍒掑畬宸ユ棩鐨勮绠�
+                * 褰撳伐鑹哄伐搴忓彿 < 宸ュ崟褰撳墠宸ュ簭  杩囧幓宸ュ簭锛屼笉杩涜璁$畻
+                * */
+                if( stat.getRouteProcessNumber().compareTo(stat.getCurrentProcessNumber())>=0){
+                    /*鍊掓帓鏃� 涓嬩竴閬撳伐搴忓瓨鍦� 姣斿綋鍓嶆椂闂村皬鐨勮鍒掓椂闂达紝鍒欏綋鍓嶈鍒掑紑濮嬪拰缁撴潫鏃堕棿閮芥槸褰撳墠鏃堕棿*/
+                    if(hasBefore){
+                        stat.setWarning(true);
+                        stat.setProcessPlanEndDay(transDate(now));
+                        stat.setProcessPlanStartDay(transDate(now));
+                    }else{
+                        /*涓嬩竴閬撳伐搴忚鍒掓椂闂撮兘姝e父鏃讹紝*/
+                        if (last != null) {
+                            /*褰撳墠宸ュ簭缁撴潫鏃堕棿=涓嬩竴閬撳伐搴忕殑寮�濮嬫椂闂�*/
+                            stat.setProcessPlanEndDay(last.getProcessPlanStartDay());
+                            /*寮�濮嬫椂闂�=缁撴潫鏃堕棿-鎬诲伐鏃�*/
+                            LocalDateTime crtStartDt = transLocalDateTime(last.getProcessPlanStartDay()).minusHours(stat.getProcessTotalTime());
+                            /*濡傛灉寮�濮嬫椂闂村皬浜庡綋鍓嶆椂闂�*/
+                            if(crtStartDt.isBefore(now)){
+                                hasBefore=true;
+                                stat.setWarning(true);
+                                stat.setProcessPlanStartDay(transDate(now));
+                            }else {
+                                stat.setProcessPlanStartDay(transDate(crtStartDt));
+                            }
+                        }
+                    }
                 }
                 last = stat;
                 apsPlateProcessStatMapper.insertApsPlateProcessStat(stat);
             }
+            hasBefore=false;
 
         }
         apsPlateProcessStatMapper.removeOtherStat(batchNum);
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateProcessStatMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateProcessStatMapper.xml
index 24b1626..aadf427 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateProcessStatMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsPlateProcessStatMapper.xml
@@ -22,10 +22,14 @@
         <result property="batchNumber"    column="batch_number"    />
         <result property="createBy"    column="create_by"    />
         <result property="delFlag"    column="del_flag"    />
+        <result property="warning"    column="warning"    />
     </resultMap>
 
     <sql id="selectApsPlateProcessStatVo">
-        select id, work_order_no, process_name, num, route_process_number, current_process_number, production_quantity, standard_time, process_total_time, process_plan_end_day,process_plan_start_day, order_plan_end_day, design_times, batch_number, create_by, del_flag from aps_plate_process_stat
+        select id, work_order_no, process_name, num, route_process_number, current_process_number, production_quantity,
+               standard_time, process_total_time, process_plan_end_day,process_plan_start_day, order_plan_end_day, design_times,
+               batch_number, create_by, del_flag, warning
+        from aps_plate_process_stat
     </sql>
 
     <select id="selectApsPlateProcessStatList" parameterType="ApsPlateProcessStat" resultMap="ApsPlateProcessStatResult">
@@ -69,6 +73,7 @@
             <if test="designTimes != null">design_times,</if>
             <if test="batchNumber != null">batch_number,</if>
             <if test="createBy != null">create_by,</if>
+            <if test="warning != null">warning,</if>
             del_flag,
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -87,6 +92,7 @@
             <if test="designTimes != null">#{designTimes},</if>
             <if test="batchNumber != null">#{batchNumber},</if>
             <if test="createBy != null">#{createBy},</if>
+            <if test="warning != null">#{warning},</if>
            '0'
          </trim>
     </insert>

--
Gitblit v1.9.3