From 223ce7dcb236cad6679275d8941e1a909f8a1efc Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期三, 21 一月 2026 10:12:30 +0800
Subject: [PATCH] #库区分配
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 41 ++++++++++++++++++++++++++++++++---------
1 files changed, 32 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index eba6e34..c25a96d 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -273,8 +273,10 @@
/**
* 妫�鏌ユ甯稿簱浣嶅墠鏂规槸鍚﹀牭濉烇紙娣卞簱浣嶈鍒欙細鍓嶆柟鎺掓槸鍚︽湁璐ф垨鍏ュ簱浠诲姟锛�
*
- * 鍙灞炰簬鍑哄簱鍒嗙粍瑙勫垯鍐呯殑搴撲綅杩涜妫�鏌�
- * 濡傛灉搴撲綅涓嶅湪鍒嗙粍瑙勫垯鍐咃紝鍒欒涓轰笉闇�瑕佷弗鏍兼鏌ワ紙杩斿洖 false锛屼笉瑙﹀彂琛ラ綈锛�
+ * 鍒ゆ柇渚濇嵁锛�
+ * 1. 鍙鏌ュ睘浜庡嚭搴撳垎缁勮鍒欏唴鐨勫簱浣嶏紙閫氳繃鍒嗙粍鐨� rowList 纭畾鑼冨洿锛�
+ * 2. 鍓嶆柟 = 鍒嗙粍涓储寮曞ぇ浜庡綋鍓嶅簱浣嶇殑鎺掞紙鍋囪鍒嗙粍 rowList 宸叉寜鍑哄簱椤哄簭鎺掑垪锛屽ぇ绱㈠紩 = 鍓嶆柟鏇存繁锛�
+ * 3. 鍫靛鏉′欢锛氬墠鏂规湁璐э紙F鐘舵�侊級鎴栨湁鍏ュ簱浠诲姟
*
* @param normalMasts 闇�瑕佹鏌ョ殑姝e父搴撲綅鍒楄〃锛堝凡閫氳繃 isInNormalRule 杩囨护锛�
* @return true = 鍓嶆柟鏈夊牭濉烇紙闇�瑕佽ˉ榻愶級锛宖alse = 鍓嶆柟娓呯┖鎴栨棤闇�妫�鏌�
@@ -283,11 +285,25 @@
if (normalMasts == null || normalMasts.isEmpty()) {
return false;
}
- // 鑾峰彇鍑哄簱鍒嗙粍閰嶇疆锛堢敤浜庣‘璁よ鍒欒寖鍥达級
+
+ // 鑾峰彇鍑哄簱鍒嗙粍閰嶇疆
List<LocGroupOrder> locGroupAscOrder = slaveProperties.getLocGroupAscOrder();
if (locGroupAscOrder == null || locGroupAscOrder.isEmpty()) {
return false; // 鏃犻厤缃椂榛樿涓嶆鏌�
}
+
+ // 鍋囪鎵�鏈� normalMasts 鍦ㄥ悓涓�涓垎缁勶紙甯歌鎯呭喌锛岃嫢澶氬垎缁勫彲寰幆澶勭悊锛�
+ LocMast representative = normalMasts.get(0);
+ LocGroupOrder group = locGroupAscOrder.stream()
+ .filter(g -> g.getRowList() != null && g.getRowList().contains(representative.getRow1()))
+ .findFirst()
+ .orElse(null);
+
+ if (group == null || group.getRowList() == null || group.getRowList().isEmpty()) {
+ return false; // 涓嶅湪浠讳綍鍒嗙粍锛屼笉妫�鏌�
+ }
+
+ List<Integer> fullRows = group.getRowList(); // 鍒嗙粍鍐呮墍鏈夋帓鍙峰垪琛紙鎸夊嚭搴撻『搴忔帓鍒楋級
// 閬嶅巻姣忎釜姝e父搴撲綅
for (LocMast lm : normalMasts) {
@@ -299,10 +315,17 @@
continue;
}
- // 娣卞簱浣嶆鏌ユ柟鍚戯細鍋囪 row 瓒婂ぇ瓒婃繁锛堝墠鏂规槸鏇村ぇ row 鐨勪綅缃級
- // 浣犲彲浠ユ牴鎹疄闄呭嚭搴撴柟鍚戣皟鏁村惊鐜潯浠讹紙渚嬪浠庡皬 row 鍒板ぇ row 鎴栧弽涔嬶級
- for (int row = currentRow + 1; row <= 5; row++) { // 鍋囪娣卞簱浣嶈寖鍥村埌 5 鎺掞紝鍙皟鏁�
- LocMast front = getLocMastByRow(row, bay1, lev1);
+ // 鍦ㄥ垎缁� rowList 涓壘鍒板綋鍓嶆帓鐨勭储寮�
+ int currentIndex = fullRows.indexOf(currentRow);
+ if (currentIndex < 0) {
+ continue; // 褰撳墠鎺掍笉鍦ㄥ垎缁勫唴锛岃烦杩�
+ }
+
+ // 鍓嶆柟 = 鍒嗙粍涓储寮曟洿澶х殑浣嶇疆锛堝亣璁惧垎缁� rowList 浠庡墠鍒板悗鎺掑垪锛屽ぇ绱㈠紩 = 鏇存繁锛�
+ // 濡傛灉浣犵殑鍒嗙粍鍒楄〃鏄�掑簭鐨勶紙浠庡悗鍒板墠锛夛紝鍒欓渶鏀逛负 currentIndex - 1 鍒� 0
+ for (int i = currentIndex + 1; i < fullRows.size(); i++) {
+ Integer frontRow = fullRows.get(i);
+ LocMast front = getLocMastByRow(frontRow, bay1, lev1);
if (front == null) {
continue;
}
@@ -312,12 +335,12 @@
return true;
}
- // 鏈夊叆搴撲换鍔� 鈫� 鍫靛
WrkMast frontTask = wrkMastService.selectOne(
new EntityWrapper<WrkMast>()
.eq("source_loc_no", front.getLocNo())
- .eq("io_type", 100) // 鍋囪 100 涓哄叆搴撶被鍨嬶紝鍙皟鏁�
+ .in("loc_sts", Arrays.asList("S", "Q")) // 鏀寔 loc_sts 涓� S 鎴� Q
);
+
if (frontTask != null) {
return true;
}
--
Gitblit v1.9.1