From 03c3ae747f82ad22c761c79e7b1c0e0031c57d41 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 06 四月 2026 20:28:35 +0800
Subject: [PATCH] #出库站点命令下发

---
 src/main/java/com/zy/core/plugin/FakeProcess.java |   36 ++++++++++++++++++++++++++----------
 1 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/core/plugin/FakeProcess.java b/src/main/java/com/zy/core/plugin/FakeProcess.java
index 962bacd..c8fce93 100644
--- a/src/main/java/com/zy/core/plugin/FakeProcess.java
+++ b/src/main/java/com/zy/core/plugin/FakeProcess.java
@@ -111,6 +111,10 @@
         stationOperateProcessUtils.submitInboundStationArrivalTasks(MAIN_DISPATCH_INTERVAL_MS);
         // 杈撻�佺嚎鎵ц鍫嗗灈鏈哄嚭搴撳悗鐨勭珯鍙版祦杞�
         stationOperateProcessUtils.submitCrnStationOutTasks(MainProcessLane.FAKE_STATION_OUT, MAIN_DISPATCH_INTERVAL_MS);
+        // 妫�娴嬪嚭搴撲换鍔℃槸鍚﹀凡缁忓埌杈剧洰鏍囩珯鍙�
+        stationOperateProcessUtils.submitStationOutExecuteFinishTasks(MAIN_DISPATCH_INTERVAL_MS);
+        // 妫�娴嬬珯鍙拌繍琛屽畬鎴愬悗鐨勪换鍔¤浆瀹屾垚
+        stationOperateProcessUtils.submitCheckTaskToCompleteTasks(MAIN_DISPATCH_INTERVAL_MS);
         // 妫�娴嬪苟澶勭悊鍑哄簱鎺掑簭
         stationOperateProcessUtils.submitCheckStationOutOrderTasks(MainProcessLane.FAKE_STATION_OUT_ORDER, MAIN_DISPATCH_INTERVAL_MS);
         // 鐩戞帶杈撻�佺嚎缁曞湀绔欑偣
@@ -187,10 +191,23 @@
     private void submitGenerateStoreTasks() {
         List<BasDevp> basDevps = basDevpService.list(new QueryWrapper<>());
         for (BasDevp basDevp : basDevps) {
+            StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basDevp.getDevpNo());
+            if (stationThread == null) {
+                continue;
+            }
+
+            Map<Integer, StationProtocol> stationMap = stationThread.getStatusMap();
+            if (stationMap == null || stationMap.isEmpty()) {
+                continue;
+            }
+
             List<StationObjModel> barcodeStations = getBarcodeStations(basDevp);
             for (StationObjModel stationObjModel : barcodeStations) {
                 Integer stationId = stationObjModel == null ? null : stationObjModel.getStationId();
-                if (stationId == null) {
+                if (stationId == null || !stationMap.containsKey(stationId)) {
+                    continue;
+                }
+                if (!canRequestStoreIn(stationMap.get(stationId))) {
                     continue;
                 }
                 storeInTaskGenerationService.submitGenerateStoreTask(
@@ -434,15 +451,6 @@
     }
 
     @Override
-    public boolean matchCandidate(StoreInTaskContext context) {
-        StationProtocol stationProtocol = context.getStationProtocol();
-        return stationProtocol.isAutoing()
-                && stationProtocol.isLoading()
-                && stationProtocol.getTaskNo() > 0
-                && !Cools.isEmpty(stationProtocol.getBarcode());
-    }
-
-    @Override
     public void onRequestPermitGranted(StoreInTaskContext context) {
         redisUtil.set(getGenerateLockKey(context), "lock", 3);
     }
@@ -459,6 +467,14 @@
         stationCommandDispatcher.dispatch(context.getBasDevp().getDevpNo(), command, "fake-process", "write-info");
     }
 
+    private boolean canRequestStoreIn(StationProtocol stationProtocol) {
+        return stationProtocol != null
+                && stationProtocol.isAutoing()
+                && stationProtocol.isLoading()
+                && stationProtocol.getTaskNo() > 0
+                && !Cools.isEmpty(stationProtocol.getBarcode());
+    }
+
     // 璁$畻鎵�鏈夌珯鐐瑰仠鐣欐椂闂�
     public void calcAllStationStayTime() {
         List<BasDevp> basDevps = basDevpService.list(new QueryWrapper<>());

--
Gitblit v1.9.1