From 1ccbafd4845918b45cea28a834fd889e3ba4e0b6 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 03 六月 2023 11:15:17 +0800
Subject: [PATCH] 库位地图优化

---
 src/main/java/com/zy/asrs/controller/MapController.java |   59 ++++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 36 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MapController.java b/src/main/java/com/zy/asrs/controller/MapController.java
index 26e9f08..84b64df 100644
--- a/src/main/java/com/zy/asrs/controller/MapController.java
+++ b/src/main/java/com/zy/asrs/controller/MapController.java
@@ -15,6 +15,7 @@
 
 import java.io.*;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 @RestController
@@ -56,23 +57,33 @@
 
                 //瑙f瀽json鍦板浘鏁版嵁
                 List<ArrayList> arrayLists = JSON.parseArray(stringBuffer.toString(), ArrayList.class);
-                for (String locNo : DISABLE_LOC_NO) {//绂佺敤璁剧疆搴撲綅
-                    int row = Utils.getRow(locNo);
-                    int bay = Utils.getBay(locNo);
-                    if (row >= 4 && row <= 11) {
-                        row++;
-                    }else if (row >= 12 && row <= 18) {
-                        row += 2;
-                    } else if (row >= 19 && row <= 21) {
-                        row += 3;
+                ArrayList<HashMap<String, Integer>> lineRows = new ArrayList<>();
+                int dataRow = 0;
+                int dataRowCount = 0;
+                for (int i = 1; i < arrayLists.size(); i++) {
+                    boolean flag = true;
+                    ArrayList rows = arrayLists.get(i);
+                    for (int j = 1; j < rows.size() - 1; j++) {
+                        Object o = rows.get(j);
+                        JSONObject jsonObject = JSON.parseObject(o.toString());
+                        int value = Integer.parseInt(jsonObject.get("value").toString());
+                        if (value >= 0 && value != 3) {
+                            //鍙湁璇ヨ涓殑浠讳竴涓�鍒楁湁鏁版嵁锛屽垯涓嶉渶瑕佸垱寤虹┖鐧借
+                            flag = false;
+                        }
                     }
-                    ArrayList rowData = arrayLists.get(row);
-                    Object o = rowData.get(bay);
-                    JSONObject jsonObject = JSON.parseObject(o.toString());
-                    jsonObject.put("value", 10);//灏嗙鐢ㄥ簱浣嶈繘琛岃缃�
-                    //鏇存柊list
-                    rowData.set(bay, jsonObject);
-                    arrayLists.set(row, rowData);
+
+                    if (flag) {
+                        //绌虹櫧琛岄渶瑕佽烦杩�
+                        HashMap<String, Integer> map = new HashMap<>();
+                        map.put("start", dataRow);
+                        int end = i - 1 - dataRowCount;
+                        map.put("end", end);
+                        map.put("count", dataRowCount);
+                        dataRow = end;
+                        dataRowCount++;
+                        lineRows.add(map);
+                    }
                 }
 
                 //鑾峰彇褰撳墠妤煎眰搴撲綅鏁版嵁
@@ -80,19 +91,21 @@
                 for (LocMast locMast : locMasts) {
                     Integer row = locMast.getRow1();
                     Integer bay = locMast.getBay1();
-                    if (row >= 4 && row <= 11) {
-                        row++;
-                    }else if (row >= 12 && row <= 18) {
-                        row += 2;
-                    } else if (row >= 19 && row <= 21) {
-                        row += 3;
+                    for (HashMap<String, Integer> lineRow : lineRows) {
+                        if (row > lineRow.get("start") && row <= lineRow.get("end")) {
+                            row += lineRow.get("count");
+                            break;
+                        }
                     }
                     ArrayList rowData = arrayLists.get(row);
                     Object o = rowData.get(bay);
                     JSONObject jsonObject = JSON.parseObject(o.toString());
+                    if (DISABLE_LOC_NO.contains(locMast.getLocNo())) {
+                        //绂佹搴撲綅
+                        jsonObject.put("value", 10);//灏嗙鐢ㄥ簱浣嶈繘琛岃缃�
+                    }
                     jsonObject.put("locNo", locMast.getLocNo());//璁剧疆搴撲綅鍙�
                     jsonObject.put("locSts", locMast.getLocSts());//搴撲綅鐘舵��
-//                    jsonObject.put("locSts$", locMast.getLocSts$());//搴撲綅鐘舵��
                     //鏇存柊list
                     rowData.set(bay, jsonObject);
                     arrayLists.set(row, rowData);

--
Gitblit v1.9.1