From cac27c083bacfcb1fe602d722729676f87ee7023 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期五, 24 四月 2026 15:20:25 +0800
Subject: [PATCH] 完善电视机出库托数延时高的问题

---
 src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java |   33 ++++++++++++++++++++++++++++++---
 1 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java b/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
index 603ded6..4fc62b5 100644
--- a/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
@@ -51,6 +51,7 @@
     private static final long OUT_LOCK_REPORT_SUCCESS_WRK_STS = 21L;
     private static final long OUT_LOCK_REPORT_FAIL_WRK_STS = 22L;
     private static final long OUTBOUND_CRN_COMPLETE_WRK_STS = 25L;
+    private static final long OUTBOUND_STATION_COMPLETE_WRK_STS = 26L;
     private static final String OUT_LOCK_REPORT_PENDING_FLAG = "P";
 
     /** 鍚屼竴 WCS 璺緞銆佸悓涓�鍗曞彿涓嬩竴缁勪笅鍙戠殑浠诲姟鏉℃暟涓婇檺 */
@@ -701,9 +702,18 @@
                     throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
                 }
             }
-        } else if (params.getNotifyType().equals("task")) {
+        } else if (isOutboundStationTaskRunComplete(params)) {
+            // WCS杈撻�佺珯鐐瑰嚭搴撲换鍔¤繍琛屽畬鎴愶細鎵樼洏宸插埌鐩殑鍦帮紝宸ヤ綔鐘舵�� -> 26銆�
+            if (isOutboundTask(mast) && canMarkOutboundStationComplete(mast)) {
+                mast.setWrkSts(OUTBOUND_STATION_COMPLETE_WRK_STS);
+                mast.setModiTime(new Date());
+                if (!wrkMastService.updateById(mast)) {
+                    throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+                }
+            }
+        } else if ("task".equalsIgnoreCase(params.getNotifyType())) {
             //浠诲姟
-            if (params.getMsgType().equals("task_complete")) {
+            if ("task_complete".equalsIgnoreCase(params.getMsgType())) {
 
                 if (mast.getIoType() == 1 || mast.getIoType() == 2 ||mast.getIoType() == 10) {
                     mast.setWrkSts(4L);
@@ -717,7 +727,7 @@
                     throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
                 }
                 //wcs浠诲姟鍙栨秷鎺ュ彛
-            } else if (params.getMsgType().equals("task_cancel")) {
+            } else if ("task_cancel".equalsIgnoreCase(params.getMsgType())) {
                 workService.cancelWrkMast(String.valueOf(mast.getWrkNo()), 9955L);
             }
         }
@@ -736,6 +746,12 @@
                 && "crn_out_task_complete".equalsIgnoreCase(params.getMsgType());
     }
 
+    private boolean isOutboundStationTaskRunComplete(ReceviceTaskParams params) {
+        return params != null
+                && "Devp".equalsIgnoreCase(params.getNotifyType())
+                && "station_out_task_run_complete".equalsIgnoreCase(params.getMsgType());
+    }
+
     private boolean isOutboundTask(WrkMast mast) {
         return mast != null && mast.getIoType() != null && (mast.getIoType() == 101 || mast.getIoType() == 110);
     }
@@ -756,6 +772,17 @@
         return mast.getWrkSts() < 14
                 || mast.getWrkSts().equals(OUT_LOCK_REPORT_SUCCESS_WRK_STS)
                 || mast.getWrkSts().equals(OUT_LOCK_REPORT_FAIL_WRK_STS)
+                || mast.getWrkSts().equals(OUTBOUND_CRN_COMPLETE_WRK_STS)
+                || mast.getWrkSts().equals(OUTBOUND_STATION_COMPLETE_WRK_STS);
+    }
+
+    private boolean canMarkOutboundStationComplete(WrkMast mast) {
+        if (mast == null || mast.getWrkSts() == null) {
+            return false;
+        }
+        return mast.getWrkSts() < 14
+                || mast.getWrkSts().equals(OUT_LOCK_REPORT_SUCCESS_WRK_STS)
+                || mast.getWrkSts().equals(OUT_LOCK_REPORT_FAIL_WRK_STS)
                 || mast.getWrkSts().equals(OUTBOUND_CRN_COMPLETE_WRK_STS);
     }
 

--
Gitblit v1.9.1