From 8407e277e156a55fee38e7bb7b8930ec16a15f0e Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期五, 24 四月 2026 09:08:47 +0800
Subject: [PATCH] 库存上下限预警,物料高低频摆放

---
 src/main/java/com/zy/common/service/CommonService.java |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index f6f6785..8c50881 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -1030,7 +1030,7 @@
     @Resource
     private LocMastMapper locMastMapper;
 
-    public StartupDto getLocNoNew(int ioType, Integer sourceStaNo, Integer locType, List<Integer> rows) {
+    public StartupDto getLocNoNew(int ioType, Integer sourceStaNo, Integer locType, List<Integer> rows, int sortRole) {
         // 瀵绘壘鍒扮殑搴撲綅
         LocMast locMast = null;
 
@@ -1057,14 +1057,18 @@
                         m -> ((Number) m.get("cnt")).intValue()
                 ));
 
+        Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>()
+                .eq("loc_type1", locType)
+                .eq("loc_sts", 'O')
+                .in("crn_no", basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList()));
+        if(sortRole == 0) {
+            wrapper.last("ORDER BY CASE WHEN row1 IN (1,4,5,8,9,12) THEN 0 ELSE 1 END, lev1, bay1, row1");
+        } else {
+            wrapper.last("ORDER BY CASE WHEN row1 IN (1,4,5,8,9,12) THEN 0 ELSE 1 END, lev1, bay1 desc, row1");
+        }
+
         // 鎵�鏈夋弧瓒虫潯浠剁殑搴撲綅
-        List<LocMast> allLocs = locMastMapper.selectList(
-                new EntityWrapper<LocMast>()
-                        .eq("loc_type1", locType)
-                        .eq("loc_sts" ,'O')
-                        .in("crn_no", basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList()))
-                        .last("ORDER BY CASE WHEN row1 IN (1,4,5,8,9,12) THEN 0 ELSE 1 END, lev1, bay1, row1")
-        );
+        List<LocMast> allLocs = locMastMapper.selectList(wrapper);
 
         // 鎸夊爢鍨涙満鍒嗙粍
         Map<Integer, List<LocMast>> locMap = allLocs.stream()
@@ -1078,7 +1082,7 @@
         if (availableCrn.isEmpty()) {
             // 閫掑綊鍏煎
             if (locType >= 3) return null;
-            return getLocNoNew(ioType, sourceStaNo, locType + 1, rows);
+            return getLocNoNew(ioType, sourceStaNo, locType + 1, rows, sortRole);
         }
 
         availableCrn.sort(Comparator.comparing(c -> countMap.getOrDefault(c.getCrnNo(), 0)));
@@ -1098,8 +1102,8 @@
                     // 鑾峰彇娴呭簱浣�
                     String shallowLoc = Utils.getShallowLoc(slaveProperties, locNo);
                     LocMast shallow = locNoMap.get(shallowLoc);
-                    // 娴呭簱浣嶆棤璐�
-                    if (shallow == null) {
+                    // 娴呭簱浣嶆槸绌哄簱浣嶏紝鏀炬繁搴撲綅
+                    if (shallow != null) {
                         locMast = locMast1;
                         break;
                     }
@@ -1124,7 +1128,7 @@
 
         if (locMast == null) {
             if (locType >= 3) return null;
-            return getLocNoNew(ioType, sourceStaNo, locType + 1, rows);
+            return getLocNoNew(ioType, sourceStaNo, locType + 1, rows, sortRole);
         }
 
         // 鏍规嵁鍏ュ簱绫诲瀷鍜屾簮绔欑偣鑾峰彇宸ヤ綔璺緞

--
Gitblit v1.9.1