From 65fd58ba961fb0f9d6680361f9ba7ab1226dadb2 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 22 三月 2026 15:43:12 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 58 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 be93a48..ee1b8f6 100644
--- a/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/CrnOperateProcessUtils.java
@@ -647,6 +647,24 @@
return true;
}
+ List<WrkMast> unfinishedBatchWrkMasts = listUnfinishedBatchWrkMasts(wrkMast.getBatch());
+ if (hasMissingBatchSeq(unfinishedBatchWrkMasts)) {
+ News.taskInfo(wrkMast.getWrkNo(), "鎵规:{} 瀛樺湪鏈厤缃壒娆″簭鍙风殑鏈畬鎴愪换鍔★紝鏆備笉鍏佽鍫嗗灈鏈哄嚭搴�", wrkMast.getBatch());
+ return false;
+ }
+
+ if (!isWithinBatchExecuteWindow(wrkMast, unfinishedBatchWrkMasts, batchRunningLimit)) {
+ Integer windowStartSeq = unfinishedBatchWrkMasts.get(0).getBatchSeq();
+ Integer windowEndSeq = unfinishedBatchWrkMasts.get(Math.min(batchRunningLimit, unfinishedBatchWrkMasts.size()) - 1).getBatchSeq();
+ News.taskInfo(wrkMast.getWrkNo(),
+ "鎵规:{} 褰撳墠涓ユ牸鎵ц绐楀彛搴忓彿涓篬{}-{}]锛屽綋鍓嶅簭鍙�={}锛屾殏涓嶅厑璁稿爢鍨涙満鍑哄簱",
+ wrkMast.getBatch(),
+ windowStartSeq,
+ windowEndSeq,
+ wrkMast.getBatchSeq());
+ return false;
+ }
+
long batchRunningCount = wrkMastService.count(new QueryWrapper<WrkMast>()
.eq("io_type", WrkIoType.OUT.id)
.eq("batch", wrkMast.getBatch())
@@ -662,6 +680,46 @@
return true;
}
+ private List<WrkMast> listUnfinishedBatchWrkMasts(String batch) {
+ if (Cools.isEmpty(batch)) {
+ return new ArrayList<>();
+ }
+ return wrkMastService.list(new QueryWrapper<WrkMast>()
+ .eq("io_type", WrkIoType.OUT.id)
+ .eq("batch", batch)
+ .notIn("wrk_sts",
+ WrkStsType.COMPLETE_OUTBOUND.sts,
+ WrkStsType.SETTLE_OUTBOUND.sts)
+ .orderByAsc("batch_seq")
+ .orderByAsc("wrk_no"));
+ }
+
+ private boolean hasMissingBatchSeq(List<WrkMast> wrkMasts) {
+ if (wrkMasts == null || wrkMasts.isEmpty()) {
+ return false;
+ }
+ for (WrkMast item : wrkMasts) {
+ if (item == null || Cools.isEmpty(item.getBatchSeq())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean isWithinBatchExecuteWindow(WrkMast wrkMast, List<WrkMast> unfinishedBatchWrkMasts, int batchRunningLimit) {
+ if (wrkMast == null || unfinishedBatchWrkMasts == null || unfinishedBatchWrkMasts.isEmpty()) {
+ return true;
+ }
+ int windowSize = Math.min(batchRunningLimit, unfinishedBatchWrkMasts.size());
+ for (int i = 0; i < windowSize; i++) {
+ WrkMast current = unfinishedBatchWrkMasts.get(i);
+ if (current != null && wrkMast.getWrkNo().equals(current.getWrkNo())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private boolean isOutboundStationTaskLimitReached() {
int stationMaxTaskCount = getSystemConfigInt("stationMaxTaskCountLimit", 30);
if (stationMaxTaskCount <= 0) {
--
Gitblit v1.9.1