From 585023c7abdd062c51ecf33b6b2119f3a4fbf993 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 12 一月 2026 08:16:08 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/utils/Utils.java |   97 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 84 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index b2690ec..9d9ff0a 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -10,6 +10,7 @@
 import com.zy.asrs.service.RowLastnoService;
 import com.zy.common.CodeBuilder;
 import com.zy.common.model.LocDetlDto;
+import com.zy.common.model.LocGroupOrder;
 import com.zy.common.properties.SlaveProperties;
 import com.zy.common.service.CommonService;
 import com.zy.system.service.UserService;
@@ -287,6 +288,8 @@
                 return LocNecessaryParametersDoubleExtension5(rowLastno, curRow, crnNumber); //宸插畬鍠�
             case 6://鍥涘悜搴�(鐗涚溂杞�)eg:鍏夋嘲鍥涘悜
                 return LocNecessaryParametersDoubleExtension6(rowLastno, curRow, crnNumber); //宸插畬鍠�
+            case 7://骞冲簱  CTU搴�
+                return LocNecessaryParametersDoubleExtension7(rowLastno, curRow, crnNumber); //宸插畬鍠�
             default:
                 return LocNecessaryParametersMove(rowLastno, curRow, crnNumber);//moveCrnNo
         }
@@ -491,31 +494,21 @@
     public static int[] LocNecessaryParametersDoubleExtension6(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
         int[] necessaryParameters = new int[]{0, 0, 0, 0};
         Integer sRow = rowLastno.getsRow();//璧峰鎺掑彿
-        Integer offset = 0;//璧峰鎺掑彿
+        Integer offset = 4;//璧峰鎺掑彿
         Integer sCrnNo = rowLastno.getsCrnNo();//璧峰鍫嗗灈鏈哄彿
         necessaryParameters[0] = crnNumber; // 杞娆℃暟
         curRow = curRow - offset;
         //婊℃澘姝e父鍏ュ簱
         switch (curRow){
-            case 2:
+            case 1:
                 necessaryParameters[1] = 4;    //curRow   鏈�娣卞簱浣嶆帓
                 necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
                 necessaryParameters[3] = 7;    //nearRow  鏈�娴呭簱浣嶆帓
                 break;
-            case 7:
+            case 4:
                 necessaryParameters[1] = 9;    //curRow   鏈�娣卞簱浣嶆帓
                 necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
                 necessaryParameters[3] = 12;    //nearRow  鏈�娴呭簱浣嶆帓
-                break;
-            case 12:
-                necessaryParameters[1] = 7;    //curRow   鏈�娣卞簱浣嶆帓
-                necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
-                necessaryParameters[3] = 4;    //nearRow  鏈�娴呭簱浣嶆帓
-                break;
-            case 4:
-                necessaryParameters[1] = 12;    //curRow   鏈�娣卞簱浣嶆帓
-                necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
-                necessaryParameters[3] = 9;    //nearRow  鏈�娴呭簱浣嶆帓
                 break;
             case 9:
                 necessaryParameters[1] = 14;    //curRow   鏈�娣卞簱浣嶆帓
@@ -523,6 +516,16 @@
                 necessaryParameters[3] = 14;    //nearRow  鏈�娴呭簱浣嶆帓
                 break;
             case 14:
+                necessaryParameters[1] = 7;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = 4;    //nearRow  鏈�娴呭簱浣嶆帓
+                break;
+            case 7:
+                necessaryParameters[1] = 12;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = 9;    //nearRow  鏈�娴呭簱浣嶆帓
+                break;
+            case 12:
                 necessaryParameters[1] = 1;    //curRow   鏈�娣卞簱浣嶆帓
                 necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
                 necessaryParameters[3] = 2;    //nearRow  鏈�娴呭簱浣嶆帓
@@ -532,6 +535,26 @@
         }
         necessaryParameters[1] = necessaryParameters[1] + offset;
         necessaryParameters[3] = necessaryParameters[3] + offset;
+        return necessaryParameters;
+    }
+
+    //骞冲簱锛堝厜娉癨CTU锛�
+    public static int[] LocNecessaryParametersDoubleExtension7(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
+        int[] necessaryParameters = new int[]{0, 0, 0, 0};
+        Integer sRow = rowLastno.getsRow();//璧峰鎺掑彿
+        Integer sCrnNo = rowLastno.getsCrnNo();//璧峰鍫嗗灈鏈哄彿
+        necessaryParameters[0] = crnNumber; // 杞娆℃暟
+        //婊℃澘姝e父鍏ュ簱
+        if (curRow.equals(rowLastno.geteRow())){
+            necessaryParameters[1] = sRow;    //curRow   鏈�娣卞簱浣嶆帓
+            necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+            necessaryParameters[3] = sRow;    //nearRow  鏈�娴呭簱浣嶆帓
+        } else {
+            necessaryParameters[1] = curRow + 1;    //curRow   鏈�娣卞簱浣嶆帓
+            necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+            necessaryParameters[3] = curRow + 1;    //nearRow  鏈�娴呭簱浣嶆帓
+        }
+
         return necessaryParameters;
     }
 
@@ -609,4 +632,52 @@
         return result;
     }
 
+    public static List<Integer> getLocGroupDesc(SlaveProperties slaveProperties, String locNo) {
+        List<Integer> copy = getLocGroupAsc(slaveProperties,locNo);
+        Collections.reverse(copy);
+        return copy;
+    }
+
+    public static String getLocNo(Integer row, int bay, int lev) {
+        return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2);
+    }
+
+    public static String getLocNoToWcs(Integer row, int bay, int lev) {
+        return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 2) + zerofill(String.valueOf(lev), 2);
+    }
+
+    public static List<Integer> getLocGroupAsc(SlaveProperties slaveProperties, String locNo) {
+        LocGroupOrder checkOrder = findLocGroupOrder(slaveProperties, locNo);
+        List<Integer> rowList = checkOrder.getRowList();
+        return new ArrayList<>(rowList);
+    }
+
+    public static LocGroupOrder findLocGroupOrder(SlaveProperties slaveProperties, String locNo) {
+        int row1 = Utils.getRow(locNo);
+        int bay1 = Utils.getBay(locNo);
+        List<LocGroupOrder> locGroupAscOrder = slaveProperties.getLocGroupAscOrder();
+
+        LocGroupOrder checkOrder = null;
+        for (LocGroupOrder order : locGroupAscOrder) {
+            if (!order.getRowList().contains(row1)){
+                continue;
+            }
+
+            if (bay1 < order.getMinBay()){
+                continue;
+            }
+
+            if (bay1 > order.getMaxBay()){
+                continue;
+            }
+
+            checkOrder = order;
+        }
+
+        if (checkOrder == null){
+            throw new RuntimeException(locNo + "搴撲綅鍙�,鏈畾涔夊簱浣嶇粍瑙勫垯");
+        }
+
+        return checkOrder;
+    }
 }

--
Gitblit v1.9.1