From ff3b5df7015b2f2c5e24d9973a7b443309d8e579 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期六, 19 七月 2025 18:07:29 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/LocMastController.java |  105 +++++++++++++++-----
 src/main/java/com/zy/core/thread/impl/NyShuttleThread.java  |    4 
 src/main/java/com/zy/common/utils/ShuttleOperaUtils.java    |    4 
 src/main/resources/mapper/BasMapMapper.xml                  |    4 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |    2 
 src/main/java/com/zy/common/utils/NavigateUtils.java        |    2 
 src/main/webapp/views/admin/basMap/basMap.html              |   25 +++++
 src/main/java/com/zy/asrs/controller/BasMapController.java  |    1 
 src/main/webapp/static/js/basMap/basMap.js                  |   42 +++++++
 src/main/webapp/views/admin/locMast/locMast.html            |    1 
 src/main/java/com/zy/asrs/entity/BasMap.java                |   28 +++++
 src/main/java/com/zy/common/utils/NavigateMapData.java      |    4 
 src/main/webapp/static/js/locMast/locMast.js                |   22 ----
 13 files changed, 181 insertions(+), 63 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/BasMapController.java b/src/main/java/com/zy/asrs/controller/BasMapController.java
index 5e7af37..2d248c1 100644
--- a/src/main/java/com/zy/asrs/controller/BasMapController.java
+++ b/src/main/java/com/zy/asrs/controller/BasMapController.java
@@ -42,6 +42,7 @@
         convert(param, wrapper);
         allLike(BasMap.class, param.keySet(), wrapper, condition);
         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        wrapper.orderBy("lev");
         return R.ok(basMapService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java
index a08e8c3..d9c83bf 100644
--- a/src/main/java/com/zy/asrs/controller/LocMastController.java
+++ b/src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -11,11 +12,14 @@
 import com.core.common.DateUtils;
 import com.core.common.R;
 import com.core.exception.CoolException;
+import com.zy.asrs.entity.BasMap;
 import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.BasMapService;
 import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.model.MapNode;
+import com.zy.common.model.NavigateNode;
+import com.zy.common.model.enums.NavigationMapType;
 import com.zy.common.utils.NavigateMapData;
 import com.zy.common.web.BaseController;
 import com.zy.core.enums.LocStsType;
@@ -35,6 +39,8 @@
     private NavigateMapData navigateMapData;
     @Autowired
     private LocMastService locMastService;
+    @Autowired
+    private BasMapService basMapService;
 
     @RequestMapping(value = "/locMast/{id}/auth")
     @ManagerAuth
@@ -139,39 +145,80 @@
     @PostMapping("/locMast/init")
     @ManagerAuth(memo = "鍒濆鍖栧簱浣�")
     @Transactional
-    public R shuttleStateTable(){
-        locMastService.delete(new EntityWrapper<>(new LocMast()));
+    public R locMastInit(@RequestParam Integer lev) {
+        BasMap basMap = basMapService.selectLatestMap(lev);
+        locMastService.delete(new EntityWrapper<>(new LocMast())
+                .eq("lev1", lev));
+        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
+        for (int row = 0; row < lists.size(); row++) {
+            List<MapNode> nodeList = lists.get(row);
+            for (int bay = 0; bay < nodeList.size(); bay++) {
+                MapNode mapNode = nodeList.get(bay);
 
-        for (int i = 1; i <= 4; i++) {//鎬诲叡鍥涘眰妤�
-            List<List<MapNode>> lists = navigateMapData.getJsonData(i, -1, null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
-
-            for (int row = 0; row < lists.size(); row++) {
-                List<MapNode> nodeList = lists.get(row);
-                for (int bay = 0; bay < nodeList.size(); bay++) {
-                    MapNode mapNode = nodeList.get(bay);
-
-                    if (mapNode.getValue() == MapNodeType.DISABLE.id) {
-                        continue;
-                    }
-
-                    String locNo = Utils.getLocNo(row, bay, i);
-                    LocMast locMast = new LocMast();
-                    locMast.setLocNo(locNo);
-                    locMast.setRow1(row);
-                    locMast.setBay1(bay);
-                    locMast.setLev1(i);
-
-                    if (mapNode.getValue() == MapNodeType.NORMAL_PATH.id) {
-                        locMast.setLocSts(LocStsType.O.toString());
-                    }else if (mapNode.getValue() == MapNodeType.MAIN_PATH.id){
-                        locMast.setLocSts(LocStsType.W.toString());
-                    }
-
-                    locMastService.insert(locMast);
+                if (mapNode.getValue() == MapNodeType.DISABLE.id) {
+                    continue;
                 }
+
+                String locNo = Utils.getLocNo(row, bay, lev);
+                LocMast locMast = new LocMast();
+                locMast.setLocNo(locNo);
+                locMast.setRow1(row);
+                locMast.setBay1(bay);
+                locMast.setLev1(lev);
+
+                if (mapNode.getValue() == MapNodeType.NORMAL_PATH.id) {
+                    locMast.setLocSts(LocStsType.O.toString());
+                } else if (mapNode.getValue() == MapNodeType.MAIN_PATH.id) {
+                    locMast.setLocSts(LocStsType.W.toString());
+                }
+
+                locMastService.insert(locMast);
             }
         }
 
+        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("lev1", lev).orderBy("row1", false));
+        Integer rowMax = locMast.getRow1();
+        Integer baseRow = basMap.getBaseRow();
+        Integer baseRowCode = basMap.getBaseRowCode();
+
+        for (int i = baseRow; i <= rowMax; i++) {
+            Integer baseBayCode = basMap.getBaseBayCode();
+            if (basMap.getBaseBay() > 0) {
+                for (int j = 1; j <= basMap.getBaseBay(); j++) {
+                    String locNo = Utils.getLocNo(i, j, lev);
+
+                    LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+                            .eq("loc_no", locNo));
+                    if (locMast1 != null) {
+                        HashMap<String, Object> point = new HashMap<>();
+                        point.put("y", baseRowCode);
+                        point.put("x", baseBayCode);
+                        point.put("z", lev);
+                        locMast1.setQrCodeValue(JSON.toJSONString(point));
+                        locMastService.updateById(locMast1);
+                    }
+                    baseBayCode += 1;
+                }
+            }else {
+                int baseBay = basMap.getBaseBay() * -1;
+                for (int j = baseBay; j > 0; j--) {
+                    String locNo = Utils.getLocNo(i, j, lev);
+
+                    LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+                            .eq("loc_no", locNo));
+                    if (locMast1 != null) {
+                        HashMap<String, Object> point = new HashMap<>();
+                        point.put("y", baseRowCode);
+                        point.put("x", baseBayCode);
+                        point.put("z", lev);
+                        locMast1.setQrCodeValue(JSON.toJSONString(point));
+                        locMastService.updateById(locMast1);
+                    }
+                    baseBayCode += 1;
+                }
+            }
+            baseRowCode += 1;
+        }
         return R.ok();
     }
 
diff --git a/src/main/java/com/zy/asrs/entity/BasMap.java b/src/main/java/com/zy/asrs/entity/BasMap.java
index ace20e6..a89e116 100644
--- a/src/main/java/com/zy/asrs/entity/BasMap.java
+++ b/src/main/java/com/zy/asrs/entity/BasMap.java
@@ -67,6 +67,34 @@
     @TableField("origin_data")
     private String originData;
 
+    /**
+     * 鍩哄噯鎺�
+     */
+    @ApiModelProperty(value= "鍩哄噯鎺�")
+    @TableField("base_row")
+    private Integer baseRow;
+
+    /**
+     * 鍩哄噯鎺�-code鍊�
+     */
+    @ApiModelProperty(value= "鍩哄噯鎺�-code鍊�")
+    @TableField("base_row_code")
+    private Integer baseRowCode;
+
+    /**
+     * 鍩哄噯鍒�
+     */
+    @ApiModelProperty(value= "鍩哄噯鍒�")
+    @TableField("base_bay")
+    private Integer baseBay;
+
+    /**
+     * 鍩哄噯鍒�-code鍊�
+     */
+    @ApiModelProperty(value= "鍩哄噯鍒�-code鍊�")
+    @TableField("base_bay_code")
+    private Integer baseBayCode;
+
     public BasMap() {}
 
     public BasMap(String data,Date createTime,Date updateTime,String lastData,Integer lev) {
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index c5287f2..68e701d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -87,7 +87,7 @@
                 Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
                 if (data == null) {//redis鍦板浘鏁版嵁涓虹┖
                     //杞藉叆鍦板浘
-                    List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
+                    List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
 
                     //瀛樺叆鏁版嵁搴�
                     basMap.setData(JSON.toJSONString(lists));
diff --git a/src/main/java/com/zy/common/utils/NavigateMapData.java b/src/main/java/com/zy/common/utils/NavigateMapData.java
index 8518def..c8e72b9 100644
--- a/src/main/java/com/zy/common/utils/NavigateMapData.java
+++ b/src/main/java/com/zy/common/utils/NavigateMapData.java
@@ -100,7 +100,7 @@
     }
 
     //鑾峰彇JSON鏍煎紡鏁版嵁
-    public List<List<MapNode>> getJsonData(Integer lev, Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
+    public List<List<MapNode>> getJsonData(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
         try {
             BasMap basMap = basMapService.selectLatestMap(lev);
             String originData = basMap.getOriginData();
@@ -274,7 +274,7 @@
     public List<List<MapNode>> loadWhite(List<List<MapNode>> lists, Integer lev, List<int[]> whitePoints) {
         //鍔犺浇鐧藉悕鍗曡妭鐐�
         if (whitePoints != null) {
-            List<List<MapNode>> realMap = getJsonData(lev, -1, null, null);//鑾峰彇瀹屾暣鍦板浘
+            List<List<MapNode>> realMap = getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘
             for (int[] points : whitePoints) {
                 //鑾峰彇鍘熷鑺傜偣鏁版嵁
                 int x = points[0];
diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java
index 13888cf..db95875 100644
--- a/src/main/java/com/zy/common/utils/NavigateUtils.java
+++ b/src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -324,7 +324,7 @@
     //鑾峰彇浠巟鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈
     public Integer getXToNextDistance(NavigateNode xNode) {
         NavigateMapData mapData = SpringUtils.getBean(NavigateMapData.class);
-        List<List<MapNode>> lists = mapData.getJsonData(xNode.getZ(), NavigationMapType.NONE.id, null, null);
+        List<List<MapNode>> lists = mapData.getJsonData(xNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
         if (lists != null) {
             MapNode mapNode = lists.get(xNode.getX()).get(xNode.getY());
             if (mapNode != null) {
diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
index 6869199..170dc3e 100644
--- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -331,7 +331,7 @@
         NavigateNode currentNode = new NavigateNode(pointArr[0], pointArr[1]);
         currentNode.setZ(lev);
 
-        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//鑾峰彇瀹屾暣鍦板浘
+        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘
         int[][] map = navigateMapData.parseJsonDataArr(lists);
         int nodeValue = map[pointArr[0]][pointArr[1]];
         currentNode.setNodeValue(nodeValue);
@@ -372,7 +372,7 @@
         currentNode.setZ(lev);
         innerNodes.add(currentNode);
 
-        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//鑾峰彇瀹屾暣鍦板浘
+        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘
         int[][] map = navigateMapData.parseJsonDataArr(lists);
         int nodeValue = map[pointArr[0]][pointArr[1]];
         currentNode.setNodeValue(nodeValue);
diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
index ad23b1c..05d895e 100644
--- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -867,7 +867,7 @@
             int yp = Integer.parseInt(String.valueOf(nyNode.get("x")));
             int z = Integer.parseInt(String.valueOf(nyNode.get("z")));
 
-            List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.NONE.id, null, null);
+            List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
             List<MapNode> mapNodes = mapData.get(node.getX());
             MapNode mapNode = mapNodes.get(node.getY());
 
@@ -983,7 +983,7 @@
             throw new CoolException("鍦板潃鐮佷笉瀛樺湪");
         }
 
-        List<List<MapNode>> mapData = navigateMapData.getJsonData(lev, NavigationMapType.NONE.id, null, null);
+        List<List<MapNode>> mapData = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
         List<MapNode> mapNodes = mapData.get(locMast.getRow1());
         MapNode mapNode = mapNodes.get(locMast.getBay1());
 
diff --git a/src/main/resources/mapper/BasMapMapper.xml b/src/main/resources/mapper/BasMapMapper.xml
index 8cd0bb1..68953da 100644
--- a/src/main/resources/mapper/BasMapMapper.xml
+++ b/src/main/resources/mapper/BasMapMapper.xml
@@ -11,6 +11,10 @@
         <result column="last_data" property="lastData" />
         <result column="lev" property="lev" />
         <result column="origin_data" property="originData" />
+        <result column="base_row" property="baseRow" />
+        <result column="base_row_code" property="baseRowCode" />
+        <result column="base_bay" property="baseBay" />
+        <result column="base_bay_code" property="baseBayCode" />
 
     </resultMap>
 
diff --git a/src/main/webapp/static/js/basMap/basMap.js b/src/main/webapp/static/js/basMap/basMap.js
index bcd94be..ff156df 100644
--- a/src/main/webapp/static/js/basMap/basMap.js
+++ b/src/main/webapp/static/js/basMap/basMap.js
@@ -22,15 +22,19 @@
         height: 'full-120',
         cols: [[
             {type: 'checkbox'}
-            ,{field: 'id', align: 'center',title: '#'}
+            // ,{field: 'id', align: 'center',title: '#'}
+            ,{field: 'lev', align: 'center',title: '灞傛暟'}
             ,{field: 'data', align: 'center',title: '瀹炴椂鏁版嵁'}
             ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿'}
             ,{field: 'updateTime$', align: 'center',title: '鏇存柊鏃堕棿'}
             ,{field: 'lastData', align: 'center',title: '鏈�杩戞暟鎹�'}
-            ,{field: 'lev', align: 'center',title: '灞傛暟'}
             ,{field: 'originData', align: 'center',title: '鍘熷鍦板浘'}
+            ,{field: 'baseRow', align: 'center',title: '鍩哄噯鎺�'}
+            ,{field: 'baseRowCode', align: 'center',title: '鍩哄噯鎺�-code'}
+            ,{field: 'baseBay', align: 'center',title: '鍩哄噯鍒�'}
+            ,{field: 'baseBayCode', align: 'center',title: '鍩哄噯鍒�-code'}
 
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:240}
         ]],
         request: {
             pageName: 'curr',
@@ -137,9 +141,41 @@
             case "del":
                 del([data.id]);
                 break;
+            case "initLocMast":
+                initLocMast(data);
+                break;
         }
     });
 
+    function initLocMast(data) {
+        layer.confirm('纭畾鍒濆鍖栧簱浣嶆暟鎹悧锛�', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/locMast/init",
+                headers: {'token': localStorage.getItem('token')},
+                data: {
+                    lev: data.lev
+                },
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
     /* 寮圭獥 - 鏂板銆佷慨鏀� */
     function showEditModel(mData) {
         admin.open({
diff --git a/src/main/webapp/static/js/locMast/locMast.js b/src/main/webapp/static/js/locMast/locMast.js
index 5a399b9..726e411 100644
--- a/src/main/webapp/static/js/locMast/locMast.js
+++ b/src/main/webapp/static/js/locMast/locMast.js
@@ -178,28 +178,6 @@
                     });
                 });
                 break;
-            case "init":
-                layer.prompt({title: '璇疯緭鍏ュ彛浠わ紝骞堕噸缃簱浣�', formType: 1,   shadeClose: true}, function(pass, idx){
-                    http.get(baseUrl+"/locMast/init/pwd", {pwd: pass}, function (res) {
-                        if (res.data) {
-                            layer.open({
-                                type: 1,
-                                title: '鍒濆鍖栧簱浣�',
-                                area: ["400px"],
-                                maxmin: true,
-                                shadeClose: true,
-                                content: $("#resetLocDiv"),
-                                success: function (layero, index) {
-
-                                }
-                            })
-                        } else {
-                            layer.msg("鍙d护閿欒");
-                        }
-                        layer.close(idx);
-                    })
-                });
-                break;
         }
     });
 
diff --git a/src/main/webapp/views/admin/basMap/basMap.html b/src/main/webapp/views/admin/basMap/basMap.html
index b8f885f..68c4e56 100644
--- a/src/main/webapp/views/admin/basMap/basMap.html
+++ b/src/main/webapp/views/admin/basMap/basMap.html
@@ -56,6 +56,7 @@
 </script>
 
 <script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="initLocMast">鍒濆鍖栧簱浣�</a>
     <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
     <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
 </script>
@@ -84,6 +85,30 @@
                         <input class="layui-input" name="originData" placeholder="璇疯緭鍏�">
                     </div>
                 </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍩哄噯鎺�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="baseRow" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍩哄噯鎺�-code: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="baseRowCode" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍩哄噯鍒�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="baseBay" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍩哄噯鍒�-code: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="baseBayCode" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
 
              </div>
         </div>
diff --git a/src/main/webapp/views/admin/locMast/locMast.html b/src/main/webapp/views/admin/locMast/locMast.html
index f2151e7..a5e8984 100644
--- a/src/main/webapp/views/admin/locMast/locMast.html
+++ b/src/main/webapp/views/admin/locMast/locMast.html
@@ -64,7 +64,6 @@
     <div class="layui-btn-container">
         <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
         <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-primary" id="btn-init" lay-event="init">鍒濆鍖�</button>
         <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">瀵煎嚭</button>
     </div>
 </script>

--
Gitblit v1.9.1