From 3adcbff31fdece77269744c8741f237e7a57348e Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 22 三月 2026 17:17:58 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/WrkMastScheduler.java |  106 +++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 86 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
index 707d3b9..87dfaea 100644
--- a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
@@ -1,11 +1,12 @@
 package com.zy.asrs.task;
 
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.zy.asrs.domain.enums.NotifyMsgType;
 import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.WrkAnalysisService;
 import com.zy.asrs.service.WrkMastLogService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.utils.NotifyUtils;
@@ -13,7 +14,6 @@
 import com.zy.core.enums.WrkIoType;
 import com.zy.core.enums.WrkStsType;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -26,19 +26,28 @@
 @Slf4j
 public class WrkMastScheduler {
 
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private WrkMastLogService wrkMastLogService;
-    @Autowired
-    private LocMastService locMastService;
-    @Autowired
-    private NotifyUtils notifyUtils;
+    private final WrkMastService wrkMastService;
+    private final WrkMastLogService wrkMastLogService;
+    private final WrkAnalysisService wrkAnalysisService;
+    private final LocMastService locMastService;
+    private final NotifyUtils notifyUtils;
+
+    public WrkMastScheduler(WrkMastService wrkMastService,
+                            WrkMastLogService wrkMastLogService,
+                            WrkAnalysisService wrkAnalysisService,
+                            LocMastService locMastService,
+                            NotifyUtils notifyUtils) {
+        this.wrkMastService = wrkMastService;
+        this.wrkMastLogService = wrkMastLogService;
+        this.wrkAnalysisService = wrkAnalysisService;
+        this.locMastService = locMastService;
+        this.notifyUtils = notifyUtils;
+    }
 
     @Scheduled(cron = "0/1 * * * * ? ")
     @Transactional
     public void executeIn(){
-        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_INBOUND.sts));
+        List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_INBOUND.sts));
         if (wrkMasts.isEmpty()) {
             return;
         }
@@ -68,9 +77,11 @@
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
             if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
                 log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+            } else {
+                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
             }
             // 鍒犻櫎宸ヤ綔涓绘。
-            if (!wrkMastService.deleteById(wrkMast)) {
+            if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
                 log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
             }
 
@@ -82,7 +93,7 @@
     @Scheduled(cron = "0/1 * * * * ? ")
     @Transactional
     public void executeOut(){
-        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_OUTBOUND.sts));
+        List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_OUTBOUND.sts));
         if (wrkMasts.isEmpty()) {
             return;
         }
@@ -95,8 +106,8 @@
                 continue;
             }
 
-            if (!locMast.getLocSts().equals("R")) {
-                log.info("[workNo={}]搴撲綅鐘舵�佷笉澶勪簬R", wrkMast.getWrkNo());
+            if (!(locMast.getLocSts().equals("R") || locMast.getLocSts().equals("O"))) {
+                log.info("[workNo={}]搴撲綅鐘舵�佷笉澶勪簬R or O", wrkMast.getWrkNo());
                 continue;
             }
 
@@ -112,9 +123,11 @@
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
             if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
                 log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+            } else {
+                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
             }
             // 鍒犻櫎宸ヤ綔涓绘。
-            if (!wrkMastService.deleteById(wrkMast)) {
+            if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
                 log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
             }
 
@@ -126,7 +139,7 @@
     @Scheduled(cron = "0/1 * * * * ? ")
     @Transactional
     public void executeLocMove(){
-        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_LOC_MOVE.sts));
+        List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_LOC_MOVE.sts));
         if (wrkMasts.isEmpty()) {
             return;
         }
@@ -177,9 +190,11 @@
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
             if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
                 log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+            } else {
+                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
             }
             // 鍒犻櫎宸ヤ綔涓绘。
-            if (!wrkMastService.deleteById(wrkMast)) {
+            if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
                 log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
             }
 
@@ -191,7 +206,7 @@
     @Scheduled(cron = "0/1 * * * * ? ")
     @Transactional
     public void executeCancelTask(){
-        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("mk", "taskCancel"));
+        List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("mk", "taskCancel"));
         if (wrkMasts.isEmpty()) {
             return;
         }
@@ -200,9 +215,11 @@
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
             if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
                 log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+            } else {
+                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
             }
             // 鍒犻櫎宸ヤ綔涓绘。
-            if (!wrkMastService.deleteById(wrkMast)) {
+            if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
                 log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
             }
 
@@ -237,4 +254,53 @@
         }
     }
 
+    @Scheduled(cron = "0/1 * * * * ? ")
+    @Transactional
+    public void processOutStationRun(){
+        List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_sts", WrkStsType.STATION_RUN.sts));
+        if (wrkMasts.isEmpty()) {
+            return;
+        }
+
+        for (WrkMast wrkMast : wrkMasts) {
+            String locNo = wrkMast.getSourceLocNo();
+            LocMast locMast = locMastService.queryByLoc(locNo);
+            if (locMast == null) {
+                log.info("[workNo={}]搴撲綅涓嶅瓨鍦�", wrkMast.getWrkNo());
+                continue;
+            }
+
+            if (locMast.getLocSts().equals("O")) {
+                continue;
+            }
+
+            if (!locMast.getLocSts().equals("R")) {
+                log.info("[workNo={}]搴撲綅鐘舵�佷笉澶勪簬R", wrkMast.getWrkNo());
+                continue;
+            }
+
+            locMast.setLocSts("O");
+            locMast.setBarcode("");
+            locMast.setModiTime(new Date());
+            boolean result = locMastService.updateById(locMast);
+            if (!result) {
+                log.info("[workNo={}]搴撲綅鐘舵�丱鏇存柊澶辫触", wrkMast.getWrkNo());
+                continue;
+            }
+        }
+    }
+
+    private Date resolveFinishTime(WrkMast wrkMast) {
+        if (wrkMast == null) {
+            return new Date();
+        }
+        if (wrkMast.getModiTime() != null) {
+            return wrkMast.getModiTime();
+        }
+        if (wrkMast.getIoTime() != null) {
+            return wrkMast.getIoTime();
+        }
+        return new Date();
+    }
+
 }

--
Gitblit v1.9.1