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