From 7a31cf800bcc70d598c63863f637cf0a183a940e Mon Sep 17 00:00:00 2001
From: huangjiayang <5265313@qq.com>
Date: 星期二, 29 四月 2025 11:45:25 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java |  199 +++++++++++++++++++++++++++++++++++++++
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingRouteStat.java                  |    7 +
 aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsGasPipingRouteStatController.java    |    6 +
 aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml                |   50 +++++++++-
 aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java            |    2 
 aps-modules/aps-core/src/main/java/com/aps/core/service/IApsGasPipingRouteStatService.java         |    6 +
 6 files changed, 264 insertions(+), 6 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsGasPipingRouteStatController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsGasPipingRouteStatController.java
index 744dd6b..02dabe3 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsGasPipingRouteStatController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/ApsGasPipingRouteStatController.java
@@ -130,4 +130,10 @@
         apsGasPipingRouteStatService.exportExcel(response, apsGasPipingRouteStat);
     }
 
+    @PostMapping("/saveGasPipingRoutStateList")
+    public void saveGasPipingRoutStateList()
+    {
+        apsGasPipingRouteStatService.saveGasPipingRoutStateList();
+    }
+
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingRouteStat.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingRouteStat.java
index 076ac6d..abe1a53 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingRouteStat.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipingRouteStat.java
@@ -5,6 +5,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import org.springframework.data.annotation.Transient;
@@ -18,6 +19,7 @@
  * @author hjy
  * @date 2025-04-24
  */
+@EqualsAndHashCode(callSuper = true)
 @Schema(description = "姘斾綋绠¤矾浜ц兘璐熻浇缁熻瀹炰綋绫�")
 @Data
 public class ApsGasPipingRouteStat extends BaseEntity
@@ -36,7 +38,7 @@
     /** 宸ュ簭鍙� */
     @Excel(name = "宸ュ簭鍙�")
     @Schema(description = "宸ュ簭鍙�", type = "String")
-    private String roadProcessNumber;
+    private BigDecimal roadProcessNumber;
 
     /** 褰撳墠宸ュ簭鍙� */
     @Excel(name = "褰撳墠宸ュ簭鍙�")
@@ -130,6 +132,9 @@
     @Transient
     private String searchType;
 
+    private Boolean warning;
+    private Integer num;
+
     /** 璁″垝瀹屾垚鏃� */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Excel(name = "璁″垝瀹屽伐鏃�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java
index 074cf17..580dbfe 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipingRouteStatMapper.java
@@ -76,4 +76,6 @@
      * @return
      */
     public int insertApsGasPipingRouteStatBatch(List<ApsGasPipingRouteStat> apsGasPipingRouteStatList);
+
+    List<ApsGasPipingRouteStat> queryTempStat();
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsGasPipingRouteStatService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsGasPipingRouteStatService.java
index 664fac3..ced6c54 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsGasPipingRouteStatService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsGasPipingRouteStatService.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.aps.core.domain.ApsGasPipingRouteStat;
 import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -82,4 +83,9 @@
      * @param response
      */
     public void exportExcel(HttpServletResponse response, ApsGasPipingRouteStat apsGasPipingRouteStat);
+
+    void saveGasPipingProcessStat();
+
+    @Transactional
+    void saveGasPipingRoutStateList();
 }
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 9c7677c..53070f7 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
@@ -1,5 +1,6 @@
 package com.aps.core.service.impl;
 
+import cn.hutool.core.util.IdUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.aps.common.core.utils.DateUtils;
 import com.aps.common.core.utils.uuid.IdUtils;
@@ -22,6 +23,7 @@
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -519,4 +521,201 @@
 
         return yearMonths;
     }
+
+    @Override
+    public void saveGasPipingProcessStat(){
+        try {
+            String batchNum = IdUtils.fastSimpleUUID();
+            List<ApsGasPipingRouteStat> tempList = apsGasPipingRouteStatMapper.queryTempStat();
+            Map<String, List<ApsGasPipingRouteStat>> groupByOrderNo = tempList.stream().collect(groupingBy(ApsGasPipingRouteStat::getWorkOrderNo));
+            Boolean hasBefore = false;
+            LocalDateTime now = LocalDateTime.now();
+            for (Map.Entry<String, List<ApsGasPipingRouteStat>> entry : groupByOrderNo.entrySet()) {
+                List<ApsGasPipingRouteStat> statPerOrder = entry.getValue();
+                /*num 涓烘牴鎹畬宸ユ椂闂存帓搴忓嚭鐨勫簭鍙凤紝鎸夋鎺掑簭锛屽彲淇濊瘉鏄寜瀹屽伐鏃堕棿鍊掑彊鎺掑垪*/
+                statPerOrder.sort((a, b)->a.getNum().compareTo(b.getNum()));
+                ApsGasPipingRouteStat last=null;
+                for (int i = 0; i <statPerOrder.size(); i++) {
+                    ApsGasPipingRouteStat stat = statPerOrder.get(i);
+                    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);
+                        if(orderPlanEndDayLocalDateTime.isBefore(now)){
+                            hasBefore = true;
+                            stat.setWarning(true);
+                            stat.setProcessPlanEndDay(transDate(now));
+                            stat.setProcessPlanStartDay(transDate(now));
+                        }else {
+                            /*璁″垝瀹屽伐鏃�=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿*/
+                            stat.setProcessPlanEndDay(transDate(orderPlanEndDayLocalDateTime));
+                            /*璁″垝寮�宸ユ棩=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿 -  宸ュ簭鎬诲伐鏃�*/
+                            long seconds = stat.getProcessTotalTime().multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
+                            LocalDateTime lastPlanStartDt = orderPlanEndDayLocalDateTime.minusSeconds(seconds);
+                            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());
+                                /*寮�濮嬫椂闂�=缁撴潫鏃堕棿-鎬诲伐鏃�*/
+                                long seconds = stat.getProcessTotalTime().multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
+                                LocalDateTime crtStartDt = transLocalDateTime(last.getProcessPlanStartDay()).minusSeconds(seconds);
+                                /*濡傛灉寮�濮嬫椂闂村皬浜庡綋鍓嶆椂闂�*/
+                                if(crtStartDt.isBefore(now)){
+                                    hasBefore=true;
+                                    stat.setWarning(true);
+                                    stat.setProcessPlanStartDay(transDate(now));
+                                }else {
+                                    stat.setProcessPlanStartDay(transDate(crtStartDt));
+                                }
+                            }
+                        }
+                    }
+                    last = stat;
+                    apsGasPipingRouteStatMapper.insertApsGasPipingRouteStat(stat);
+                }
+                hasBefore=false;
+
+            }
+            apsGasPipingRouteStatMapper.deleteApsGasPipingRouteStatByBatchNum(batchNum);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    };
+
+    private Date transDate(LocalDateTime localDateTime){
+        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
+    }
+
+    private LocalDateTime transLocalDateTime(Date date){
+        return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
+    }
+
+    /**
+     * 淇濆瓨閽i噾缁熻鏁版嵁
+     */
+    @Transactional
+    @Override
+    public void saveGasPipingRoutStateList() {
+        String batchNum = IdUtils.fastSimpleUUID();
+        List<ApsGasPipingRouteStat> tempList = apsGasPipingRouteStatMapper.queryTempStat();
+        Map<String, List<ApsGasPipingRouteStat>> groupByOrderNo = tempList.stream().collect(groupingBy(ApsGasPipingRouteStat::getWorkOrderNo));
+
+        LocalDateTime now = LocalDateTime.now();
+        /*寰呬繚瀛樼殑鏁版嵁*/
+        List<ApsGasPipingRouteStat> cptStateList = new ArrayList<>();
+        for (Map.Entry<String, List<ApsGasPipingRouteStat>> entry : groupByOrderNo.entrySet()) {
+            List<ApsGasPipingRouteStat> statPerOrder = entry.getValue();
+            /*num 涓烘牴鎹畬宸ユ椂闂存帓搴忓嚭鐨勫簭鍙凤紝鎸夋鎺掑簭锛屽彲淇濊瘉鏄寜瀹屽伐鏃堕棿鍊掑彊鎺掑垪*/
+            statPerOrder.sort((a, b)->a.getNum().compareTo(b.getNum()));
+            ApsGasPipingRouteStat last=null;
+            /*褰撳墠宸ュ簭鏄惁瀛樺湪 璁″垝寮�宸ユ椂闂� 灏忎簬 褰撳墠鐨勬椂闂达紝濡傛灉瀛樺湪鍚庣画璁剧疆涓哄綋鍓嶆椂闂�*/
+            boolean hasBefore = false;
+            for (int i = 0; i <statPerOrder.size(); i++) {
+                ApsGasPipingRouteStat stat = statPerOrder.get(i);
+                stat.setId(String.valueOf(IdUtil.getSnowflakeNextId()));
+                stat.setBatchNumber(batchNum);
+                stat.setCreateTime(DateUtils.getNowDate());
+                stat.setCreateBy(SecurityUtils.getUsername());
+                stat.setWarning(false);
+                stat.setDelFlag("0");
+                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);
+                    if(orderPlanEndDayLocalDateTime.isBefore(now)){
+                        hasBefore = true;
+                        stat.setWarning(true);
+                        stat.setProcessPlanEndDay(transDate(now));
+                        stat.setProcessPlanStartDay(transDate(now));
+                    }else {
+                        /*璁″垝瀹屽伐鏃�=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿*/
+                        stat.setProcessPlanEndDay(transDate(orderPlanEndDayLocalDateTime));
+                        /*璁″垝寮�宸ユ棩=閽i噾璁″垝宸ュ崟瀹屾垚鏃堕棿 -  宸ュ簭鎬诲伐鏃�*/
+                        long seconds = stat.getProcessTotalTime().multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
+                        LocalDateTime lastPlanStartDt = orderPlanEndDayLocalDateTime.minusSeconds(seconds);
+                        if(lastPlanStartDt.isBefore(now)){
+                            hasBefore = true;
+                            stat.setProcessPlanStartDay(transDate(now));
+                        }else {
+                            stat.setProcessPlanStartDay(transDate(lastPlanStartDt));
+                        }
+                    }
+                }
+                /*褰撳伐鑹哄伐搴忓彿 >= 宸ュ崟褰撳墠宸ュ簭 浠h〃鏄湭鏉ュ伐搴忥紝鎵嶈繘琛岃鍒掑紑宸ユ棩 鍜岃鍒掑畬宸ユ棩鐨勮绠�
+                 * 褰撳伐鑹哄伐搴忓彿 < 宸ュ崟褰撳墠宸ュ簭  杩囧幓宸ュ簭锛屼笉杩涜璁$畻
+                 * */
+                if( stat.getRoadProcessNumber().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());
+                            /*寮�濮嬫椂闂�=缁撴潫鏃堕棿-鎬诲伐鏃�*/
+                            long seconds = stat.getProcessTotalTime().multiply(new BigDecimal(60)).multiply(new BigDecimal(60)).longValue();
+                            LocalDateTime crtStartDt = transLocalDateTime(last.getProcessPlanStartDay()).minusSeconds(seconds);
+                            /*濡傛灉寮�濮嬫椂闂村皬浜庡綋鍓嶆椂闂�*/
+                            if(crtStartDt.isBefore(now)){
+                                hasBefore=true;
+                                stat.setWarning(true);
+                                stat.setProcessPlanStartDay(transDate(now));
+                            }else {
+                                stat.setProcessPlanStartDay(transDate(crtStartDt));
+                            }
+                        }
+                    }
+                }
+               if(stat.getProcessPlanStartDay()!=null){
+                   Date processPlanStartDay = stat.getProcessPlanStartDay();
+                   stat.setPlanStartYear(processPlanStartDay.getYear()+"");
+                   stat.setPlanStartMonth(processPlanStartDay.getMonth()+"");
+                   stat.setPlanStartDay(processPlanStartDay.getDay()+"");
+               }
+                last = stat;
+                cptStateList.add(stat);
+            }
+        }
+        // 鎵归噺鎻掑叆浠ユ彁楂樻�ц兘
+        if (!cptStateList.isEmpty()) {
+            int batchSize = 500;
+            int size = cptStateList.size();
+            for (int i = 0; i < size; i += batchSize) {
+                int end = Math.min(i + batchSize, size);
+                List<ApsGasPipingRouteStat> batch = cptStateList.subList(i, end);
+                apsGasPipingRouteStatMapper.insertApsGasPipingRouteStatBatch(batch);
+                log.info("鎵归噺鎻掑叆鏁版嵁锛屽紑濮嬩綅缃細{}锛岀粨鏉熶綅缃細{}", i, end);
+            }
+        }
+        apsGasPipingRouteStatMapper.deleteApsGasPipingRouteStatByBatchNum(batchNum);
+        log.info("鎵归噺鎻掑叆鏁版嵁瀹屾垚,batchNum:"+batchNum);
+    }
+
 }
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml
index 3da915a..ff25722 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml
@@ -26,10 +26,20 @@
         <result property="planStartYear"    column="plan_start_year"    />
         <result property="planStartMonth"    column="plan_start_month"    />
         <result property="planStartDay"    column="plan_start_day"    />
+        <result property="processPlanEndDay"    column="process_plan_end_day"    />
+        <result property="orderPlanEndDay"    column="order_plan_end_day"    />
+        <result property="routeProcessNumber"    column="route_process_number"    />
+        <result property="warning"    column="warning"    />
     </resultMap>
 
     <sql id="selectApsGasPipingRouteStatVo">
-        select id, work_order_no, road_process_number, current_process_number, production_quantity, standard_time, process_total_time, process_plan_start_day, design_times, del_flag, create_by, process_name, create_time, item_number, standard_dosage, process_total_dosage, design_capacity, major, plan_start_year, plan_start_month, plan_start_day from aps_gas_piping_route_stat
+        select id, work_order_no, road_process_number, current_process_number,
+               production_quantity, standard_time, process_total_time,
+               process_plan_start_day, design_times, del_flag, create_by,
+               process_name, create_time, item_number, standard_dosage,
+               process_total_dosage, design_capacity, major, plan_start_year,
+               plan_start_month, plan_start_day , warning
+        from aps_gas_piping_route_stat
     </sql>
 
     <select id="selectApsGasPipingRouteStatList" parameterType="ApsGasPipingRouteStat" resultMap="ApsGasPipingRouteStatResult">
@@ -75,7 +85,7 @@
             <if test="productionQuantity != null">production_quantity,</if>
             <if test="standardTime != null">standard_time,</if>
             <if test="processTotalTime != null">process_total_time,</if>
-            <if test="processPlanStartDay != null and processPlanStartDay != ''">process_plan_start_day,</if>
+            <if test="processPlanStartDay != null ">process_plan_start_day,</if>
             <if test="designTimes != null">design_times,</if>
             <if test="delFlag != null">del_flag,</if>
             <if test="createBy != null">create_by,</if>
@@ -89,6 +99,10 @@
             <if test="planStartYear != null">plan_start_year,</if>
             <if test="planStartMonth != null">plan_start_month,</if>
             <if test="planStartDay != null">plan_start_day,</if>
+            <if test="processPlanEndDay != null">process_plan_end_day,</if>
+            <if test="orderPlanEndDay != null">order_plan_end_day,</if>
+            <if test="batchNumber != null">batch_number,</if>
+            <if test="warning != null">warning,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -98,7 +112,7 @@
             <if test="productionQuantity != null">#{productionQuantity},</if>
             <if test="standardTime != null">#{standardTime},</if>
             <if test="processTotalTime != null">#{processTotalTime},</if>
-            <if test="processPlanStartDay != null and processPlanStartDay != ''">#{processPlanStartDay},</if>
+            <if test="processPlanStartDay != null ">#{processPlanStartDay},</if>
             <if test="designTimes != null">#{designTimes},</if>
             <if test="delFlag != null">#{delFlag},</if>
             <if test="createBy != null">#{createBy},</if>
@@ -112,6 +126,10 @@
             <if test="planStartYear != null">#{planStartYear},</if>
             <if test="planStartMonth != null">#{planStartMonth},</if>
             <if test="planStartDay != null">#{planStartDay},</if>
+            <if test="processPlanEndDay != null">#{processPlanEndDay},</if>
+            <if test="orderPlanEndDay != null">#{orderPlanEndDay},</if>
+            <if test="batchNumber != null">#{batchNumber},</if>
+            <if test="warning != null">#{warning},</if>
          </trim>
     </insert>
 
@@ -163,7 +181,7 @@
         id,work_order_no, road_process_number, current_process_number, production_quantity, standard_time,
         process_total_time, process_plan_start_day, design_times, del_flag, create_by, process_name,
         create_time, item_number, standard_dosage, process_total_dosage, design_capacity, major,
-        plan_start_year, plan_start_month, plan_start_day,batch_number,process_plan_end_day
+        plan_start_year, plan_start_month, plan_start_day,batch_number,process_plan_end_day,warning
         )
         VALUES
         <foreach collection="apsGasPipingRouteStatList" item="stat" separator=",">
@@ -172,10 +190,32 @@
             #{stat.standardTime}, #{stat.processTotalTime}, #{stat.processPlanStartDay}, #{stat.designTimes}, #{stat.delFlag},
             #{stat.createBy}, #{stat.processName}, #{stat.createTime}, #{stat.itemNumber}, #{stat.standardDosage},
             #{stat.processTotalDosage}, #{stat.designCapacity}, #{stat.major}, #{stat.planStartYear},
-            #{stat.planStartMonth}, #{stat.planStartDay}, #{stat.batchNumber}, #{stat.processPlanEndDay}
+            #{stat.planStartMonth}, #{stat.planStartDay}, #{stat.batchNumber}, #{stat.processPlanEndDay},#{stat.warning}
             )
         </foreach>
 
     </insert>
 
+    <select id="queryTempStat"  resultMap="ApsGasPipingRouteStatResult" >
+        select row_number() over (partition by rt.work_order_no order by rt.process_number desc ) as num,
+                rt.work_order_no,
+               rt.process_name,
+               cast(rt.process_number as numeric(18, 2))           as road_process_number,
+               cast(rt.process_number as numeric(18, 2))           as route_process_number,
+               cast(pl.process_number as numeric(18, 2))           as current_process_number,
+               pl.production_quantity,
+               rt.standard_time,
+               (rt.standard_time * pl.production_quantity)        as process_total_time,
+               rt.process_plan_start_day,
+               rt.process_plan_end_day,
+               pl.plan_end_day                         as order_plan_end_day,
+                rt.item_no as item_number,
+                pl.plan_type as major,
+               false as warning
+        from aps_gas_piping_plan as pl
+                 left join aps_process_route as rt on pl.document_number = rt.work_order_no
+        where pl.document_number is not null and rt.work_order_no is not null
+        order by rt.work_order_no asc, rt.process_number desc
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3