From 6d077ee150e66d50f56c61670f97d2baaa1b61a2 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期二, 05 八月 2025 16:59:53 +0800
Subject: [PATCH] #许可证2.0
---
src/main/java/com/zy/asrs/controller/BasRgvMapController.java | 4 +-
src/main/java/com/zy/common/service/CommonService.java | 65 +++++++++++++++++++++-----------
src/main/java/com/zy/asrs/entity/CrnRowInfo.java | 38 +++++++++++++++++++
3 files changed, 83 insertions(+), 24 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/BasRgvMapController.java b/src/main/java/com/zy/asrs/controller/BasRgvMapController.java
index 8e14ce9..4f09ada 100644
--- a/src/main/java/com/zy/asrs/controller/BasRgvMapController.java
+++ b/src/main/java/com/zy/asrs/controller/BasRgvMapController.java
@@ -80,8 +80,8 @@
@RequestMapping(value = "/basRgvMap/delete/auth")
@ManagerAuth
- public R delete(@RequestParam(value="ids[]") Long[] ids){
- for (Long id : ids){
+ public R delete(@RequestParam(value="ids[]") Integer[] ids){
+ for (Integer id : ids){
basRgvMapService.deleteById(id);
}
return R.ok();
diff --git a/src/main/java/com/zy/asrs/entity/CrnRowInfo.java b/src/main/java/com/zy/asrs/entity/CrnRowInfo.java
new file mode 100644
index 0000000..fa46a8c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/CrnRowInfo.java
@@ -0,0 +1,38 @@
+package com.zy.asrs.entity;
+
+public class CrnRowInfo {
+ private final int crnNo;
+ private final int nearRow;
+ private final int curRow;
+ private final int rowCount;
+ private final int times;
+
+ public CrnRowInfo(int crnNo, int nearRow, int curRow, int rowCount, int times) {
+ this.crnNo = crnNo;
+ this.nearRow = nearRow;
+ this.curRow = curRow;
+ this.rowCount = rowCount;
+ this.times = times;
+ }
+
+ public int getCrnNo() {
+ return crnNo;
+ }
+
+ public int getNearRow() {
+ return nearRow;
+ }
+
+ public int getCurRow() {
+ return curRow;
+ }
+
+ public int getRowCount() {
+ return rowCount;
+ }
+
+ public int getTimes() {
+ return times;
+ }
+}
+
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 8bede90..f6d0189 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 * 2) {
+ 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;
--
Gitblit v1.9.1