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