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 | 125 +++++++++++++++++++++++++++++------------
1 files changed, 88 insertions(+), 37 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/NyShuttleThread.java b/src/main/java/com/zy/core/thread/NyShuttleThread.java
index 9648a90..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,9 +173,9 @@
//闈炶嚜鍔ㄧ姸鎬佹椂闂磋鏃�
shuttleProtocol.setErrTime(jsonObject.getInteger("errTime"));
- //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue
+ //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓篺alse
if (shuttleProtocol.getFree() == 0) {
- shuttleProtocol.setPakMk(true);
+ shuttleProtocol.setPakMk(false);
}
//灏嗗洓鍚戠┛姊溅鐘舵�佷繚瀛樿嚦鏁版嵁搴�
@@ -355,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);
@@ -369,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 {
@@ -381,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;//绂佹鍐嶄笅鍙戝懡浠�
}
}
@@ -394,10 +417,10 @@
return false;//灏忚溅鐘舵�佸繖锛岀姝㈡墽琛屽懡浠�
}
- //妫�娴嬪皬杞︽槸鍚﹁杩涙彁鍗囨満锛屽闇�瑕佽繘鎻愬崌鏈哄垯璋冨害鎻愬崌鏈�
- if (!checkLiftStation(wrkNo)) {
- return false;
- }
+// //妫�娴嬪皬杞︽槸鍚﹁杩涙彁鍗囨満锛屽闇�瑕佽繘鎻愬崌鏈哄垯璋冨害鎻愬崌鏈�
+// if (!checkLiftStation(wrkNo)) {
+// return false;
+// }
//妫�娴嬬┛姊溅鏄惁鍦ㄦ彁鍗囨満鍐�
if (!checkShuttleInTheLift(wrkNo)) {
@@ -411,7 +434,9 @@
//閿佸畾璺緞锛岄攣瀹氬綋鍓嶈矾寰勫拰涓嬩竴姝ヨ矾寰�
List<NavigateNode> nodes = command.getNodes();
- nodes.addAll(nextNodes);
+ if (nextNodes != null) {
+ nodes.addAll(nextNodes);
+ }
navigateMapData.writeNavigateNodeToRedisMap(nodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
//鍙墽琛屽懡浠�
@@ -422,7 +447,7 @@
News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
//灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
- shuttleProtocol.setPakMk(false);
+ shuttleProtocol.setPakMk(true);
//淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class);
@@ -438,33 +463,48 @@
null,
null,
JSON.toJSONString(command),
- null
+ null,
+ JSON.toJSONString(shuttleProtocol)
);
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
- 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;
}
@@ -572,7 +612,9 @@
if (basLift == null) {
continue;
}
- if (basLift.getPoint().equals(shuttleProtocol.getPoint())) {
+ Integer liftX = basLift.getPoint$().getX();
+ Integer liftY = basLift.getPoint$().getY();
+ if (liftX.equals(shuttleProtocol.getPoint().getX()) && liftY.equals(shuttleProtocol.getPoint().getY())) {
//灏忚溅鍦ㄦ彁鍗囨満鍐�
//鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId());
@@ -587,6 +629,8 @@
//鎻愬崌鏈哄浜庣┖闂诧紝鏀捐
return true;
}
+ }else {
+ return true;//涓嶅湪鎻愬崌鏈哄唴锛屾斁琛�
}
}
return false;//榛樿涓嶆斁琛�
@@ -600,9 +644,16 @@
//妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋(妫�鏌ヨ矾寰勯攣瀹氱姸鎬侊紝妫�娴嬭矾寰勬槸鍚︽湁鍏朵粬灏忚溅)
//妫�娴嬪綋鍓嶈璧拌矾寰勶紝鍜屼笅涓�姝ヨ矾寰�
boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(currentNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
- boolean checkPathIsAvailable2 = NavigateUtils.checkPathIsAvailable(nextNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
- if (checkPathIsAvailable && checkPathIsAvailable2) {
- return true;//鍙璧�
+ if (nextNodes == null) {
+ if (checkPathIsAvailable) {
+ return true;//鍙璧�
+ }
+ return false;
+ }else {
+ boolean checkPathIsAvailable2 = NavigateUtils.checkPathIsAvailable(nextNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
+ if (checkPathIsAvailable && checkPathIsAvailable2) {
+ return true;//鍙璧�
+ }
}
ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
--
Gitblit v1.9.1