From 44e258e4f5370a14e92e3c15bccd32e1e4d7280c Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 02 四月 2026 23:17:25 +0800
Subject: [PATCH] #路径清理

---
 src/main/java/com/zy/asrs/task/InboundCrnMoveDispatchScheduler.java |  100 ++++++++++++++++++++++----------------------------
 1 files changed, 44 insertions(+), 56 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/InboundCrnMoveDispatchScheduler.java b/src/main/java/com/zy/asrs/task/InboundCrnMoveDispatchScheduler.java
index 0018484..331a8f3 100644
--- a/src/main/java/com/zy/asrs/task/InboundCrnMoveDispatchScheduler.java
+++ b/src/main/java/com/zy/asrs/task/InboundCrnMoveDispatchScheduler.java
@@ -9,8 +9,6 @@
 import com.zy.asrs.service.BasStationService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.utils.Utils;
-import com.zy.common.entity.FindCrnNoResult;
-import com.zy.common.service.CommonService;
 import com.zy.core.News;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
@@ -26,93 +24,87 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Component
 public class InboundCrnMoveDispatchScheduler {
 
     private final WrkMastService wrkMastService;
     private final BasStationService basStationService;
-    private final CommonService commonService;
     private final BasCrnpService basCrnpService;
     private final CrnOperateProcessUtils crnOperateProcessUtils;
 
     public InboundCrnMoveDispatchScheduler(WrkMastService wrkMastService,
                                            BasStationService basStationService,
-                                           CommonService commonService,
                                            BasCrnpService basCrnpService,
                                            CrnOperateProcessUtils crnOperateProcessUtils) {
         this.wrkMastService = wrkMastService;
         this.basStationService = basStationService;
-        this.commonService = commonService;
         this.basCrnpService = basCrnpService;
         this.crnOperateProcessUtils = crnOperateProcessUtils;
     }
 
     @Scheduled(fixedDelay = 1000L)
     public void dispatchInboundCrnMove() {
-        List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>()
-                .eq("io_type", WrkIoType.IN.id)
-                .eq("wrk_sts", WrkStsType.INBOUND_STATION_RUN.sts)
-                .isNotNull("sta_no"));
-        for (WrkMast wrkMast : wrkMasts) {
-            if (wrkMast == null || wrkMast.getWrkNo() == null || wrkMast.getStaNo() == null || Cools.isEmpty(wrkMast.getLocNo())) {
+        List<BasCrnp> basCrnps = basCrnpService.list(new QueryWrapper<BasCrnp>()
+                .orderByAsc("crn_no"));
+        if (basCrnps == null || basCrnps.isEmpty()) {
+            return;
+        }
+
+        for (BasCrnp basCrnp : basCrnps) {
+            if (basCrnp == null || basCrnp.getCrnNo() == null) {
+                continue;
+            }
+            Integer crnNo = basCrnp.getCrnNo();
+            if (hasBlockingOutboundTask(crnNo)) {
                 continue;
             }
 
-            BasStation basStation = basStationService.getOne(new QueryWrapper<BasStation>()
-                    .eq("station_id", wrkMast.getStaNo())
+            WrkMast inboundWrkMast = wrkMastService.getOne(new QueryWrapper<WrkMast>()
+                    .eq("io_type", WrkIoType.IN.id)
+                    .eq("crn_no", crnNo)
+                    .eq("wrk_sts", WrkStsType.INBOUND_STATION_RUN.sts)
                     .last("limit 1"));
-            if (basStation == null || basStation.getDeviceNo() == null) {
+            if (inboundWrkMast == null) {
                 continue;
             }
 
-            StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basStation.getDeviceNo());
-            if (stationThread == null) {
+            StationProtocol targetStationProtocol = resolveTargetStationProtocol(inboundWrkMast.getStaNo());
+            if (targetStationProtocol != null
+                    && targetStationProtocol.getTaskNo() > 0) {
                 continue;
             }
 
-            Map<Integer, StationProtocol> statusMap = stationThread.getStatusMap();
-            StationProtocol stationProtocol = statusMap == null ? null : statusMap.get(basStation.getStationId());
-            tryDispatchInboundCrnMove(wrkMast, stationProtocol);
+            String inboundPickupLocNo = resolveInboundPickupLocNo(basCrnp, inboundWrkMast.getStaNo());
+            if (Cools.isEmpty(inboundPickupLocNo)) {
+                continue;
+            }
+
+            boolean dispatched = crnOperateProcessUtils.dispatchCrnMove(crnNo, inboundPickupLocNo, true);
+            if (dispatched) {
+                News.info("宸茶Е鍙戝爢鍨涙満鐩存帴绉诲姩鍒板叆搴撲换鍔″彇璐т綅绛夊緟锛屽伐浣滃彿={}锛屽爢鍨涙満鍙�={}锛屽彇璐т綅={}",
+                        inboundWrkMast.getWrkNo(), crnNo, inboundPickupLocNo);
+            }
         }
     }
 
-    private void tryDispatchInboundCrnMove(WrkMast wrkMast, StationProtocol targetStationProtocol) {
-        if (targetStationProtocol != null
-                && targetStationProtocol.isLoading()
-                && targetStationProtocol.getTaskNo() > 0
-                && targetStationProtocol.isInEnable()) {
-            return;
+    private StationProtocol resolveTargetStationProtocol(Integer stationId) {
+        if (stationId == null) {
+            return null;
         }
-
-        FindCrnNoResult findCrnNoResult = commonService.findCrnNoByLocNo(wrkMast.getLocNo());
-        if (findCrnNoResult == null || !Objects.equals(findCrnNoResult.getCrnType(), SlaveType.Crn) || findCrnNoResult.getCrnNo() == null) {
-            return;
-        }
-        Integer crnNo = findCrnNoResult.getCrnNo();
-
-        BasCrnp basCrnp = basCrnpService.getOne(new QueryWrapper<BasCrnp>()
-                .eq("crn_no", crnNo)
+        BasStation basStation = basStationService.getOne(new QueryWrapper<BasStation>()
+                .eq("station_id", stationId)
                 .last("limit 1"));
-        if (basCrnp == null) {
-            return;
+        if (basStation == null || basStation.getDeviceNo() == null) {
+            return null;
         }
-
-        String inboundPickupLocNo = resolveInboundPickupLocNo(basCrnp, wrkMast.getStaNo());
-        if (Cools.isEmpty(inboundPickupLocNo)) {
-            return;
+        StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basStation.getDeviceNo());
+        if (stationThread == null) {
+            return null;
         }
-
-        // 鍚屽爢鍨涙満娌℃湁闇�瑕佸弬涓庡綋鍓嶈皟搴﹀垽鏂殑鍑哄簱浠诲姟鏃讹紝浼樺厛鐩存帴鍒板綋鍓嶅叆搴撲换鍔″彇璐т綅绛夊緟銆�
-        if (!hasBlockingOutboundTask(crnNo)) {
-            boolean dispatched = crnOperateProcessUtils.dispatchCrnMove(crnNo, inboundPickupLocNo);
-            if (dispatched) {
-                News.info("妫�娴嬪埌浠呮湁鍏ュ簱浠诲姟锛屽凡瑙﹀彂鍫嗗灈鏈虹洿鎺ョЩ鍔ㄥ埌鍏ュ簱浠诲姟鍙栬揣浣嶇瓑寰咃紝宸ヤ綔鍙�={}锛屽爢鍨涙満鍙�={}锛屽彇璐т綅={}",
-                        wrkMast.getWrkNo(), crnNo, inboundPickupLocNo);
-            }
-        } else {
-            News.taskInfo(wrkMast.getWrkNo(), "褰撳墠瀛樺湪闃诲鍏ュ簱棰勭Щ杞︾殑鍑哄簱浠诲姟锛屾殏涓嶈Е鍙戝爢鍨涙満棰勭Щ杞�");
-        }
+        Map<Integer, StationProtocol> statusMap = stationThread.getStatusMap();
+        return statusMap == null ? null : statusMap.get(stationId);
     }
 
     private String resolveInboundPickupLocNo(BasCrnp basCrnp, Integer targetStationId) {
@@ -140,11 +132,7 @@
                 .eq("io_type", WrkIoType.OUT.id)
                 .in("wrk_sts",
                         WrkStsType.NEW_OUTBOUND.sts,
-                        WrkStsType.OUTBOUND_RUN.sts,
-                        WrkStsType.OUTBOUND_RUN_COMPLETE.sts,
-                        WrkStsType.STATION_RUN.sts,
-                        WrkStsType.STATION_RUN_COMPLETE.sts,
-                        WrkStsType.OUTBOUND_MANUAL.sts)
+                        WrkStsType.OUTBOUND_RUN.sts)
                 .orderByAsc("wrk_no"));
         if (pendingOutboundTasks == null || pendingOutboundTasks.isEmpty()) {
             return false;

--
Gitblit v1.9.1