From 8027c8e2e0b5c559da612b187031dd6fd82d9bc7 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 04 四月 2026 12:03:48 +0800
Subject: [PATCH] #任务分析异常修复

---
 src/main/java/com/zy/asrs/task/WrkMastScheduler.java |   92 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 79 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
index 87dfaea..c7258ce 100644
--- a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
@@ -3,16 +3,19 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.zy.asrs.domain.enums.NotifyMsgType;
+import com.zy.asrs.entity.BasStation;
 import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.WrkMastLog;
 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.service.*;
 import com.zy.asrs.utils.NotifyUtils;
+import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.LocStsType;
+import com.zy.core.enums.SlaveType;
 import com.zy.core.enums.WrkIoType;
 import com.zy.core.enums.WrkStsType;
+import com.zy.core.thread.StationThread;
+import com.zy.core.utils.StationOperateProcessUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -31,17 +34,24 @@
     private final WrkAnalysisService wrkAnalysisService;
     private final LocMastService locMastService;
     private final NotifyUtils notifyUtils;
+    private final StationOperateProcessUtils stationOperateProcessUtils;
+    private final BasStationService basStationService;
 
     public WrkMastScheduler(WrkMastService wrkMastService,
                             WrkMastLogService wrkMastLogService,
                             WrkAnalysisService wrkAnalysisService,
                             LocMastService locMastService,
-                            NotifyUtils notifyUtils) {
+                            NotifyUtils notifyUtils,
+                            StationOperateProcessUtils stationOperateProcessUtils,
+                            BasStationService basStationService
+    ) {
         this.wrkMastService = wrkMastService;
         this.wrkMastLogService = wrkMastLogService;
         this.wrkAnalysisService = wrkAnalysisService;
         this.locMastService = locMastService;
         this.notifyUtils = notifyUtils;
+        this.stationOperateProcessUtils = stationOperateProcessUtils;
+        this.basStationService = basStationService;
     }
 
     @Scheduled(cron = "0/1 * * * * ? ")
@@ -53,6 +63,10 @@
         }
 
         for (WrkMast wrkMast : wrkMasts) {
+            Integer taskNo = wrkMast.getWrkNo();
+            Integer sourceStaNo = wrkMast.getSourceStaNo();
+            Integer staNo = wrkMast.getStaNo();
+
             String locNo = wrkMast.getLocNo();
             LocMast locMast = locMastService.queryByLoc(locNo);
             if (locMast == null) {
@@ -75,10 +89,11 @@
             }
 
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+            WrkMastLog wrkMastLog = wrkMastLogService.saveRecord(wrkMast.getWrkNo());
+            if (wrkMastLog == null) {
                 log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
             } else {
-                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
+                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast), wrkMastLog.getId());
             }
             // 鍒犻櫎宸ヤ綔涓绘。
             if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
@@ -87,6 +102,17 @@
 
             //涓婃姤
             notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast));
+
+            //娓呯悊璺緞
+            List<BasStation> basStations = basStationService.list(new QueryWrapper<BasStation>().in("station_id", sourceStaNo, staNo));
+            if (!basStations.isEmpty()) {
+                for (BasStation basStation : basStations) {
+                    StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basStation.getDeviceNo());
+                    if (stationThread != null) {
+                        stationOperateProcessUtils.attemptClearTaskPath(stationThread, taskNo);
+                    }
+                }
+            }
         }
     }
 
@@ -99,6 +125,10 @@
         }
 
         for (WrkMast wrkMast : wrkMasts) {
+            Integer taskNo = wrkMast.getWrkNo();
+            Integer sourceStaNo = wrkMast.getSourceStaNo();
+            Integer staNo = wrkMast.getStaNo();
+
             String locNo = wrkMast.getSourceLocNo();
             LocMast locMast = locMastService.queryByLoc(locNo);
             if (locMast == null) {
@@ -121,10 +151,11 @@
             }
 
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+            WrkMastLog wrkMastLog = wrkMastLogService.saveRecord(wrkMast.getWrkNo());
+            if (wrkMastLog == null) {
                 log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
             } else {
-                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
+                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast), wrkMastLog.getId());
             }
             // 鍒犻櫎宸ヤ綔涓绘。
             if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
@@ -133,6 +164,17 @@
 
             //涓婃姤
             notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast));
+
+            //娓呯悊璺緞
+            List<BasStation> basStations = basStationService.list(new QueryWrapper<BasStation>().in("station_id", sourceStaNo, staNo));
+            if (!basStations.isEmpty()) {
+                for (BasStation basStation : basStations) {
+                    StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basStation.getDeviceNo());
+                    if (stationThread != null) {
+                        stationOperateProcessUtils.attemptClearTaskPath(stationThread, taskNo);
+                    }
+                }
+            }
         }
     }
 
@@ -188,10 +230,11 @@
             }
 
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+            WrkMastLog wrkMastLog = wrkMastLogService.saveRecord(wrkMast.getWrkNo());
+            if (wrkMastLog == null) {
                 log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
             } else {
-                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
+                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast), wrkMastLog.getId());
             }
             // 鍒犻櫎宸ヤ綔涓绘。
             if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
@@ -205,6 +248,28 @@
 
     @Scheduled(cron = "0/1 * * * * ? ")
     @Transactional
+    public void executeCrnMove(){
+        List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_CRN_MOVE.sts));
+        if (wrkMasts.isEmpty()) {
+            return;
+        }
+
+        for (WrkMast wrkMast : wrkMasts) {
+            WrkMastLog wrkMastLog = wrkMastLogService.saveRecord(wrkMast.getWrkNo());
+            if (wrkMastLog == null) {
+                log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+            } else {
+                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast), wrkMastLog.getId());
+            }
+
+            if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
+                log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
+            }
+        }
+    }
+
+    @Scheduled(cron = "0/1 * * * * ? ")
+    @Transactional
     public void executeCancelTask(){
         List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("mk", "taskCancel"));
         if (wrkMasts.isEmpty()) {
@@ -213,10 +278,11 @@
 
         for (WrkMast wrkMast : wrkMasts) {
             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+            WrkMastLog wrkMastLog = wrkMastLogService.saveRecord(wrkMast.getWrkNo());
+            if (wrkMastLog == null) {
                 log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
             } else {
-                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
+                wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast), wrkMastLog.getId());
             }
             // 鍒犻櫎宸ヤ綔涓绘。
             if (!wrkMastService.removeById(wrkMast.getWrkNo())) {

--
Gitblit v1.9.1