From d56b8093dc9e3e75f8efe1a0f1aa6d821c9c3dfb Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期二, 15 四月 2025 13:30:35 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/MapCommandService.java |   37 +++++++++++++++++++++++++++++--------
 1 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/MapCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/MapCommandService.java
index 7d65d0a..7acdbac 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/MapCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/MapCommandService.java
@@ -1,8 +1,10 @@
 package com.zy.asrs.wcs.core.kernel.command;
 
+import com.alibaba.fastjson.JSON;
 import com.zy.asrs.wcs.core.entity.Motion;
 import com.zy.asrs.wcs.core.model.MapNode;
 import com.zy.asrs.wcs.core.model.NavigateNode;
+import com.zy.asrs.wcs.core.model.enums.MapNodeType;
 import com.zy.asrs.wcs.core.model.enums.MotionCtgType;
 import com.zy.asrs.wcs.core.model.enums.NavigationMapType;
 import com.zy.asrs.wcs.core.utils.*;
@@ -67,12 +69,20 @@
             return false;
         }
 
-        NavigateNode navigateNode = NavigatePositionConvert.locNoToNode(motion.getTarget());
         List<NavigateNode> nodes = new ArrayList<>();
-        nodes.add(navigateNode);
+
+        String target = motion.getTarget();
+        List<String> lockPath = JSON.parseArray(target, String.class);
+        Integer lev = null;
+        for (String loc : lockPath) {
+            NavigateNode navigateNode = NavigatePositionConvert.locNoToNode(loc);
+            nodes.add(navigateNode);
+
+            lev = Utils.getLev(loc);
+        }
 
         //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹�/瑙i攣
-        boolean lockResult = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(motion.getTarget()), shuttleProtocol.getShuttleNo(), nodes, lock);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹�/瑙i攣
+        boolean lockResult = navigateMapUtils.writeNavigateNodeToRedisMap(lev, shuttleProtocol.getShuttleNo(), nodes, lock);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹�/瑙i攣
         if (!lockResult) {
             return false;//閿佸畾/瑙i攣澶辫触
         }
@@ -80,11 +90,17 @@
     }
 
     private boolean checkLockPath(Motion motion, boolean lock) {
-        NavigateNode navigateNode = NavigatePositionConvert.locNoToNode(motion.getTarget());
         List<NavigateNode> nodes = new ArrayList<>();
-        nodes.add(navigateNode);
 
-        int lev = Utils.getLev(motion.getTarget());
+        String target = motion.getTarget();
+        List<String> lockPath = JSON.parseArray(target, String.class);
+        Integer lev = null;
+        for (String loc : lockPath) {
+            NavigateNode navigateNode = NavigatePositionConvert.locNoToNode(loc);
+            nodes.add(navigateNode);
+
+            lev = Utils.getLev(loc);
+        }
 
         Object o = redisUtil.get(DeviceRedisConstant.MAP + lev);
         if (o == null) {
@@ -103,17 +119,22 @@
 
         //鑾峰彇灏忚溅鑺傜偣
         List<int[]> shuttlePoints = Utils.getShuttlePoints(shuttleProtocol.getShuttleNo(), lev);
+        navigateMapData.setLev(lev);
         List<List<MapNode>> map = navigateMapData.getJsonData(NavigationMapType.DFX.id, null, shuttlePoints);
 
         for (NavigateNode node : nodes) {
             List<MapNode> listX = map.get(node.getX());
             MapNode mapNode = listX.get(node.getY());
+            if (mapNode.getLockDeviceNo() != null && !mapNode.getLockDeviceNo().equals(shuttleProtocol.getShuttleNo())) {
+                return false;//璺緞鎵�灞炴潈涓嶆槸褰撳墠璁惧
+            }
+
             if (lock) {//妫�娴嬫槸鍚﹂攣瀹�
-                if (mapNode.getValue() != -999) {
+                if (!mapNode.getValue().equals(MapNodeType.LOCK.id)) {
                     return false;//璺緞鏈攣瀹�
                 }
             }else {//妫�娴嬫槸鍚︽湭閿佸畾
-                if(mapNode.getValue() == -999) {
+                if(mapNode.getValue().equals(MapNodeType.LOCK.id)) {
                     return false;//璺緞宸查攣瀹�
                 }
             }

--
Gitblit v1.9.1