From cd04aa8b887e82ec664e42f0bc353c079be1d2c5 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 27 四月 2026 17:57:19 +0800
Subject: [PATCH] fix: filter auto tune out station limits

---
 src/main/java/com/zy/ai/service/impl/AutoTuneSnapshotServiceImpl.java |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/ai/service/impl/AutoTuneSnapshotServiceImpl.java b/src/main/java/com/zy/ai/service/impl/AutoTuneSnapshotServiceImpl.java
index 32542f2..781710b 100644
--- a/src/main/java/com/zy/ai/service/impl/AutoTuneSnapshotServiceImpl.java
+++ b/src/main/java/com/zy/ai/service/impl/AutoTuneSnapshotServiceImpl.java
@@ -13,12 +13,14 @@
 import com.zy.asrs.entity.BasDualCrnp;
 import com.zy.asrs.entity.BasStation;
 import com.zy.asrs.entity.DeviceConfig;
+import com.zy.asrs.entity.StationFlowCapacity;
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.service.BasCrnpService;
 import com.zy.asrs.service.BasDualCrnpService;
 import com.zy.asrs.service.BasStationService;
 import com.zy.asrs.service.DeviceConfigService;
 import com.zy.asrs.service.StationCycleCapacityService;
+import com.zy.asrs.service.StationFlowCapacityService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
@@ -33,9 +35,11 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
+import java.util.LinkedHashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 @Service("autoTuneSnapshotService")
 public class AutoTuneSnapshotServiceImpl implements AutoTuneSnapshotService {
@@ -43,6 +47,7 @@
     private static final int DEFAULT_CRN_OUT_BATCH_RUNNING_LIMIT = 5;
     private static final int DEFAULT_CONVEYOR_STATION_TASK_LIMIT = 30;
     private static final int DEFAULT_AI_AUTO_TUNE_INTERVAL_MINUTES = 10;
+    private static final String DIRECTION_OUT = "OUT";
 
     @Autowired
     private WrkMastService wrkMastService;
@@ -61,6 +66,9 @@
 
     @Autowired
     private BasStationService basStationService;
+
+    @Autowired
+    private StationFlowCapacityService stationFlowCapacityService;
 
     @Autowired
     private BasCrnpService basCrnpService;
@@ -244,11 +252,33 @@
         if (basStationService == null) {
             return result;
         }
+        Set<Integer> outStationIds = loadOutStationIds();
+        if (outStationIds.isEmpty()) {
+            return result;
+        }
         QueryWrapper<BasStation> wrapper = new QueryWrapper<>();
+        wrapper.in("station_id", outStationIds);
         wrapper.orderByAsc("station_id");
         return buildStationOutTaskLimitMap(basStationService.list(wrapper));
     }
 
+    private Set<Integer> loadOutStationIds() {
+        LinkedHashSet<Integer> stationIds = new LinkedHashSet<>();
+        if (stationFlowCapacityService == null) {
+            return stationIds;
+        }
+        QueryWrapper<StationFlowCapacity> wrapper = new QueryWrapper<>();
+        wrapper.eq("direction_code", DIRECTION_OUT);
+        wrapper.orderByAsc("station_id");
+        List<StationFlowCapacity> capacityList = safeList(stationFlowCapacityService.list(wrapper));
+        for (StationFlowCapacity capacity : capacityList) {
+            if (capacity != null && capacity.getStationId() != null) {
+                stationIds.add(capacity.getStationId());
+            }
+        }
+        return stationIds;
+    }
+
     Map<String, Integer> buildStationOutTaskLimitMap(List<BasStation> stationList) {
         Map<String, Integer> result = new LinkedHashMap<>();
         for (BasStation station : safeList(stationList)) {

--
Gitblit v1.9.1