From fc14658001ff6fcb768fbf346e81002eb94fa0c5 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 22 三月 2026 09:53:22 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java |   35 +++++++++++++++++++++++++++++++++--
 1 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
index 3e5a8e6..52cc748 100644
--- a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -8,10 +8,12 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.domain.enums.NotifyMsgType;
 import com.zy.asrs.domain.param.CreateLocMoveTaskParam;
+import com.zy.asrs.entity.BasStation;
 import com.zy.asrs.entity.BasCrnp;
 import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.BasStationService;
 import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.utils.NotifyUtils;
@@ -49,6 +51,8 @@
     private BasCrnpService basCrnpService;
     @Autowired
     private LocMastService locMastService;
+    @Autowired
+    private BasStationService basStationService;
     @Autowired
     private RedisUtil redisUtil;
     @Autowired
@@ -340,6 +344,9 @@
         );
 
         for (WrkMast wrkMast : wrkMasts) {
+            if (isOutboundTargetStationTaskLimitReached(wrkMast)) {
+                continue;
+            }
             if (!allowBatchOutboundExecute(wrkMast)) {
                 continue;
             }
@@ -368,7 +375,7 @@
                 }
 
                 if (!stationProtocol.isOutEnable()) {
-                    News.info("鏀捐揣绔欑偣:{} 娌℃湁鍙嚭淇″彿", stationObjModel.getStationId());
+                    News.taskInfo(wrkMast.getWrkNo(), "鏀捐揣绔欑偣:{} 娌℃湁鍙嚭淇″彿", stationObjModel.getStationId());
                     continue;
                 }
 
@@ -526,6 +533,10 @@
 
         Integer crnNo = basCrnp.getCrnNo();
 
+        if (isOutboundTargetStationTaskLimitReached(wrkMast)) {
+            return false;
+        }
+
         if (!allowBatchOutboundExecute(wrkMast)) {
             return false;
         }
@@ -555,7 +566,7 @@
             }
 
             if (!stationProtocol.isOutEnable()) {
-                News.info("鏀捐揣绔欑偣:{} 娌℃湁鍙嚭淇″彿", stationObjModel.getStationId());
+                News.taskInfo(wrkMast.getWrkNo(), "鏀捐揣绔欑偣:{} 娌℃湁鍙嚭淇″彿", stationObjModel.getStationId());
                 continue;
             }
 
@@ -663,6 +674,26 @@
         return false;
     }
 
+    private boolean isOutboundTargetStationTaskLimitReached(WrkMast wrkMast) {
+        if (wrkMast == null || wrkMast.getStaNo() == null) {
+            return false;
+        }
+        BasStation basStation = basStationService.getById(wrkMast.getStaNo());
+        if (basStation == null || basStation.getOutTaskLimit() == null || basStation.getOutTaskLimit() < 0) {
+            return false;
+        }
+        int currentStationTaskCount = stationOperateProcessUtils.getCurrentOutboundTaskCountByTargetStation(wrkMast.getStaNo());
+        if (currentStationTaskCount >= basStation.getOutTaskLimit()) {
+            News.taskInfo(wrkMast.getWrkNo(),
+                    "鐩爣鍑哄簱绔�:{} 宸茶揪鍑哄簱浠诲姟涓婇檺锛屽綋鍓�={}锛屼笂闄�={}",
+                    wrkMast.getStaNo(),
+                    currentStationTaskCount,
+                    basStation.getOutTaskLimit());
+            return true;
+        }
+        return false;
+    }
+
     private int getSystemConfigInt(String code, int defaultValue) {
         Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
         if (systemConfigMapObj == null) {

--
Gitblit v1.9.1