From 944994450e3ba369e218e24c3f5ef3996f5c183c Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期三, 20 九月 2023 16:32:35 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/NyShuttleThread.java | 110 ++++++++++++++++++++++++++++++++---------------------- 1 files changed, 65 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/zy/core/thread/NyShuttleThread.java b/src/main/java/com/zy/core/thread/NyShuttleThread.java index 6ba944e..5bce024 100644 --- a/src/main/java/com/zy/core/thread/NyShuttleThread.java +++ b/src/main/java/com/zy/core/thread/NyShuttleThread.java @@ -95,7 +95,7 @@ //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟銆佹爣璁颁负true銆佸瓨鍦ㄤ换鍔℃寚浠わ紝闇�瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠� if (shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id && shuttleProtocol.getTaskNo() != 0 - && shuttleProtocol.getPakMk()) { + && !shuttleProtocol.getPakMk()) { //鎵ц涓嬩竴姝ユ寚浠� executeWork(shuttleProtocol.getTaskNo().shortValue()); } @@ -173,23 +173,9 @@ //闈炶嚜鍔ㄧ姸鎬佹椂闂磋鏃� shuttleProtocol.setErrTime(jsonObject.getInteger("errTime")); - //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue + //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓篺alse if (shuttleProtocol.getFree() == 0) { - shuttleProtocol.setPakMk(true); - }else { - //灏忚溅澶勪簬绛夊緟纭涓旂┖闂茬姸鎬侊紝濡傛湁宸ヤ綔鍙峰垯娓呯┖璺緞 - if (shuttleProtocol.getTaskNo() != 0 && shuttleProtocol.getProtocolStatusType() == ShuttleProtocolStatusType.WAITING) { - Object o = redisUtil.get("shuttle_wrk_no_" + shuttleProtocol.getTaskNo()); - if (o != null) { - ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); - ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); - NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo())); - navigateMapData.writeNavigateNodeToRedisMap(assignCommand.getNodes(), false);//瑙i攣璺緞 - - //鍒犻櫎redis - redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); - } - } + shuttleProtocol.setPakMk(false); } //灏嗗洓鍚戠┛姊溅鐘舵�佷繚瀛樿嚦鏁版嵁搴� @@ -369,8 +355,12 @@ } NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo())); + //鍙栧嚭鍛戒护 - NyShuttleHttpCommand command = commands.get(commandStep);//褰撳墠鍛戒护 + NyShuttleHttpCommand command = null; + if (commandStep < commands.size()) { + command = commands.get(commandStep);//褰撳墠鍛戒护 + } if (commandStep != 0) { //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴� NyShuttleHttpCommand lastCommand = commands.get(commandStep - 1); @@ -383,7 +373,9 @@ lastCommand.setComplete(true); //瑙i攣閿佸畾璺緞锛屼笂涓�鏉¤矾寰勫拰褰撳墠璺緞 List<NavigateNode> nodes = lastCommand.getNodes(); - nodes.addAll(command.getNodes()); + if (command != null) { + nodes.addAll(command.getNodes()); + } navigateMapData.writeNavigateNodeToRedisMap(nodes, false);//瑙i攣璺緞 } }else { @@ -395,6 +387,23 @@ if (!lastCommand.getComplete()) { //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠� return false; + } + + //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬� + NyShuttleHttpCommand endCommand = commands.get(commands.size() - 1); + if (endCommand.getComplete()) { + //鍒犻櫎redis + redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); + + if (!assignCommand.getCharge()) { + //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); + }else { + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); + } + News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(commands)); + + return false;//绂佹鍐嶄笅鍙戝懡浠� } } @@ -438,7 +447,7 @@ News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) - shuttleProtocol.setPakMk(false); + shuttleProtocol.setPakMk(true); //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class); @@ -460,32 +469,42 @@ shuttleOptService.insert(opt); } - //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 - if (commandStep < commands.size() - 1) { - //鏇存柊redis鏁版嵁 - //姝ュ簭澧炲姞 - commandStep++; - redisCommand.setCommandStep(commandStep); - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - }else { - //宸叉墽琛屽畬鎴� + commandStep++; + //鏇存柊redis鏁版嵁 + redisCommand.setCommandStep(commandStep); + //浠诲姟鏁版嵁淇濆瓨鍒皉edis + redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - //鏈�鍚庝竴娈靛懡浠や负绉诲姩鍛戒护锛屽垯鏆傜紦鍒犻櫎redis绛夊緟娓呴櫎璺緞鏃朵竴娆℃�у垹闄� - //鏈�鍚庝竴娈靛懡浠や负涓嶆槸绉诲姩鍛戒护锛屽垯鍒犻櫎redis - if (!command.getRequest().getBody().get("requestType").equals("move")) { - //鍒犻櫎redis - redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); - } - - if (!assignCommand.getCharge()) { - //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); - }else { - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); - } - News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); - } +// //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 +// if (commandStep < commands.size() - 1) { +// commandStep++; +// //鏇存柊redis鏁版嵁 +// redisCommand.setCommandStep(commandStep); +// //浠诲姟鏁版嵁淇濆瓨鍒皉edis +// redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); +// }else { +// //宸叉墽琛屽畬鎴� +// +// commandStep = commands.size(); +// //鏇存柊redis鏁版嵁 +// redisCommand.setCommandStep(commandStep); +// //浠诲姟鏁版嵁淇濆瓨鍒皉edis +// redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); +//// //鏈�鍚庝竴娈靛懡浠や负绉诲姩鍛戒护锛屽垯鏆傜紦鍒犻櫎redis绛夊緟娓呴櫎璺緞鏃朵竴娆℃�у垹闄� +//// //鏈�鍚庝竴娈靛懡浠や负涓嶆槸绉诲姩鍛戒护锛屽垯鍒犻櫎redis +//// if (!command.getRequest().getBody().get("requestType").equals("move")) { +//// //鍒犻櫎redis +//// redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); +//// } +//// +//// if (!assignCommand.getCharge()) { +//// //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting +//// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); +//// }else { +//// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); +//// } +//// News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); +// } return true; } @@ -629,6 +648,7 @@ if (checkPathIsAvailable) { return true;//鍙璧� } + return false; }else { boolean checkPathIsAvailable2 = NavigateUtils.checkPathIsAvailable(nextNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo())); if (checkPathIsAvailable && checkPathIsAvailable2) { -- Gitblit v1.9.1