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