From 7ec958c241902d29dbffe9f81376b71a8458148e Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期一, 13 一月 2025 16:07:21 +0800
Subject: [PATCH] 优化订单同步逻辑及库位查找

---
 src/main/java/com/zy/asrs/controller/AgvMapController.java |  135 +++++++++++++++++++--------------------------
 1 files changed, 57 insertions(+), 78 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvMapController.java b/src/main/java/com/zy/asrs/controller/AgvMapController.java
index e3b35d0..f945e1b 100644
--- a/src/main/java/com/zy/asrs/controller/AgvMapController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvMapController.java
@@ -62,90 +62,75 @@
         //鑾峰彇褰撳墠妤煎眰搴撲綅鏁版嵁
         List<AgvLocMast> locMasts = agvLocMastService.selectLocByLevAndFloor(lev, floor);
 
-        if (floor == 1 && lev == 2) {
-            List<AgvLocMast> distinctRow = agvLocMastService.selectDistinctLocByLevAndFloor(lev, floor);
-            List<Integer> integers = new ArrayList<>();
-            int min = 0;
-            int i =1;
+        List<AgvLocMast> distinctRow = new ArrayList<>();
+        List<Integer> rowIntegers = new ArrayList<>();
+        int min = 0;
+        int i =1;
+        if (lev == 1 && floor == 1) {
+            distinctRow = agvLocMastService.selectDistinctLocByLevAndFloorMapbay1(lev, floor);
+            for (AgvLocMast locMast : distinctRow) {
+                if (min > locMast.getMapBay1()) {
+                    min = locMast.getMapBay1();
+                }
+                if (locMast.getRightSide() == 1) {
+                    rowIntegers.add(i);
+                }
+                i++;
+
+            }
+        } else {
+            distinctRow = agvLocMastService.selectDistinctLocByLevAndFloorMaprow1(lev, floor);
             for (AgvLocMast locMast : distinctRow) {
                 if (min > locMast.getMapRow1()) {
                     min = locMast.getMapRow1();
                 }
                 if (locMast.getRightSide() == 1) {
-                    integers.add(i);
+                    rowIntegers.add(i);
                 }
                 i++;
 
             }
-            for (AgvLocMast locMast : locMasts) {
-                Integer row = locMast.getMapRow1();
-                if (row < 0) {
-                    row = row - min + 1;
-                } else {
-                    row = row - min;
-                }
-                Integer bay = locMast.getMapBay1();
-                Integer rightSide = locMast.getRightSide();
-                int x = bay;
-                int y = row;
-                y = generateMap4Row(integers, row);
-                ArrayList rowData = arrayLists.get(x);
-                Object o = rowData.get(y);
+        }
 
-                JSONObject jsonObject = JSON.parseObject(o.toString());
-                jsonObject.put("value", "0");
-
-                jsonObject.put("locNo", locMast.getLocNo());//璁剧疆搴撲綅鍙�
-                jsonObject.put("locSts", locMast.getLocSts());//搴撲綅鐘舵��
-                //鏇存柊list
-                rowData.set(y, jsonObject);
-                arrayLists.set(x, rowData);
+        for (AgvLocMast locMast : locMasts) {
+            Integer row = locMast.getMapRow1();
+            if (row < 0) {
+                row = row - min + 1;
+            } else {
+                row = row - min;
             }
-        } else {
-            for (AgvLocMast locMast : locMasts) {
-                Integer row = locMast.getRow1();
-                Integer bay = locMast.getBay1();
-
-
-                int x = bay;
-                int y = row;
-                //2妤�
-                if (floor == 1 && lev == 1) {
-                    x = generateMap1Bay(bay);
-                }
-                //2妤�
-                if (floor == 2) {
-                    y = generateMap2Row(row);
-                    //y = generateMap2Bay(bay);
-                }
-                ////3妤�
-                if (floor == 3) {
-                    y = generateMap3Row(row);
-//                x = generateMap3Bay(bay);
-                }
-
-                ArrayList rowData = arrayLists.get(x);
-                Object o = rowData.get(y);
-
-                JSONObject jsonObject = JSON.parseObject(o.toString());
-                jsonObject.put("value", "0");
-
-                jsonObject.put("locNo", locMast.getLocNo());//璁剧疆搴撲綅鍙�
-                jsonObject.put("locSts", locMast.getLocSts());//搴撲綅鐘舵��
-                //鏇存柊list
-                rowData.set(y, jsonObject);
-                arrayLists.set(x, rowData);
+            Integer bay = locMast.getMapBay1();
+            Integer rightSide = locMast.getRightSide();
+            int x = bay;
+            int y = row;
+            if (floor == 3) {
+                y = generateMap3Row(rowIntegers, row);
+            } else if (floor == 1 && lev == 1) {
+                x = generateMap1Bay(rowIntegers, bay);
+            } else {
+                y = generateMap4Row(rowIntegers, row);
             }
+
+            ArrayList rowData = arrayLists.get(x);
+            Object o = rowData.get(y);
+
+            JSONObject jsonObject = JSON.parseObject(o.toString());
+            jsonObject.put("value", "0");
+
+            jsonObject.put("locNo", locMast.getLocNo());//璁剧疆搴撲綅鍙�
+            jsonObject.put("locSts", locMast.getLocSts());//搴撲綅鐘舵��
+            //鏇存柊list
+            rowData.set(y, jsonObject);
+            arrayLists.set(x, rowData);
         }
 
         return JSONObject.toJSONString(arrayLists);
     }
 
-    private Integer generateMap1Bay(int bay) {
+    private Integer generateMap1Bay(List<Integer> rightSide,int bay) {
         int y = bay;
-        Integer[] bayAdd = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
-        for (int i = 0; i < bayAdd.length; i++) {
-            if (bay > bayAdd[i]) {
+        for (int i = 0; i < rightSide.size(); i++) {
+            if (bay > rightSide.get(i)) {
                 y++;
             }
         }
@@ -156,9 +141,6 @@
 
     private Integer generateMap4Row(List<Integer> rightSide, int row) {
         int x = row;
-//        if (rightSide == 0) {
-//            x++;
-//        }
         for (int i = 0; i < rightSide.size(); i++) {
             if (row > rightSide.get(i)) {
                 x++;
@@ -169,15 +151,13 @@
 
     }
 
-    private Integer generateMap2Row(int row) {
+    private Integer generateMap2Row(List<Integer> rightSide,int row) {
         int x = row;
-        Integer[] rowAdd = {2, 4, 6, 7, 8, 10, 12, 13, 15, 17, 19, 20, 22, 24};
-        for (int i = 0; i < rowAdd.length; i++) {
-            if (row > rowAdd[i]) {
+        for (int i = 0; i < rightSide.size(); i++) {
+            if (row > rightSide.get(i)) {
                 x++;
             }
         }
-        if (row > 20) x += 9;
 
         return x;
 
@@ -194,11 +174,10 @@
         return y;
     }
 
-    private Integer generateMap3Row(int row) {
+    private Integer generateMap3Row(List<Integer> rightSide,int row) {
         int x = row;
-        Integer[] rowAdd = {2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 22, 24, 26, 28, 30, 32};
-        for (int i = 0; i < rowAdd.length; i++) {
-            if (row >= rowAdd[i]) {
+        for (int i = 0; i < rightSide.size(); i++) {
+            if (row > rightSide.get(i)) {
                 x++;
             }
         }

--
Gitblit v1.9.1