From 9079c4f09f4c267576638b5f41c8aa695742a66a Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 06 四月 2026 21:00:46 +0800
Subject: [PATCH] #取消出库优化

---
 src/main/java/com/zy/asrs/controller/OpenController.java    |   11 +----
 src/main/java/com/zy/asrs/task/WrkMastScheduler.java        |    3 +
 src/main/java/com/zy/asrs/controller/WrkMastController.java |    2 
 src/main/java/com/zy/common/service/CommonService.java      |   49 ++++++++++++++++--------
 4 files changed, 37 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 669f683..062ca37 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -27,15 +27,12 @@
 import com.zy.core.thread.StationThread;
 import com.zy.system.entity.Config;
 import com.zy.system.service.ConfigService;
-import com.zy.system.service.HighPrivilegeGrantService;
 
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
-
-import jakarta.servlet.http.HttpServletRequest;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -63,10 +60,6 @@
     private ConfigService configService;
     @Autowired
     private DeviceConfigService deviceConfigService;
-    @Autowired
-    private HighPrivilegeGrantService highPrivilegeGrantService;
-    @Autowired
-    private HttpServletRequest request;
 
     // 绉诲簱浠诲姟
     @PostMapping("/createLocMoveTask")
@@ -144,7 +137,7 @@
         if (param == null) {
             return R.error("鍙傛暟涓嶈兘涓虹┖");
         }
-        boolean completeTask = commonService.cancelTask(param, false);
+        boolean completeTask = commonService.cancelTask(param);
         if (completeTask) {
             return R.ok();
         }
@@ -170,7 +163,7 @@
         if (param == null) {
             return R.error("鍙傛暟涓嶈兘涓虹┖");
         }
-        CancelTaskBatchResult result = commonService.cancelTaskBatch(param, false);
+        CancelTaskBatchResult result = commonService.cancelTaskBatch(param);
         return R.ok().add(result);
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/WrkMastController.java b/src/main/java/com/zy/asrs/controller/WrkMastController.java
index 535c355..c27a3ae 100644
--- a/src/main/java/com/zy/asrs/controller/WrkMastController.java
+++ b/src/main/java/com/zy/asrs/controller/WrkMastController.java
@@ -90,7 +90,7 @@
             return R.error("鍙傛暟涓嶈兘涓虹┖");
         }
         highPrivilegeGrantService.assertGranted(request.getHeader("token"), "鍙栨秷浠诲姟");
-        return commonService.cancelTask(param, true) ? R.ok() : R.error("浠诲姟鍙栨秷澶辫触");
+        return commonService.forceCancelTask(param) ? R.ok() : R.error("浠诲姟鍙栨秷澶辫触");
     }
 
     private <T> void convert(Map<String, Object> map, QueryWrapper<T> wrapper){
diff --git a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
index c7258ce..2d9ac1f 100644
--- a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
@@ -271,7 +271,8 @@
     @Scheduled(cron = "0/1 * * * * ? ")
     @Transactional
     public void executeCancelTask(){
-        List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("mk", "taskCancel"));
+        List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>()
+                .in("mk", "taskCancel", "taskForceCancel"));
         if (wrkMasts.isEmpty()) {
             return;
         }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index c34ef3d..8c4ef5a 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -20,6 +20,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Comparator;
@@ -124,7 +125,8 @@
         return true;
     }
 
-    public boolean cancelTask(CancelTaskParam param, boolean allowDirectCancel) {
+    @Transactional
+    public boolean cancelTask(CancelTaskParam param) {
         WrkMast wrkMast = null;
         Integer wrkNo = param.getWrkNo();
         String taskNo = param.getTaskNo();//wms浠诲姟鍙�
@@ -139,17 +141,6 @@
 
         if (null == wrkMast) {
             throw new CoolException("浠诲姟涓嶅瓨鍦�");
-        }
-
-        if (allowDirectCancel) {
-            boolean updated = wrkMastService.update(null, new UpdateWrapper<WrkMast>()
-                    .eq("wrk_no", wrkMast.getWrkNo())
-                    .set("mk", "taskCancel")
-                    .set("modi_time", new Date()));
-            if (!updated) {
-                throw new CoolException("浠诲姟鍙栨秷澶辫触");
-            }
-            return true;
         }
 
         Long expectedWrkSts;
@@ -176,6 +167,34 @@
                 .set("modi_time", new Date()));
         if (!updated) {
             throw new CoolException("浠诲姟鐘舵�佸凡鍙樺寲锛屽彇娑堝け璐�");
+        }
+        return true;
+    }
+
+    @Transactional
+    public boolean forceCancelTask(CancelTaskParam param) {
+        WrkMast wrkMast = null;
+        Integer wrkNo = param.getWrkNo();
+        String taskNo = param.getTaskNo();//wms浠诲姟鍙�
+
+        if (wrkNo == null) {
+            if (!Cools.isEmpty(taskNo)) {
+                wrkMast = wrkMastService.getOne(new QueryWrapper<WrkMast>().eq("wms_wrk_no", taskNo));
+            }
+        } else {
+            wrkMast = wrkMastService.selectByWorkNo(wrkNo);
+        }
+
+        if (wrkMast == null) {
+            throw new CoolException("浠诲姟涓嶅瓨鍦�");
+        }
+
+        boolean updated = wrkMastService.update(null, new UpdateWrapper<WrkMast>()
+                .eq("wrk_no", wrkMast.getWrkNo())
+                .set("mk", "taskForceCancel")
+                .set("modi_time", new Date()));
+        if (!updated) {
+            throw new CoolException("浠诲姟寮哄埗鍙栨秷澶辫触");
         }
         return true;
     }
@@ -282,10 +301,6 @@
     }
 
     public CancelTaskBatchResult cancelTaskBatch(CancelTaskBatchParam param) {
-        return cancelTaskBatch(param, false);
-    }
-
-    public CancelTaskBatchResult cancelTaskBatch(CancelTaskBatchParam param, boolean allowDirectCancel) {
         if (param == null) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
         }
@@ -305,7 +320,7 @@
 
             boolean cancelStatus = false;
             try {
-                cancelStatus = cancelTask(cancelTaskParam, allowDirectCancel);
+                cancelStatus = cancelTask(cancelTaskParam);
             } catch (Exception e) {
             }
 

--
Gitblit v1.9.1