From c9c80ecde06d151f4f2f3ccf46d3f4c0e65cd8a1 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期二, 23 九月 2025 13:13:46 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/utils/ShuttleOperaUtils.java |   34 +++++++++++++++++++++++++++-------
 1 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
index 2f826fc..c4fe002 100644
--- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -72,6 +72,17 @@
             }
         }
 
+        Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
+
+        //灏忚溅(x,y)鍛戒护杩愯鏂瑰悜棰犲��
+        boolean shuttleDirectionReverse = false;
+        if (systemConfigMapObj != null) {
+            HashMap<String, String> systemConfigMap = (HashMap<String, String>) systemConfigMapObj;
+            if (systemConfigMap.get("shuttleDirectionReverse").equals("Y")) {
+                shuttleDirectionReverse = true;
+            }
+        }
+
         long calcStartTime = System.currentTimeMillis();
         List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapTypes, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), whites);
         if (nodeList == null) {
@@ -133,15 +144,15 @@
 
             long startGetMoveCommandTime = System.currentTimeMillis();
             //鑾峰彇绉诲姩鍛戒护
-            ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes);
+            ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, shuttleDirectionReverse);
             News.info("[RCS Debug] getMoveCommand idx:{} time:{}", i, (System.currentTimeMillis() - startGetMoveCommandTime));
 
             if (i + 1 == data.size()) {
                 long startGetInOutLiftTime = System.currentTimeMillis();
                 if (moveType.equals("inLift")) {
-                    command = shuttleThread.getMoveLiftCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, true);
+                    command = shuttleThread.getMoveLiftCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, true, shuttleDirectionReverse);
                 }else if (moveType.equals("outLift")) {
-                    command = shuttleThread.getMoveLiftCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, false);
+                    command = shuttleThread.getMoveLiftCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, false, shuttleDirectionReverse);
                 }
                 News.info("[RCS Debug] getInOutLiftTime idx:{} time:{}", i, (System.currentTimeMillis() - startGetInOutLiftTime));
             }
@@ -156,9 +167,8 @@
 
         //灏忚溅绉诲姩杩炵画涓嬪彂鎸囦护
         boolean shuttleMoveCommandsContinuously = false;
-        Object object = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
-        if (object != null) {
-            HashMap<String, String> systemConfigMap = (HashMap<String, String>) object;
+        if (systemConfigMapObj != null) {
+            HashMap<String, String> systemConfigMap = (HashMap<String, String>) systemConfigMapObj;
             String shuttleMoveCommandsContinuouslyConfig = systemConfigMap.get("shuttleMoveCommandsContinuously");
             if (shuttleMoveCommandsContinuouslyConfig != null && shuttleMoveCommandsContinuouslyConfig.equals("Y")) {
                 shuttleMoveCommandsContinuously = true;
@@ -371,7 +381,17 @@
         int[] pointArr = NavigatePositionConvert.positionToXY(locNo);
         NavigateNode currentNode = new NavigateNode(pointArr[0], pointArr[1]);
         currentNode.setZ(lev);
-        innerNodes.add(currentNode);
+
+        boolean addCurrentNode = true;
+        for (int[] shuttlePoint : whiteShuttlePointList) {
+            if(currentNode.getX() == shuttlePoint[0] && currentNode.getY() == shuttlePoint[1]) {
+                addCurrentNode = false;
+                break;
+            }
+        }
+        if (addCurrentNode) {
+            innerNodes.add(currentNode);
+        }
 
         List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘
         int[][] map = navigateMapData.parseJsonDataArr(lists);

--
Gitblit v1.9.1