From cb757218ff35e8b302de2d6cc5a95b842acd8ea2 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 20 九月 2023 12:33:05 +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