From 981ae2281523545500846202b2ee8351a7f1ad1a Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期二, 07 四月 2026 10:56:40 +0800
Subject: [PATCH] 倒叙取消

---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |   42 ++++++++++++++++++++++++++++++++----------
 1 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 2e13cd7..b1eca9f 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -417,7 +417,7 @@
             return R.ok(confirmedCount == 0 ? "浠诲姟宸茬‘璁ゆ墽琛�" : "ERP纭鎵ц鍑哄簱鎴愬姛").add(result);
         }
         if (Objects.equals(param.getExecute(), 2)) {
-            // ERP璇锋眰鍙栨秷浠诲姟锛氱洿鎺ユ敹闆嗕换鍔″彿锛屾寜 taskList 鏍煎紡鍙戦�佺粰 WCS銆�
+            // ERP璇锋眰鍙栨秷浠诲姟锛氭寜 plt_type 浠庡ぇ鍒板皬鍏� WCS 鍐� WMS锛涘け璐ユ垨寮傚父鍒欏仠姝㈠悗缁紝鎺ュ彛浠嶈繑鍥炲師鎴愬姛缁撴瀯銆�
             Map<String, Object> result = new HashMap<>();
             result.put("orderNo", param.getOrderId());
             result.put("execute", param.getExecute());
@@ -425,22 +425,44 @@
             if (activeTasks.isEmpty()) {
                 return R.ok("鏃犳湁鏁堝嚭搴撲换鍔�").add(result);
             }
-            List<HashMap<String,Object>> taskList = new ArrayList<>();
-            for (WrkMast wrkMast : activeTasks) {
-                HashMap<String,Object> hashMap = new HashMap<>();
-                hashMap.put("taskNo", wrkMast.getWrkNo());
-                if (!Cools.isEmpty(wrkMast) && wrkMast.getWrkSts() ==11L) {
-                    workService.cancelWrkMast(wrkMast.getWrkNo()+"", 9955L);
-                    continue;
+            List<WrkMast> sorted = new ArrayList<>(activeTasks);
+            sorted.sort(Comparator.comparing(WrkMast::getPltType, Comparator.nullsLast(Comparator.reverseOrder())));
+            for (WrkMast wrkMast : sorted) {
+                try {
+                    if (!Cools.isEmpty(wrkMast) && wrkMast.getWrkSts() == 11L) {
+                        workService.cancelWrkMast(wrkMast.getWrkNo() + "", 9955L);
+                        continue;
+                    }
+                    HashMap<String, Object> hashMap = new HashMap<>();
+                    hashMap.put("taskNo", wrkMast.getWrkNo());
+                    List<HashMap<String, Object>> one = new ArrayList<>();
+                    one.add(hashMap);
+                    R wcsR = wcsApiService.pauseOutTasks(one);
+                    requireWcsPauseOk(wcsR);
+                    workService.cancelWrkMast(wrkMast.getWrkNo() + "", 9955L);
+                } catch (Exception e) {
+                    log.warn("[pakoutOrderPause] execute=2 鍙栨秷涓, orderNo={}, err={}", param.getOrderId(), e.getMessage());
+                    break;
                 }
-                taskList.add(hashMap);
             }
-            wcsApiService.pauseOutTasks(taskList);
             return R.ok("鍙栨秷浠诲姟宸插彂閫佽嚦WCS").add(result);
         }
         throw new CoolException("reason浠呮敮鎸�1鎴�2");
     }
 
+    /** WCS 杩斿洖闈炴垚鍔熺爜鏃舵姏閿� */
+    private void requireWcsPauseOk(R wcsR) {
+        if (wcsR == null) {
+            throw new CoolException("WCS鍙栨秷鍑哄簱浠诲姟鏃犺繑鍥�");
+        }
+        Object codeObj = wcsR.get("code");
+        int code = codeObj instanceof Number ? ((Number) codeObj).intValue() : -1;
+        if (code != 200) {
+            Object msgObj = wcsR.get("msg");
+            throw new CoolException(msgObj == null ? "WCS鍙栨秷鍑哄簱浠诲姟澶辫触" : String.valueOf(msgObj));
+        }
+    }
+
     @Override
     public R pakoutOrderExecute(OpenOrderPakoutExecuteParam param) {
         return null;

--
Gitblit v1.9.1