From bea49667b0a34a17490c4b47f6a14857a737f647 Mon Sep 17 00:00:00 2001
From: 刘小明 <liuxm_a@163.com>
Date: 星期三, 17 七月 2024 08:47:31 +0800
Subject: [PATCH] 新增生产日志历史表,每天00:05把生产日志表中的数据移动到历史表中

---
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrDevice.java                         |    2 
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceProductionLog.java          |    2 
 pms-parent/pms-global/src/main/resources/mapper/StaDeviceProductionLogMapper.xml                  |    6 
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoSta/StaDeviceProductionLogPastMapper.java |   21 ++++
 pms-parent/pms-global/src/main/resources/mapper/StaDeviceProductionLogPastMapper.xml              |   53 ++++++++++
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceLast.java                   |    2 
 pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/config/AppStartupRunner.java           |   16 +++
 pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/task/LogMoveTask.java                  |   25 +++++
 pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/process/ProcessSv.java                 |   12 ++
 pms-parent/pms-global/src/main/resources/mapper/StaDeviceLifeLastMapper.xml                       |   14 +-
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceLife.java                   |    2 
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceProductionLogPast.java      |  106 +++++++++++++++++++++
 12 files changed, 249 insertions(+), 12 deletions(-)

diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoSta/StaDeviceProductionLogPastMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoSta/StaDeviceProductionLogPastMapper.java
new file mode 100644
index 0000000..a59132e
--- /dev/null
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoSta/StaDeviceProductionLogPastMapper.java
@@ -0,0 +1,21 @@
+package com.dy.pmsGlobal.daoSta;
+
+import com.dy.pmsGlobal.pojoSta.StaDeviceProductionLogPast;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author User
+* @description 閽堝琛ㄣ�恠ta_device_production_log_past(杩囧線璁惧鐢熶骇鏃ュ織琛紝瀛樺偍鍘嗗彶鏃ュ織鏁版嵁)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-07-13 10:34:59
+* @Entity com.dy.pmsGlobal.pojoSta.StaDeviceProductionLogPast
+*/
+@Mapper
+public interface StaDeviceProductionLogPastMapper {
+
+    int insertIntoPastLogs();
+    int deleteFromLogTable();
+
+    StaDeviceProductionLogPast selectByPrimaryKey(Long id);
+
+//    void createNewTable(String newTableName);
+}
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrDevice.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrDevice.java
index 8495254..beb8002 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrDevice.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrDevice.java
@@ -47,7 +47,7 @@
     public String qrCode;
 
     /**
-     * 鐘舵��:姝e湪鐢熶骇锛�0锛夛紝鐢熶骇缁撴潫锛�1锛�
+     * 鐘舵��:寰呯敓浜э紙0锛夛紝1(缁勮涓�),2(瀹屾垚),3(缁翠慨),4(鎶ュ簾),5(娴嬭瘯涓嶉�氳繃),6(鍝佹涓嶉�氳繃)
      */
     public Integer status;
 }
\ No newline at end of file
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceLast.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceLast.java
index 41f9d23..38d20ca 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceLast.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceLast.java
@@ -66,7 +66,7 @@
     */
     public String deviceCycleContent;
     /**
-    * 鐘舵��: 1:缁勮涓�,2:瀹屾垚,3:缁翠慨,4:鎶ュ簾,5:娴嬭瘯涓嶉�氳繃,6:鍝佹涓嶉�氳繃
+    * 鐘舵��: 0:寰呯敓浜�,1:缁勮涓�,2:瀹屾垚,3:缁翠慨,4:鎶ュ簾,5:娴嬭瘯涓嶉�氳繃,6:鍝佹涓嶉�氳繃
     */
     public Integer status;
     /**
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceLife.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceLife.java
index 2df3032..81ac20e 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceLife.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceLife.java
@@ -67,7 +67,7 @@
     public String deviceCycleContent;
 
     /**
-    * 鐘舵��: 1:缁勮涓�,2:瀹屾垚,3:缁翠慨,4:鎶ュ簾
+    * 鐘舵��: 0:寰呯敓浜�,1:缁勮涓�,2:瀹屾垚,3:缁翠慨,4:鎶ュ簾,5:娴嬭瘯涓嶉�氳繃,6:鍝佹涓嶉�氳繃
     */
     public Integer status;
     /**
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceProductionLog.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceProductionLog.java
index c29613d..193f784 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceProductionLog.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceProductionLog.java
@@ -66,7 +66,7 @@
     */
     public String deviceCycleContent;
     /**
-    * 鐘舵��: 1:缁勮涓�,2:瀹屾垚,3:缁翠慨,4:鎶ュ簾
+    * 鐘舵��: 0:寰呯敓浜�,1:缁勮涓�,2:瀹屾垚,3:缁翠慨,4:鎶ュ簾,5:娴嬭瘯涓嶉�氳繃,6:鍝佹涓嶉�氳繃
     */
     public Integer status;
     /**
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceProductionLogPast.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceProductionLogPast.java
new file mode 100644
index 0000000..b430230
--- /dev/null
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoSta/StaDeviceProductionLogPast.java
@@ -0,0 +1,106 @@
+package com.dy.pmsGlobal.pojoSta;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+
+
+
+import java.util.Date;
+
+/**
+* 杩囧線璁惧鐢熶骇鏃ュ織琛紝瀛樺偍鍘嗗彶鏃ュ織鏁版嵁
+* @TableName sta_device_production_log_past
+*/
+@TableName(value="sta_device_production_log_past", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class StaDeviceProductionLogPast implements BaseEntity {
+
+    /**
+    * 
+    */
+    @NotNull(message="涓嶈兘涓虹┖")
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long id;
+    /**
+    * 璁惧鐮�
+    */
+    @NotBlank(message="璁惧鐮佷笉鑳戒负绌�")
+    public String deviceNo;
+    /**
+    * 鐢熶骇鐧诲綍id
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long workId;
+    /**
+    * 缁翠慨id
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long repairId;
+    /**
+    * 璁″垝id
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long planId;
+    /**
+    * 宸ョ珯id
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long stationId;
+    /**
+    * 褰撳墠鑺傜偣
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long currNode;
+    /**
+    * 鑺傜偣浣滀笟鍐呭
+    */
+    public String nodeContent;
+    /**
+    * 璁板綍璁惧鍛ㄦ湡鍐呭
+    */
+    public String deviceCycleContent;
+    /**
+    * 鐘舵��: 0(寰呯敓浜э級锛�1(缁勮涓�),2(瀹屾垚),3(缁翠慨),4(鎶ュ簾),5(娴嬭瘯涓嶉�氳繃),6(鍝佹涓嶉�氳繃)
+    */
+    public Integer status;
+    /**
+    * 1:鎴愬姛,2:澶辫触
+    */
+    public Integer result;
+    /**
+    * 缁翠慨鑺傜偣杩斿洖鐨勯敊璇俊鎭�
+    */
+    public String errorMsg;
+    /**
+    * 杈呭姪浜哄憳:杈呭姪鍛樺伐id,浠ラ�楀彿闅斿紑
+    */
+    public String assistants;
+    /**
+    * 鍏ョ珯鏃堕棿
+    */
+    public Date inTime;
+    /**
+    * 鍑虹珯鏃堕棿
+    */
+    public Date outTime;
+    /**
+    * 鎿嶄綔鍛榠d
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long updatedBy;
+    /**
+    * 澶囨敞
+    */
+    public String memo;
+
+
+}
diff --git a/pms-parent/pms-global/src/main/resources/mapper/StaDeviceLifeLastMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/StaDeviceLifeLastMapper.xml
index aadffd9..e5b4514 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/StaDeviceLifeLastMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/StaDeviceLifeLastMapper.xml
@@ -22,6 +22,7 @@
             <result property="updatedBy" column="updated_by" jdbcType="BIGINT"/>
             <result property="memo" column="memo" jdbcType="VARCHAR"/>
     </resultMap>
+
     <resultMap id="joinResultMap" type="com.dy.pmsGlobal.pojoSta.StaDeviceLifeLast" extends="BaseResultMap">
         <result property="planName" column="plan_name" jdbcType="VARCHAR"/>
         <result property="stationName" column="station_name" jdbcType="VARCHAR"/>
@@ -38,11 +39,12 @@
         in_time,out_time,updated_by,
         memo
     </sql>
+
     <select id="selectByDeviceNo" parameterType="java.lang.String" resultMap="joinResultMap">
         select
             t.* ,p.`name` plan_name,s.`name` station_name,u.`name` update_user_name
         FROM
-            sta_device_life t
+            sta_device_life_last t
                 left join pr_assembly_plan p on t.plan_id=p.id
                 left join plt_station s on s.id = t.station_id
                 left JOIN ba_user u on u.id=t.updated_by
@@ -54,12 +56,12 @@
         select
         <include refid="Base_Column_List" />
         from sta_device_life_last
-        where  id = #{id,jdbcType=BIGINT} 
+        where  id = #{id,jdbcType=BIGINT}
     </select>
 
     <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
         delete from sta_device_life_last
-        where  id = #{id,jdbcType=BIGINT} 
+        where  id = #{id,jdbcType=BIGINT}
     </delete>
     <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pmsGlobal.pojoSta.StaDeviceLifeLast" useGeneratedKeys="true">
         insert into sta_device_life_last
@@ -164,11 +166,11 @@
                     memo = #{memo,jdbcType=VARCHAR},
                 </if>
         </set>
-        where   id = #{id,jdbcType=BIGINT} 
+        where   id = #{id,jdbcType=BIGINT}
     </update>
     <update id="updateByPrimaryKey" parameterType="com.dy.pmsGlobal.pojoSta.StaDeviceLifeLast">
         update sta_device_life_last
-        set 
+        set
             device_no =  #{deviceNo,jdbcType=VARCHAR},
             work_id =  #{workId,jdbcType=BIGINT},
             repair_id =  #{repairId,jdbcType=BIGINT},
@@ -184,7 +186,7 @@
             out_time =  #{outTime,jdbcType=TIMESTAMP},
             updated_by =  #{updatedBy,jdbcType=BIGINT},
             memo =  #{memo,jdbcType=VARCHAR}
-        where   id = #{id,jdbcType=BIGINT} 
+        where   id = #{id,jdbcType=BIGINT}
     </update>
     <update id="updateByDeviceNo">
         update sta_device_life_last
diff --git a/pms-parent/pms-global/src/main/resources/mapper/StaDeviceProductionLogMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/StaDeviceProductionLogMapper.xml
index f815c1e..6bf8a26 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/StaDeviceProductionLogMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/StaDeviceProductionLogMapper.xml
@@ -51,11 +51,13 @@
         select
             t.* ,p.`name` plan_name,s.`name` station_name,u.`name` update_user_name
         FROM
-            sta_device_production_log t
+            (
+                select * from sta_device_production_log_past where  device_no = #{deviceNo,jdbcType=VARCHAR} union
+                select * from sta_device_production_log where device_no = #{deviceNo,jdbcType=VARCHAR}
+            ) t
                 left join pr_assembly_plan p on t.plan_id=p.id
                 left join plt_station s on s.id = t.station_id
                 left JOIN ba_user u on u.id=t.updated_by
-        where  t.device_no = #{deviceNo,jdbcType=VARCHAR}
         ORDER BY t.id DESC
     </select>
 
diff --git a/pms-parent/pms-global/src/main/resources/mapper/StaDeviceProductionLogPastMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/StaDeviceProductionLogPastMapper.xml
new file mode 100644
index 0000000..f4e0fe2
--- /dev/null
+++ b/pms-parent/pms-global/src/main/resources/mapper/StaDeviceProductionLogPastMapper.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pmsGlobal.daoSta.StaDeviceProductionLogPastMapper">
+
+    <resultMap id="BaseResultMap" type="com.dy.pmsGlobal.pojoSta.StaDeviceProductionLogPast">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="deviceNo" column="device_no" jdbcType="VARCHAR"/>
+            <result property="workId" column="work_id" jdbcType="BIGINT"/>
+            <result property="repairId" column="repair_id" jdbcType="BIGINT"/>
+            <result property="planId" column="plan_id" jdbcType="BIGINT"/>
+            <result property="stationId" column="station_id" jdbcType="BIGINT"/>
+            <result property="currNode" column="curr_node" jdbcType="BIGINT"/>
+            <result property="nodeContent" column="node_content" jdbcType="VARCHAR"/>
+            <result property="deviceCycleContent" column="device_cycle_content" jdbcType="VARCHAR"/>
+            <result property="status" column="status" jdbcType="TINYINT"/>
+            <result property="result" column="result" jdbcType="TINYINT"/>
+            <result property="errorMsg" column="error_msg" jdbcType="VARCHAR"/>
+            <result property="assistants" column="assistants" jdbcType="VARCHAR"/>
+            <result property="inTime" column="in_time" jdbcType="TIMESTAMP"/>
+            <result property="outTime" column="out_time" jdbcType="TIMESTAMP"/>
+            <result property="updatedBy" column="updated_by" jdbcType="BIGINT"/>
+            <result property="memo" column="memo" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,device_no,work_id,
+        repair_id,plan_id,station_id,
+        curr_node,node_content,device_cycle_content,
+        status,result,error_msg,
+        assistants,in_time,out_time,
+        updated_by,memo
+    </sql>
+<!--    <update id="createNewTable">-->
+<!--        CREATE TABLE ${newTableName} LIKE sta_device_production_log-->
+<!--    </update>-->
+
+    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from sta_device_production_log_past
+        where  id = #{id,jdbcType=BIGINT} 
+    </select>
+
+    <!-- 灏嗚繃寰�鏃ュ織绉诲姩鍒� sta_device_production_log_past -->
+    <insert id="insertIntoPastLogs">
+        INSERT INTO sta_device_production_log_past SELECT * FROM sta_device_production_log WHERE DATE(out_time) != CURDATE();
+    </insert>
+    <delete id="deleteFromLogTable">
+        DELETE FROM sta_device_production_log WHERE DATE(out_time) != CURDATE();
+    </delete>
+</mapper>
diff --git a/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/process/ProcessSv.java b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/process/ProcessSv.java
index d51b920..50c55f4 100644
--- a/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/process/ProcessSv.java
+++ b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/process/ProcessSv.java
@@ -29,6 +29,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -150,10 +151,21 @@
         if (loginUser != null) {
             process.creator = loginUser.id;
         }
+        AtomicInteger startCount = new AtomicInteger();
+        AtomicInteger endCount = new AtomicInteger();
         process.nodes.forEach(node -> {
             node.processId = process.id;
             node.deleted = false;
+            if(node.isStart){
+                startCount.getAndIncrement();
+            }
+            if(node.isEnd){
+                endCount.getAndIncrement();
+            }
         });
+        if (startCount.get() != 1 || endCount.get() != 1) {
+            throw new RuntimeException("鑺傜偣寮�濮嬪拰缁撴潫鑺傜偣鏈変笖鍙兘鏈変竴涓�");
+        }
     }
 
     // 灏嗚妭鐐瑰拰宸ヤ綔鎸囩ず鐨勪繚瀛橀�昏緫灏佽鍒颁竴涓柟娉曚腑
diff --git a/pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/config/AppStartupRunner.java b/pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/config/AppStartupRunner.java
new file mode 100644
index 0000000..cd9b256
--- /dev/null
+++ b/pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/config/AppStartupRunner.java
@@ -0,0 +1,16 @@
+package com.dy.pmsStation.config;
+
+import com.dy.common.schedulerTask.SchedulerTaskSupport;
+import com.dy.pmsStation.task.LogMoveTask;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+@Component
+public class AppStartupRunner implements CommandLineRunner {
+
+    @Override
+    public void run(String... args) throws Exception {
+        SchedulerTaskSupport.addDailyJob("logMoveTask", "station", LogMoveTask.class,
+                null, 0, 5);
+    }
+}
diff --git a/pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/task/LogMoveTask.java b/pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/task/LogMoveTask.java
new file mode 100644
index 0000000..2e20fd5
--- /dev/null
+++ b/pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/task/LogMoveTask.java
@@ -0,0 +1,25 @@
+package com.dy.pmsStation.task;
+
+import com.dy.common.schedulerTask.TaskJob;
+import com.dy.common.springUtil.SpringContextUtil;
+import com.dy.pmsGlobal.daoSta.StaDeviceProductionLogPastMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+@Slf4j
+@Component
+public class LogMoveTask extends TaskJob {
+
+    @Override
+    @Transactional
+    public void execute(JobExecutionContext ctx) throws JobExecutionException {
+        log.info("鐢熶骇鏃ュ織绉诲姩浠诲姟寮�濮�");
+        StaDeviceProductionLogPastMapper pastMapper = SpringContextUtil.getBean(StaDeviceProductionLogPastMapper.class);
+        pastMapper.insertIntoPastLogs();
+        pastMapper.deleteFromLogTable();
+        log.info("鐢熶骇鏃ュ織绉诲姩浠诲姟缁撴潫");
+    }
+}

--
Gitblit v1.8.0