From 73ce8bebcc5d14f3fb62a19ee677abfcdfc776b4 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期六, 19 七月 2025 16:17:51 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/utils/NavigateMapData.java |   74 ++++++++++++++++++++++---------------
 1 files changed, 44 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/zy/common/utils/NavigateMapData.java b/src/main/java/com/zy/common/utils/NavigateMapData.java
index 0d92ea3..8518def 100644
--- a/src/main/java/com/zy/common/utils/NavigateMapData.java
+++ b/src/main/java/com/zy/common/utils/NavigateMapData.java
@@ -1,10 +1,13 @@
 package com.zy.common.utils;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.SpringUtils;
 import com.zy.asrs.entity.BasMap;
+import com.zy.asrs.entity.DeviceConfig;
 import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.service.BasMapService;
+import com.zy.asrs.service.DeviceConfigService;
 import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.model.MapNode;
@@ -13,14 +16,11 @@
 import com.zy.core.enums.MapNodeType;
 import com.zy.core.enums.RedisKeyType;
 import com.zy.core.enums.SlaveType;
-import com.zy.core.model.ForkLiftSlave;
 import com.zy.core.model.protocol.ForkLiftStaProtocol;
-import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.ForkLiftThread;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.io.*;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -31,18 +31,18 @@
 public class NavigateMapData {
 
     @Autowired
-    private SlaveProperties slaveProperties;
+    private DeviceConfigService deviceConfigService;
     @Autowired
     private BasMapService basMapService;
 
-    public int[][] getData(Integer lev, Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
+    public int[][] getData(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
         try {
             BasMap basMap = basMapService.selectLatestMap(lev);
             String originData = basMap.getOriginData();
 
             //瑙f瀽json鍦板浘鏁版嵁
             ArrayList arrayList = JSON.parseObject(originData, ArrayList.class);
-            List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//杩囨护鍦板浘鏁版嵁
+            List<List<MapNode>> lists = filterMap(mapTypes, arrayList, lev, whitePoints, shuttlePoints);//杩囨护鍦板浘鏁版嵁
             int[][] map = new int[lists.size()][];
             int j = 0;
             for (List<MapNode> list : lists) {
@@ -66,7 +66,7 @@
     /**
      * 灏濊瘯浠巖edis鑾峰彇鏁版嵁
      */
-    public int[][] getDataFromRedis(Integer lev, Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
+    public int[][] getDataFromRedis(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
         RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
         Object o = redisUtil.get(RedisKeyType.MAP.key + lev);
         if (o == null) {
@@ -74,15 +74,15 @@
         }
 
         BasMap basMap = JSON.parseObject(o.toString(), BasMap.class);
-        return this.getDataFormString(lev, basMap.getData(), mapType, whitePoints, shuttlePoints);
+        return this.getDataFormString(lev, basMap.getData(), mapTypes, whitePoints, shuttlePoints);
     }
 
     /**
      * 浠嶭ist鏁版嵁涓幏鍙栧湴鍥�
      */
-    public int[][] getDataFormString(Integer lev, String data, Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
+    public int[][] getDataFormString(Integer lev, String data, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
         ArrayList arrayList = JSON.parseObject(data, ArrayList.class);
-        List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//杩囨护鍦板浘鏁版嵁
+        List<List<MapNode>> lists = filterMap(mapTypes, arrayList, lev, whitePoints, shuttlePoints);//杩囨护鍦板浘鏁版嵁
         int[][] map = new int[lists.size()][];
         int j = 0;
         for (List<MapNode> list : lists) {
@@ -139,18 +139,30 @@
      * @param whitePoints 鐧藉悕鍗曡妭鐐癸紝涓嶉渶瑕佽杩囨护
      * @param shuttlePoints 绌挎杞﹁妭鐐癸紝闇�瑕佸姞杞借繘鍦板浘
      */
-    public List<List<MapNode>> filterMap(Integer mapType, List arrayList, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) {
+    public List<List<MapNode>> filterMap(List<NavigationMapType> mapTypes, List arrayList, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) {
         //閲嶅缓鏁版嵁鏍煎紡
         List<List<MapNode>> lists = rebuildData(arrayList);
 
-        //杞藉叆搴撲綅淇℃伅
-        lists = loadLocMast(mapType, lists, lev, whitePoints);
+        List<NavigationMapType> locMapType = new ArrayList<>();
+        locMapType.add(NavigationMapType.NONE);
+        locMapType.add(NavigationMapType.DFX);
+        locMapType.add(NavigationMapType.NORMAL);
+        for (NavigationMapType mapType : mapTypes) {
+            if(locMapType.contains(mapType)) {
+                //杞藉叆搴撲綅淇℃伅
+                lists = loadLocMast(mapType.id, lists, lev, whitePoints);
+            }
 
-        //鍔犺浇杞﹁締
-        lists = loadShuttle(lists, shuttlePoints);
+            if (mapType.equals(NavigationMapType.SHUTTLE)) {
+                //鍔犺浇杞﹁締
+                lists = loadShuttle(lists, shuttlePoints);
+            }
 
-        //鍔犺浇璐у弶鎻愬崌鏈虹偣浣�
-        lists = loadForkLift(lists, mapType, lev);
+            if (mapType.equals(NavigationMapType.SHUTTLE)) {
+                //鍔犺浇璐у弶鎻愬崌鏈虹偣浣�
+                lists = loadForkLift(lists, lev);
+            }
+        }
 
         //鍔犺浇鐧藉悕鍗曡妭鐐�
         lists = loadWhite(lists, lev, whitePoints);
@@ -283,11 +295,13 @@
     }
 
     //鍔犺浇璐у弶鎻愬崌鏈虹偣浣�
-    public List<List<MapNode>> loadForkLift(List<List<MapNode>> lists, Integer mapType, Integer lev) {
+    public List<List<MapNode>> loadForkLift(List<List<MapNode>> lists, Integer lev) {
         try {
             //鍔犺浇璐у弶鎻愬崌鏈烘斁璐х偣浣嶆暟鎹�
-            for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLift()) {
-                ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, forkLiftSlave.getId());
+            List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                    .eq("device_type", String.valueOf(SlaveType.ForkLift)));
+            for (DeviceConfig device : forkliftList) {
+                ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo());
                 if (forkLiftThread == null) {
                     continue;
                 }
@@ -302,16 +316,16 @@
                     List<MapNode> list = lists.get(row);
                     MapNode mapNode = list.get(bay);
 
-                    if (mapType == NavigationMapType.DFX.id) {
-                        //杞﹁締鏈夎揣
-                        if (staProtocol.getHasTray() != null && staProtocol.getHasTray()) {
-                            mapNode.setValue(MapNodeType.DISABLE.id);
-                        }
-                    } else {
-                        if (staProtocol.getHasCar() != null && staProtocol.getHasCar()) {
-                            mapNode.setValue(MapNodeType.CAR.id);
-                        }
-                    }
+//                    if (mapType == NavigationMapType.DFX.id) {
+//                        //杞﹁締鏈夎揣
+//                        if (staProtocol.getHasTray() != null && staProtocol.getHasTray()) {
+//                            mapNode.setValue(MapNodeType.DISABLE.id);
+//                        }
+//                    } else {
+//                        if (staProtocol.getHasCar() != null && staProtocol.getHasCar()) {
+//                            mapNode.setValue(MapNodeType.CAR.id);
+//                        }
+//                    }
 
                     //鏇存柊list
                     list.set(bay, mapNode);

--
Gitblit v1.9.1