From d1cff38b67687ef4b5d7dfddc4f7d070c879f2f5 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 25 十月 2023 13:21:28 +0800
Subject: [PATCH] #redis锁(暂时认定的bug)

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   72 +++++++++++++++++++----------------
 1 files changed, 39 insertions(+), 33 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 42333be..cecad4c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -108,6 +108,8 @@
     private BasLiftOptService basLiftOptService;
     @Autowired
     private ConfigService configService;
+    @Autowired
+    private NavigateMapUtils navigateMapUtils;
 
 
     /**
@@ -2692,6 +2694,22 @@
                 return false;
             }
 
+            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
+            List<NavigateNode> targetNodes = NyLiftUtils.getLiftStaNodes(wrkMast.getStaNo());
+            if (targetNodes == null) {
+                return false;//鏈幏鍙栧埌鑺傜偣
+            }
+            boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(wrkMast.getLocNo()), null);
+            if (!checkPathIsAvailable) {
+                return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢�
+            }
+            //灏濊瘯閿佸畾鐩爣绔欒矾寰�
+            boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
+            if (!result2) {
+                return false;//璺緞閿佸畾澶辫触
+            }
+            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
+
             //鑾峰彇婧愯緭閫佺珯
             LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
             if (liftSta == null) {
@@ -2856,27 +2874,6 @@
             if (!shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) {
                 return false;
             }
-
-            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
-            //鑾峰彇鐩爣绔�
-            LiftStaProtocol targetLiftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
-            if (targetLiftSta == null) {
-                return false;//鎵句笉鍒扮珯鐐�
-            }
-            NavigateNode targetNode = NavigatePositionConvert.locNoToNode(targetLiftSta.getLocNo());//鐩爣鑺傜偣
-            NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(wrkMast.getLocNo()));
-            List<NavigateNode> targetNodes = new ArrayList<>();
-            targetNodes.add(targetNode);
-            boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(wrkMast.getLocNo()), null);
-            if (!checkPathIsAvailable) {
-                return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢�
-            }
-            //灏濊瘯閿佸畾鐩爣绔欒矾寰�
-            boolean result = navigateMapData.writeNavigateNodeToRedisMap(targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
-            if (!result) {
-                return false;//璺緞閿佸畾澶辫触
-            }
-            //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
 
             //绔欑偣鑺傜偣
             NavigateNode staNode = NavigatePositionConvert.locNoToNode(sourceLiftSta.getLocNo());
@@ -3081,18 +3078,6 @@
                 return false;//娌℃湁璁剧疆鎻愬崌鏈虹偣浣嶅潗鏍�
             }
 
-            //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�***************
-            NavigateNode targetNode = NavigatePositionConvert.locNoToNode(liftSta.getLocNo());//鐩爣鑺傜偣
-            NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(wrkMast.getLocNo()));
-            List<NavigateNode> targetNodes = new ArrayList<>();
-            targetNodes.add(targetNode);
-            //灏濊瘯瑙i攣鐩爣绔欒矾寰�
-            boolean result = navigateMapData.writeNavigateNodeToRedisMap(targetNodes, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿�
-            if (!result) {
-                return false;//璺緞瑙i攣澶辫触
-            }
-            //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�***************
-
             NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY());
             liftNode.setZ(liftSta.getLev());
 
@@ -3157,6 +3142,27 @@
                 return false;
             }
 
+            //璺ㄦゼ灞傜Щ鍔ㄤ换鍔�
+            if (Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+                //鑾峰彇鐩爣绔�
+                LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
+                if (liftSta == null) {
+                    return false;//鎵句笉鍒扮珯鐐�
+                }
+
+                //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�***************
+                List<NavigateNode> targetNodes = NyLiftUtils.getLiftStaNodes(liftSta.getStaNo());
+                if (targetNodes == null) {
+                    return false;//鏈幏鍙栧埌鑺傜偣
+                }
+                //灏濊瘯瑙i攣鐩爣绔欒矾寰�
+                boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿�
+                if (!result) {
+                    return false;//璺緞瑙i攣澶辫触
+                }
+                //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�***************
+            }
+
 //            //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐�
 //            BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), wrkMast.getLiftNo());
 //            if (targetBasDevp == null) {

--
Gitblit v1.9.1