From 0e1dcb25ccb0249b1b62a4fec7cb3154a50f7e69 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期三, 15 十月 2025 10:15:40 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/service/CommonService.java | 69 ++++++++++++++++++++++------------
1 files changed, 45 insertions(+), 24 deletions(-)
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 8bede90..29ce278 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -26,6 +26,7 @@
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
/**
* 璐ф灦鏍稿績鍔熻兘
@@ -157,6 +158,39 @@
}
+ private Optional<CrnRowInfo> findAvailableCrnAndNearRow(RowLastno rowLastno, int curRow, int crnNumber, int times,
+ FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto,
+ RowLastnoType rowLastnoType) {
+ int attempt = times;
+ while (attempt < crnNumber * 4) {
+ int[] params = Utils.LocNecessaryParameters(rowLastno, curRow, crnNumber);
+ curRow = params[1];
+ int crnNo = params[2];
+ if (!basCrnpService.checkSiteError(crnNo, true)) {
+ attempt++;
+ continue;
+ }
+ int rowCount = params[0];
+ int nearRow = params[3];
+
+ // 鍙彇鏁伴噺鍒ゆ柇锛岄伩鍏嶆媺鏁� list
+ int availableLocCount = locMastService.selectCount(new EntityWrapper<LocMast>()
+ .eq("row1", nearRow)
+ .eq("loc_sts", "O")
+ .eq("whs_type", rowLastnoType.getType().longValue()));
+ int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>()
+ .eq("crn_no", crnNo).le("io_type", 100));
+ if (availableLocCount - crnCountO <= 2) { // 鍙互鎻愭垚甯搁噺锛屾瘮濡� MIN_SPARE_SLOTS = 2
+ log.error("{}鍙峰爢鍨涙満娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", crnNo, JSON.toJSONString(locTypeDto), attempt);
+ attempt++;
+ continue;
+ }
+ return Optional.of(new CrnRowInfo(crnNo, nearRow, curRow, rowCount, attempt));
+ }
+ return Optional.empty();
+ }
+
+
/**
* 妫�绱㈠簱浣嶅彿
@@ -207,30 +241,17 @@
}
//姝ょ▼搴忕敤浜庝紭鍖栧爢鍨涙満寮傚父鏃剁殑杩愯鏃堕棿
- for (int i = times; i < crnNumber * 2; i++) {
- int[] locNecessaryParameters = Utils.LocNecessaryParameters(rowLastno, curRow, crnNumber);
- curRow = locNecessaryParameters[1];
- crnNo = locNecessaryParameters[2];
- if (basCrnpService.checkSiteError(crnNo, true)) {
- rowCount = locNecessaryParameters[0];
- nearRow = locNecessaryParameters[3];
- List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
- .eq("row1", nearRow).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
- int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).le("io_type", 100));
- if (locMasts.size() - crnCountO <= 2) {
- log.error(crnNo + "鍙峰爢鍨涙満娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times);
- nearRow = 0;
- times++;
- continue;
- }
- break;
- } else {
- times++;
- }
- }
- if (nearRow == 0) {
+ Optional<CrnRowInfo> infoOpt = findAvailableCrnAndNearRow(rowLastno, curRow, crnNumber, times, findLocNoAttributeVo, locTypeDto, rowLastnoType);
+ if (!infoOpt.isPresent()) {
throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満");
}
+ CrnRowInfo info = infoOpt.get();
+ crnNo = info.getCrnNo();
+ nearRow = info.getNearRow();
+ curRow = info.getCurRow();
+ rowCount = info.getRowCount();
+ times = info.getTimes();
+
boolean signRule1 = false;
boolean signRule2 = false;
@@ -354,7 +375,7 @@
List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
.eq("row1", nearRow)
.eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())
- .orderBy("lev1", false).orderBy("bay1", true));
+ .orderBy("lev1", true).orderBy("bay1", false));
for (LocMast locMast1 : locMasts) {
if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
continue;
@@ -419,7 +440,7 @@
List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
.eq("row1", nearRow)
.eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())
- .orderBy("lev1", true).orderBy("bay1", true));
+ .orderBy("lev1", true).orderBy("bay1", false));
for (LocMast locMast1 : locMasts) {
if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
continue;
--
Gitblit v1.9.1