From 8ef2bb5e46d84594e6ed632c07ea0b47a1bf6c4d Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 11 十二月 2024 16:15:17 +0800
Subject: [PATCH] #path similarity

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateMapData.java |  134 ++++++++++++++++++++++++--------------------
 1 files changed, 73 insertions(+), 61 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateMapData.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateMapData.java
index bc5372f..d527847 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateMapData.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateMapData.java
@@ -4,11 +4,12 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.zy.asrs.common.wms.entity.BasMap;
 import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.wcs.core.domain.dto.BasMapDto;
 import com.zy.asrs.wcs.core.domain.dto.RedisMapDto;
 import com.zy.asrs.wcs.core.entity.Loc;
 import com.zy.asrs.wcs.core.model.MapNode;
+import com.zy.asrs.wcs.core.model.enums.MapNodeType;
 import com.zy.asrs.wcs.core.model.enums.NavigationMapType;
 import com.zy.asrs.wcs.core.service.LocService;
 import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant;
@@ -30,6 +31,8 @@
     private LocService locService;
     @Autowired
     private DictService dictService;
+    @Autowired
+    private NavigateMapData navigateMapData;
 
     private Integer lev;//鍦板浘妤煎眰
 
@@ -53,14 +56,20 @@
      * 灏濊瘯浠巖edis鑾峰彇鏁版嵁
      */
     public int[][] getDataFromRedis(Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
+        String constantMap = DeviceRedisConstant.MAP;
+        if(mapType == NavigationMapType.NONE_LOCK.id){
+            constantMap = DeviceRedisConstant.BASE_MAP;
+        }
+
         RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
-        Object o = redisUtil.get(DeviceRedisConstant.MAP + lev);
+        Object o = redisUtil.get(constantMap + lev);
         if (o == null) {
             return null;
         }
 
-        BasMap basMap = JSON.parseObject(o.toString(), BasMap.class);
-        return this.getDataFormString(basMap.getData(), mapType, whitePoints, shuttlePoints);
+        BasMapDto basMap = JSON.parseObject(o.toString(), BasMapDto.class);
+        String mapData = basMap.getData();
+        return this.getDataFormString(mapData, mapType, whitePoints, shuttlePoints);
     }
 
     /**
@@ -135,6 +144,17 @@
                     mapNode.setNo(object.getString("row") + "-" + object.getString("bay"));
                     mapNode.setXBase(object.getInteger("refx"));
                     mapNode.setYBase(object.getInteger("refy"));
+
+                    if(mapNode.getValue() == MapNodeType.CONVEYOR.id) {
+                        //杈撻�佺嚎,鍒ゆ柇灏忚溅鏄惁鍙蛋
+                        if (object.containsKey("conveyorHasGo")) {
+                            if(object.getBoolean("conveyorHasGo")) {
+                                //灏忚溅鍙蛋
+                                mapNode.setValue(MapNodeType.CONVEYOR_CAR_GO.id);
+                            }
+                        }
+                    }
+
                     nodes.add(mapNode);
                 }
 
@@ -157,7 +177,7 @@
                     //瀛樺湪绌虹己鑺傜偣锛岃嚜鍔ㄨˉ瓒�
                     for (int i = defaultBay; i < node.getBay(); i++) {
                         MapNode mapNode = new MapNode();
-                        mapNode.setValue(-1);
+                        mapNode.setValue(MapNodeType.DISABLE.id);
                         mapNode.setTop(1000);
                         mapNode.setBottom(1000);
                         mapNode.setLeft(1000);
@@ -184,7 +204,7 @@
             ArrayList<ArrayList<MapNode>> lists = entry.getValue();//鑾峰彇鍦板浘
 
             MapNode mapNode = new MapNode();
-            mapNode.setValue(-1);
+            mapNode.setValue(MapNodeType.DISABLE.id);
             mapNode.setTop(1000);
             mapNode.setBottom(1000);
             mapNode.setLeft(1000);
@@ -241,7 +261,7 @@
             return null;
         }
 
-        BasMap basMap = JSON.parseObject(o.toString(), BasMap.class);
+        BasMapDto basMap = JSON.parseObject(o.toString(), BasMapDto.class);
         ArrayList arrayList = JSON.parseObject(basMap.getData(), ArrayList.class);
         List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//杩囨护鍦板浘鏁版嵁
         return lists;
@@ -268,63 +288,55 @@
             lists.add(list);
         }
 
-        //鑾峰彇涓ユ牸妯″紡鍙傛暟
-        boolean mapStrict = true;//榛樿涓ユ牸妯″紡
-        Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, "shuttleMapStrict"));
-        if (dict != null) {
-            mapStrict = Boolean.parseBoolean(dict.getValue());
-        }
+        //杩囨护鏁版嵁
+        //鑾峰彇褰撳墠妤煎眰搴撲綅鏁版嵁
+        List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>()
+                .eq(Loc::getLev, lev)
+                .eq(Loc::getStatus, 1)
+                .orderByAsc(Loc::getRow, Loc::getBay));
+        for (Loc loc : locs) {
+            Integer row = loc.getRow();
+            Integer bay = loc.getBay();
 
-        if (mapStrict) {//涓ユ牸妯″紡涓嬶紝杞藉叆搴撲綅鐘舵��
-            //杩囨护鏁版嵁
-            //鑾峰彇褰撳墠妤煎眰搴撲綅鏁版嵁
-            List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>()
-                    .eq(Loc::getLev, lev)
-                    .orderByAsc(Loc::getRow, Loc::getBay));
-            for (Loc loc : locs) {
-                Integer row = loc.getRow();
-                Integer bay = loc.getBay();
-
-                boolean whiteFlag = false;//榛樿涓嶅瓨鍦ㄧ櫧鍚嶅崟
-                if (whitePoints != null) {
-                    for (int[] whitePoint : whitePoints) {
-                        if (whitePoint[0] == row && whitePoint[1] == bay) {
-                            //瀛樺湪鐧藉悕鍗�
-                            whiteFlag = true;
-                            break;
-                        }
+            boolean whiteFlag = false;//榛樿涓嶅瓨鍦ㄧ櫧鍚嶅崟
+            if (whitePoints != null) {
+                for (int[] whitePoint : whitePoints) {
+                    if (whitePoint[0] == row && whitePoint[1] == bay) {
+                        //瀛樺湪鐧藉悕鍗�
+                        whiteFlag = true;
+                        break;
                     }
                 }
-                if (whiteFlag) {
-                    continue;//瀛樺湪鐧藉悕鍗曪紝涓嶆墽琛屼笅鍒楄繃婊ゆ柟妗�
-                }
-
-
-                List<MapNode> list = lists.get(row);
-                MapNode mapNode = list.get(bay);
-
-                if (mapType == NavigationMapType.NONE.id) {
-                    //涓嶈繃婊や换浣曟暟鎹�
-                } else if (mapType == NavigationMapType.DFX.id) {
-                    //杞﹁締鏈夎揣
-                    //璇诲彇瀵瑰簲搴撲綅鏁版嵁锛屽皢DFX搴撲綅鐘舵�佺殑鑺傜偣缃负-1(闅滅鐗�)
-                    if (loc.getLocSts$().equals("F")
-                            || loc.getLocSts$().equals("D")
-                            || loc.getLocSts$().equals("X")
-                    ) {
-                        mapNode.setValue(-1);//绂佺敤鑺傜偣
-                    }
-                } else if (mapType == NavigationMapType.NORMAL.id) {
-                    //杩囨护搴撲綅鐘舵�乆
-                    if (loc.getLocSts$().equals("X")) {
-                        mapNode.setValue(-1);//绂佺敤鑺傜偣
-                    }
-                }
-
-                //鏇存柊list
-                list.set(bay, mapNode);
-                lists.set(row, list);
             }
+            if (whiteFlag) {
+                continue;//瀛樺湪鐧藉悕鍗曪紝涓嶆墽琛屼笅鍒楄繃婊ゆ柟妗�
+            }
+
+
+            List<MapNode> list = lists.get(row);
+            MapNode mapNode = list.get(bay);
+
+            if (mapType == NavigationMapType.NONE.id) {
+                //涓嶈繃婊や换浣曟暟鎹�
+            } else if (mapType == NavigationMapType.DFX.id) {
+                //杞﹁締鏈夎揣
+                //璇诲彇瀵瑰簲搴撲綅鏁版嵁锛屽皢DFX搴撲綅鐘舵�佺殑鑺傜偣缃负-1(闅滅鐗�)
+                if (loc.getLocStsFlag().equals("F")
+                        || loc.getLocStsFlag().equals("D")
+                        || loc.getLocStsFlag().equals("X")
+                ) {
+                    mapNode.setValue(MapNodeType.DISABLE.id);//绂佺敤鑺傜偣
+                }
+            } else if (mapType == NavigationMapType.NORMAL.id || mapType == NavigationMapType.NONE_LOCK.id) {
+                //杩囨护搴撲綅鐘舵�乆
+                if (loc.getLocStsFlag().equals("X")) {
+                    mapNode.setValue(MapNodeType.DISABLE.id);//绂佺敤鑺傜偣
+                }
+            }
+
+            //鏇存柊list
+            list.set(bay, mapNode);
+            lists.set(row, list);
         }
 
         //鍔犺浇杞﹁締鍧愭爣鍒板湴鍥句腑
@@ -334,7 +346,7 @@
                 int y = points[1];
                 List<MapNode> list = lists.get(x);
                 MapNode mapNode = list.get(y);
-                mapNode.setValue(66);//璁剧疆涓鸿溅杈嗕唬鐮�66
+                mapNode.setValue(MapNodeType.CAR.id);//璁剧疆涓鸿溅杈嗕唬鐮�66
                 //鏇存柊list
                 list.set(y, mapNode);
                 lists.set(x, list);

--
Gitblit v1.9.1