From dad4b7fd3a7fcaed73d28f0ebd9e90d86ca21225 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 22 七月 2025 12:34:51 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/utils/ShuttleOperaUtils.java |   45 ++++++++++++++++++++++++++-------------------
 1 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
index 45f6a71..171640f 100644
--- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -4,21 +4,22 @@
 import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasShuttle;
+import com.zy.asrs.entity.DeviceConfig;
 import com.zy.asrs.service.BasShuttleService;
+import com.zy.asrs.service.DeviceConfigService;
 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.core.News;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.dispatcher.ShuttleDispatchUtils;
 import com.zy.core.enums.MapNodeType;
 import com.zy.core.enums.ShuttleRunDirection;
 import com.zy.core.enums.SlaveType;
-import com.zy.core.model.ShuttleSlave;
 import com.zy.core.model.command.ShuttleAssignCommand;
 import com.zy.core.model.command.ShuttleCommand;
 import com.zy.core.model.protocol.ShuttleProtocol;
-import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.ShuttleThread;
 import com.zy.system.entity.Config;
 import com.zy.system.service.ConfigService;
@@ -45,15 +46,15 @@
     @Autowired
     private ConfigService configService;
     @Autowired
-    private SlaveProperties slaveProperties;
-    @Autowired
     private ShuttleDispatchUtils shuttleDispatchUtils;
+    @Autowired
+    private DeviceConfigService deviceConfigService;
 
-    public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, Integer mapType, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
-        return getStartToTargetCommands(startLocNo, endLocNo, mapType, null, assignCommand, shuttleThread);
+    public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
+        return getStartToTargetCommands(startLocNo, endLocNo, mapTypes, null, assignCommand, shuttleThread);
     }
 
-    public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, Integer mapType, List<int[]> whites, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
+    public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, List<int[]> whites, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
         ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
         if (shuttleProtocol == null) {
             return null;
@@ -61,7 +62,7 @@
         Integer shuttleNo = shuttleProtocol.getShuttleNo();
         //鑾峰彇灏忚溅绉诲姩閫熷害
         Integer runSpeed = Optional.ofNullable(basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", shuttleNo)).getRunSpeed()).orElse(1000);
-        List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), whites);
+        List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapTypes, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), whites);
         if (nodeList == null) {
             News.error("{} dash {} can't find navigate path!", startLocNo, endLocNo);
             shuttleThread.offerSystemMsg("{} dash {} can't find navigate path!", startLocNo, endLocNo);
@@ -89,11 +90,14 @@
             lockNode.add(node.clone());
         }
 
+        long startTime = System.currentTimeMillis();
         List<ShuttleCommand> commands = new ArrayList<>();
         //鑾峰彇鍒嗘璺緞
-        ArrayList<ArrayList<NavigateNode>> data = navigateUtils.getSectionPath(nodeList);
+        List<List<NavigateNode>> data = navigateUtils.getSectionPath(nodeList);
+        long endTime = System.currentTimeMillis();
+        News.info("getSection path time:{}", (endTime - startTime));
         //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
-        for (ArrayList<NavigateNode> nodes : data) {
+        for (List<NavigateNode> nodes : data) {
             //寮�濮嬭矾寰�
             NavigateNode startPath = nodes.get(0);
 
@@ -121,7 +125,7 @@
         return commands;
     }
 
-    public synchronized List<ShuttleCommand> shuttleInOutLiftCommand(String startLocNo, String endLocNo, Integer mapType, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
+    public synchronized List<ShuttleCommand> shuttleInOutLiftCommand(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
         NavigateNode startNode = NavigatePositionConvert.locNoToNode(startLocNo);
         NavigateNode endNode = NavigatePositionConvert.locNoToNode(endLocNo);
         List<NavigateNode> unlockPath = new ArrayList<>();
@@ -144,7 +148,7 @@
 
         //鑾峰彇灏忚溅绉诲姩閫熷害
         Integer runSpeed = Optional.ofNullable(basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", shuttleNo)).getRunSpeed()).orElse(1000);
-        List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), null);
+        List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapTypes, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), null);
         if (nodeList == null) {
             News.error("{} dash {} can't find navigate path!", startLocNo, endLocNo);
             shuttleThread.offerSystemMsg("{} dash {} can't find navigate path!", startLocNo, endLocNo);
@@ -158,9 +162,9 @@
 
         List<ShuttleCommand> commands = new ArrayList<>();
         //鑾峰彇鍒嗘璺緞
-        ArrayList<ArrayList<NavigateNode>> data = navigateUtils.getSectionPath(nodeList);
+        List<List<NavigateNode>> data = navigateUtils.getSectionPath(nodeList);
         //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
-        for (ArrayList<NavigateNode> nodes : data) {
+        for (List<NavigateNode> nodes : data) {
             //寮�濮嬭矾寰�
             NavigateNode startPath = nodes.get(0);
 
@@ -285,8 +289,11 @@
 
     private HashMap<String, Integer> findCarMap() {
         HashMap<String, Integer> carMap = new HashMap<>();
-        for (ShuttleSlave slave : slaveProperties.getShuttle()) {
-            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId());
+
+        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
+        for (DeviceConfig device : shuttleList) {
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo());
             if (shuttleThread == null) {
                 continue;
             }
@@ -299,7 +306,7 @@
                 continue;
             }
 
-            carMap.put(currentLocNo, slave.getId());
+            carMap.put(currentLocNo, device.getDeviceNo());
         }
         return carMap;
     }
@@ -326,7 +333,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);
@@ -367,7 +374,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);

--
Gitblit v1.9.1