From a1a52e4000a5f2d61031767dc709074fb2f4cdae Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期一, 25 十一月 2024 08:35:10 +0800
Subject: [PATCH] #优化地图

---
 src/main/java/com/zy/asrs/mapper/AgvLocMastMapper.java            |    4 +
 src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java |    6 +
 src/main/java/com/zy/asrs/entity/AgvLocMast.java                  |   15 +++
 src/main/java/com/zy/asrs/controller/AgvMapController.java        |  177 +++++++++++++++++++++++++++----------------
 src/main/java/com/zy/asrs/service/AgvLocMastService.java          |    2 
 src/main/webapp/views/agvLocMast/locMast_detail.html              |   18 ++++
 6 files changed, 155 insertions(+), 67 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvMapController.java b/src/main/java/com/zy/asrs/controller/AgvMapController.java
index 284fc10..e3b35d0 100644
--- a/src/main/java/com/zy/asrs/controller/AgvMapController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvMapController.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.annotations.ManagerAuth;
 import com.core.common.R;
 import com.zy.asrs.entity.AgvLocDetl;
@@ -53,59 +54,99 @@
         //to do
 //        floor = 2;
 
-        BasMap basMap = agvBasMapService.selectLatestMap(lev,floor);
+        BasMap basMap = agvBasMapService.selectLatestMap(lev, floor);
         //瑙f瀽json鍦板浘鏁版嵁
         List<ArrayList> arrayLists = JSON.parseArray(basMap.getData(), ArrayList.class);
 
 
         //鑾峰彇褰撳墠妤煎眰搴撲綅鏁版嵁
-        List<AgvLocMast> locMasts = agvLocMastService.selectLocByLevAndFloor(lev,floor);
-        for (AgvLocMast locMast : locMasts) {
-            Integer row = locMast.getRow1();
-            Integer bay = locMast.getBay1();
+        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;
+            for (AgvLocMast locMast : distinctRow) {
+                if (min > locMast.getMapRow1()) {
+                    min = locMast.getMapRow1();
+                }
+                if (locMast.getRightSide() == 1) {
+                    integers.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);
+            }
+        } 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);
-            }
-            if(floor == 1 && lev == 2){
-                y = generateMap4Row(row);
-            }
-            //2妤�
-            if(floor == 2){
-                y = generateMap2Row(row);
-                //y = generateMap2Bay(bay);
-            }
-            ////3妤�
-            if(floor == 3){
-                y = generateMap3Row(row);
+                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);
             }
-
-            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(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]){
-                y ++;
+        Integer[] bayAdd = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
+        for (int i = 0; i < bayAdd.length; i++) {
+            if (bay > bayAdd[i]) {
+                y++;
             }
         }
 
@@ -113,12 +154,14 @@
 
     }
 
-    private Integer generateMap4Row(int row){
+    private Integer generateMap4Row(List<Integer> rightSide, int row) {
         int x = row;
-        Integer[] rowAdd = {1,3,5,7,9,11,13,15,17,19,21};
-        for(int i=0; i<rowAdd.length; i++){
-            if(row > rowAdd[i]){
-                x ++;
+//        if (rightSide == 0) {
+//            x++;
+//        }
+        for (int i = 0; i < rightSide.size(); i++) {
+            if (row > rightSide.get(i)) {
+                x++;
             }
         }
 
@@ -126,48 +169,48 @@
 
     }
 
-    private Integer generateMap2Row(int row){
+    private Integer generateMap2Row(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]){
-                x ++;
+        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]) {
+                x++;
             }
         }
-        if(row >20) x += 9;
+        if (row > 20) x += 9;
 
         return x;
 
     }
 
-    private Integer generateMap2Bay(int bay){
+    private Integer generateMap2Bay(int bay) {
         int y = bay;
-        if(y > 28){
-            y ++;
+        if (y > 28) {
+            y++;
         }
-        if(y > 57){
-            y ++;
+        if (y > 57) {
+            y++;
         }
         return y;
     }
 
-    private Integer generateMap3Row(int row){
+    private Integer generateMap3Row(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]){
-                x ++;
+        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]) {
+                x++;
             }
         }
-        if(row >8) x += 9;
+        if (row > 8) x += 9;
         return x;
     }
 
-    private Integer generateMap3Bay(int bay){
-        int y = 76-bay;
-        if(bay >= 18) y --;
-        if(bay >= 26) y --;
-        if(bay >= 50) y --;
+    private Integer generateMap3Bay(int bay) {
+        int y = 76 - bay;
+        if (bay >= 18) y--;
+        if (bay >= 26) y--;
+        if (bay >= 50) y--;
         return y;
     }
 
@@ -179,7 +222,7 @@
                        @RequestParam("specs") String specs,
                        @RequestParam("matnr") String matnr,
                        @RequestParam("maktx") String maktx
-                       ) {
+    ) {
 
         List<AgvLocDetl> locDetls = agvLocDetlService.searchByLike(orderNo, matnr, maktx, specs, locNo);
         ArrayList<AgvLocDetl> lists = new ArrayList<>();
diff --git a/src/main/java/com/zy/asrs/entity/AgvLocMast.java b/src/main/java/com/zy/asrs/entity/AgvLocMast.java
index ec6e2a7..1554ca7 100644
--- a/src/main/java/com/zy/asrs/entity/AgvLocMast.java
+++ b/src/main/java/com/zy/asrs/entity/AgvLocMast.java
@@ -185,6 +185,21 @@
     @ApiModelProperty(value= "")
     private String status;
 
+    /**
+     * 鎺�
+     */
+    @ApiModelProperty(value= "鍦板浘鎺�")
+    private Integer mapRow1;
+
+    /**
+     * 鍒�
+     */
+    @ApiModelProperty(value= "鍦板浘鍒�")
+    private Integer mapBay1;
+
+    @ApiModelProperty(value= "鍦板浘鍒�")
+    private Integer rightSide;
+
 
     public String getWhsType$(){
         BasWhsService service = SpringUtils.getBean(BasWhsService.class);
diff --git a/src/main/java/com/zy/asrs/mapper/AgvLocMastMapper.java b/src/main/java/com/zy/asrs/mapper/AgvLocMastMapper.java
index aadd73d..8251128 100644
--- a/src/main/java/com/zy/asrs/mapper/AgvLocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/AgvLocMastMapper.java
@@ -33,4 +33,8 @@
 
     @Select("SELECT loc_type2 FROM agv_loc_mast WHERE loc_type1 = #{locType1} AND loc_type2 IS NOT NULL GROUP BY loc_type2")
     List<String> queryContainerTypeByLocType1(@Param("locType1")Short locType1);
+
+
+    @Select("SELECT distinct map_row1 as mapRow1,right_side as rightSide FROM agv_loc_mast WHERE lev1 = #{lev1} And floor = #{floor} order by map_row1")
+    List<AgvLocMast> selectDistinctLocByLevAndFloor(@Param("lev1")Integer lev1,@Param("floor")Integer floor);
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvLocMastService.java b/src/main/java/com/zy/asrs/service/AgvLocMastService.java
index 1f8169c..5ea50b9 100644
--- a/src/main/java/com/zy/asrs/service/AgvLocMastService.java
+++ b/src/main/java/com/zy/asrs/service/AgvLocMastService.java
@@ -33,4 +33,6 @@
 
     public List<String> queryContainerTypeByLocType1(Short locType1);
 
+    List<AgvLocMast> selectDistinctLocByLevAndFloor(int lev, int floor);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java
index d8e44fe..2a91852 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java
@@ -414,4 +414,10 @@
         return this.baseMapper.queryContainerTypeByLocType1(locType1);
     }
 
+    @Override
+    public List<AgvLocMast> selectDistinctLocByLevAndFloor(int lev, int floor) {
+
+        return this.agvLocMastMapper.selectDistinctLocByLevAndFloor(lev,floor);
+    }
+
 }
diff --git a/src/main/webapp/views/agvLocMast/locMast_detail.html b/src/main/webapp/views/agvLocMast/locMast_detail.html
index 14187d0..b958531 100644
--- a/src/main/webapp/views/agvLocMast/locMast_detail.html
+++ b/src/main/webapp/views/agvLocMast/locMast_detail.html
@@ -113,6 +113,24 @@
                 <input id="floor" class="layui-input" type="text" autocomplete="off" disabled="disabled">
             </div>
         </div>
+        <div class="layui-inline"  style="width:80%;">
+            <label class="layui-form-label">鍦板浘鎺掞細</label>
+            <div class="layui-input-inline">
+                <input id="mapRow1" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:80%;">
+            <label class="layui-form-label">鍦板浘鍒楋細</label>
+            <div class="layui-input-inline">
+                <input id="mapBay1" class="layui-input" type="text" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline"  style="width:80%;">
+            <label class="layui-form-label">渚ц竟杩囬亾锛�</label>
+            <div class="layui-input-inline">
+                <input id="rightSide" class="layui-input" type="text" autocomplete="off" >
+            </div>
+        </div>
         <div class="layui-inline"  style="width:80%;display: none">
             <label class="layui-form-label">婊°��銆�鏉匡細</label>
             <div class="layui-input-inline" style="text-align: left">

--
Gitblit v1.9.1