From 7e391c99b4d13f915b06fd9838c563e17181636b Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 20 三月 2026 19:08:08 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java | 74 +++++++++++++++++++++++++++++++++++++
1 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
index 795c2ba..4c25c66 100644
--- a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.NotifyMsgType;
import com.zy.asrs.domain.param.CreateLocMoveTaskParam;
@@ -288,6 +289,9 @@
);
for (WrkMast wrkMast : wrkMasts) {
+ if (!allowBatchOutboundExecute(wrkMast)) {
+ continue;
+ }
for (StationObjModel stationObjModel : outStationList) {
StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, stationObjModel.getDeviceNo());
if (stationThread == null) {
@@ -467,6 +471,10 @@
Integer crnNo = basCrnp.getCrnNo();
+ if (!allowBatchOutboundExecute(wrkMast)) {
+ return false;
+ }
+
for (StationObjModel stationObjModel : outStationList) {
StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, stationObjModel.getDeviceNo());
if (stationThread == null) {
@@ -533,6 +541,72 @@
return false;
}
+ private boolean allowBatchOutboundExecute(WrkMast wrkMast) {
+ if (wrkMast == null || Cools.isEmpty(wrkMast.getBatch())) {
+ return true;
+ }
+
+ if (Cools.isEmpty(wrkMast.getBatchSeq())) {
+ News.taskInfo(wrkMast.getWrkNo(), "鎵规:{} 缂哄皯鎵规搴忓彿锛屾殏涓嶅厑璁稿爢鍨涙満鍑哄簱", wrkMast.getBatch());
+ return false;
+ }
+
+ WrkMast firstBatchWrkMast = wrkMastService.getOne(new QueryWrapper<WrkMast>()
+ .eq("io_type", WrkIoType.OUT.id)
+ .eq("batch", wrkMast.getBatch())
+ .orderByAsc("batch_seq")
+ .orderByAsc("wrk_no")
+ .last("limit 1"));
+ if (firstBatchWrkMast == null) {
+ return true;
+ }
+
+ if (Cools.isEmpty(firstBatchWrkMast.getBatchSeq())) {
+ News.taskInfo(wrkMast.getWrkNo(), "鎵规:{} 瀛樺湪鏈厤缃壒娆″簭鍙风殑浠诲姟锛屾殏涓嶅厑璁稿爢鍨涙満鍑哄簱", wrkMast.getBatch());
+ return false;
+ }
+
+ boolean currentIsFirstBatchTask = wrkMast.getWrkNo().equals(firstBatchWrkMast.getWrkNo());
+ boolean firstBatchTaskExecuted = firstBatchWrkMast.getWrkSts() != null
+ && !firstBatchWrkMast.getWrkSts().equals(WrkStsType.NEW_OUTBOUND.sts);
+ if (!currentIsFirstBatchTask && !firstBatchTaskExecuted) {
+ News.taskInfo(wrkMast.getWrkNo(), "鎵规:{} 棣栦釜搴忓彿浠诲姟:{} 灏氭湭鎵ц锛屽綋鍓嶄换鍔℃殏涓嶅厑璁稿嚭搴�", wrkMast.getBatch(), firstBatchWrkMast.getWrkNo());
+ return false;
+ }
+
+ int batchRunningLimit = getSystemConfigInt("crnOutBatchRunningLimit", 5);
+ if (batchRunningLimit <= 0) {
+ return true;
+ }
+
+ long batchRunningCount = wrkMastService.count(new QueryWrapper<WrkMast>()
+ .eq("io_type", WrkIoType.OUT.id)
+ .eq("batch", wrkMast.getBatch())
+ .notIn("wrk_sts",
+ WrkStsType.NEW_OUTBOUND.sts,
+ WrkStsType.COMPLETE_OUTBOUND.sts,
+ WrkStsType.SETTLE_OUTBOUND.sts));
+ if (batchRunningCount >= batchRunningLimit) {
+ News.taskInfo(wrkMast.getWrkNo(), "鎵规:{} 鎵ц涓换鍔℃暟杈惧埌涓婇檺锛屽綋鍓�={}锛屼笂闄�={}", wrkMast.getBatch(), batchRunningCount, batchRunningLimit);
+ return false;
+ }
+
+ return true;
+ }
+
+ private int getSystemConfigInt(String code, int defaultValue) {
+ Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
+ if (systemConfigMapObj == null) {
+ return defaultValue;
+ }
+ try {
+ HashMap<String, String> systemConfigMap = (HashMap<String, String>) systemConfigMapObj;
+ return Integer.parseInt(systemConfigMap.getOrDefault(code, String.valueOf(defaultValue)));
+ } catch (Exception ignore) {
+ return defaultValue;
+ }
+ }
+
private synchronized boolean crnExecuteLocTransfer(BasCrnp basCrnp, CrnThread crnThread) {
CrnProtocol crnProtocol = crnThread.getStatus();
if(crnProtocol == null){
--
Gitblit v1.9.1