From dc3f9cc91759823ce59486f19b138be4b296a0f1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 28 四月 2026 09:43:28 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/service/WrkCommandRollbackService.java |   72 +++++++++++++++++++++++++----------
 1 files changed, 51 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/zy/core/service/WrkCommandRollbackService.java b/src/main/java/com/zy/core/service/WrkCommandRollbackService.java
index bd6ac11..d10bf93 100644
--- a/src/main/java/com/zy/core/service/WrkCommandRollbackService.java
+++ b/src/main/java/com/zy/core/service/WrkCommandRollbackService.java
@@ -1,6 +1,7 @@
 package com.zy.core.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.domain.param.ManualRollbackTaskParam;
@@ -70,13 +71,21 @@
 
         saveWrkLog(wrkMast.getWrkNo());
 
-        wrkMast.setWrkSts(updateStatus);
-        wrkMast.setSendFailCount(nextFailCount);
-        wrkMast.setErrorTime(new Date());
-        wrkMast.setErrorMemo(failMessage);
-        wrkMast.setSystemMsg(failMessage);
-        wrkMast.setModiTime(new Date());
-        wrkMastService.updateById(wrkMast);
+        Long currentWrkSts = wrkMast.getWrkSts();
+        Date now = new Date();
+        boolean updated = wrkMastService.update(null, new UpdateWrapper<WrkMast>()
+                .set("wrk_sts", updateStatus)
+                .set("send_fail_count", nextFailCount)
+                .set("error_time", now)
+                .set("error_memo", failMessage)
+                .set("system_msg", failMessage)
+                .set("modi_time", now)
+                .eq("wrk_no", wrkMast.getWrkNo())
+                .eq("wrk_sts", currentWrkSts));
+        if (!updated) {
+            log.info("宸ヤ綔妗g姸鎬佸凡鍙樺寲锛岃烦杩囧懡浠ゅけ璐ュ洖婊氥�倃rkNo={}", wrkMast.getWrkNo());
+            return;
+        }
 
         if (manualRequired) {
             News.taskError(wrkMast.getWrkNo(), "{}涓嬪彂鍛戒护澶辫触锛屽凡杈惧埌鑷姩鍥炴粴涓婇檺({})锛岃鍦ㄥ伐浣滄。鎵嬪姩鍥炴粴銆傚師鍥�: {}", deviceName, rollbackLimit, failMessage);
@@ -99,11 +108,17 @@
 
         saveWrkLog(wrkMast.getWrkNo());
 
-        wrkMast.setWrkSts(rollbackStatus);
-        wrkMast.setSendFailCount(0);
-        wrkMast.setSystemMsg("浜哄伐鍥炴粴瀹屾垚锛岀瓑寰呴噸鏂颁笅鍙�");
-        wrkMast.setModiTime(new Date());
-        wrkMastService.updateById(wrkMast);
+        Long currentWrkSts = wrkMast.getWrkSts();
+        boolean updated = wrkMastService.update(null, new UpdateWrapper<WrkMast>()
+                .set("wrk_sts", rollbackStatus)
+                .set("send_fail_count", 0)
+                .set("system_msg", "浜哄伐鍥炴粴瀹屾垚锛岀瓑寰呴噸鏂颁笅鍙�")
+                .set("modi_time", new Date())
+                .eq("wrk_no", wrkMast.getWrkNo())
+                .eq("wrk_sts", currentWrkSts));
+        if (!updated) {
+            throw new CoolException("浠诲姟鐘舵�佸凡鍙樺寲锛岃鍒锋柊鍚庨噸璇�");
+        }
         News.taskInfo(wrkMast.getWrkNo(), "浜哄伐鍥炴粴瀹屾垚锛屼换鍔$姸鎬佸凡鎭㈠涓哄緟鎵ц");
         return true;
     }
@@ -118,12 +133,17 @@
 
         saveWrkLog(wrkMast.getWrkNo());
 
-        wrkMast.setSendFailCount(0);
-        wrkMast.setErrorTime(null);
-        wrkMast.setErrorMemo(null);
-        wrkMast.setSystemMsg("");
-        wrkMast.setModiTime(new Date());
-        wrkMastService.updateById(wrkMast);
+        boolean updated = wrkMastService.update(null, new UpdateWrapper<WrkMast>()
+                .set("send_fail_count", 0)
+                .set("error_time", null)
+                .set("error_memo", null)
+                .set("system_msg", "")
+                .set("modi_time", new Date())
+                .eq("wrk_no", wrkMast.getWrkNo())
+                .eq("wrk_sts", wrkMast.getWrkSts()));
+        if (!updated) {
+            log.info("宸ヤ綔妗g姸鎬佸凡鍙樺寲锛岃烦杩囨竻鐞嗕笅鍙戝け璐ユ爣璁般�倃rkNo={}", wrkMast.getWrkNo());
+        }
     }
 
     private WrkMast findWrkMast(Integer wrkNo, String taskNo) {
@@ -168,18 +188,22 @@
     private boolean isSingleCrnRunStatus(Long wrkSts) {
         return Long.valueOf(WrkStsType.INBOUND_RUN.sts).equals(wrkSts)
                 || Long.valueOf(WrkStsType.OUTBOUND_RUN.sts).equals(wrkSts)
-                || Long.valueOf(WrkStsType.LOC_MOVE_RUN.sts).equals(wrkSts);
+                || Long.valueOf(WrkStsType.LOC_MOVE_RUN.sts).equals(wrkSts)
+                || Long.valueOf(WrkStsType.CRN_MOVE_RUN.sts).equals(wrkSts);
     }
 
     private Long getRollbackStatus(Long wrkSts) {
         if (Long.valueOf(WrkStsType.INBOUND_RUN.sts).equals(wrkSts)) {
-            return WrkStsType.INBOUND_DEVICE_RUN.sts;
+            return WrkStsType.INBOUND_STATION_RUN_COMPLETE.sts;
         }
         if (Long.valueOf(WrkStsType.OUTBOUND_RUN.sts).equals(wrkSts)) {
             return WrkStsType.NEW_OUTBOUND.sts;
         }
         if (Long.valueOf(WrkStsType.LOC_MOVE_RUN.sts).equals(wrkSts)) {
             return WrkStsType.NEW_LOC_MOVE.sts;
+        }
+        if (Long.valueOf(WrkStsType.CRN_MOVE_RUN.sts).equals(wrkSts)) {
+            return WrkStsType.NEW_CRN_MOVE.sts;
         }
         return null;
     }
@@ -194,12 +218,15 @@
         if (Long.valueOf(WrkStsType.LOC_MOVE_RUN.sts).equals(wrkSts)) {
             return WrkStsType.LOC_MOVE_MANUAL.sts;
         }
+        if (Long.valueOf(WrkStsType.CRN_MOVE_RUN.sts).equals(wrkSts)) {
+            return WrkStsType.CRN_MOVE_MANUAL.sts;
+        }
         return null;
     }
 
     private Long getRollbackStatusFromManual(Long wrkSts) {
         if (Long.valueOf(WrkStsType.INBOUND_MANUAL.sts).equals(wrkSts)) {
-            return WrkStsType.INBOUND_DEVICE_RUN.sts;
+            return WrkStsType.INBOUND_STATION_RUN_COMPLETE.sts;
         }
         if (Long.valueOf(WrkStsType.OUTBOUND_MANUAL.sts).equals(wrkSts)) {
             return WrkStsType.NEW_OUTBOUND.sts;
@@ -207,6 +234,9 @@
         if (Long.valueOf(WrkStsType.LOC_MOVE_MANUAL.sts).equals(wrkSts)) {
             return WrkStsType.NEW_LOC_MOVE.sts;
         }
+        if (Long.valueOf(WrkStsType.CRN_MOVE_MANUAL.sts).equals(wrkSts)) {
+            return WrkStsType.NEW_CRN_MOVE.sts;
+        }
         return null;
     }
 }

--
Gitblit v1.9.1