From 97aa2cd09e92f73cd4dff3d99eaef64e748c80b3 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 28 六月 2023 19:04:32 +0800
Subject: [PATCH] 优化出库小车避让
---
src/main/java/com/zy/asrs/utils/Utils.java | 4 +
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 59 +++++++++--------------------
src/main/java/com/zy/core/thread/ShuttleThread.java | 18 +++++++-
3 files changed, 37 insertions(+), 44 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 3cecf33..3d831aa 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1086,26 +1086,6 @@
//鏈壘鍒拌矾寰勶紝绛夊緟涓嬩竴娆�
continue;
}
- //鎵�浣跨敤鐨勮矾寰勮繘琛屼复鏃惰В閿侊紝鐢ㄤ簬鍚庣画璁$畻
- NavigateMapData navigateMapData = new NavigateMapData(currentLev);
- navigateMapData.writeNavigateNodeToRedisMap(assignCommand.getNodes(), false);//鎵�浣跨敤鐨勮矾寰勮繘琛屼复鏃惰В閿�
-
- //浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀�
- //鎼滅储涓�鏉℃病鏈夊皬杞︾殑绌哄贩閬擄紝骞惰皟搴﹀皬杞�
- int distLev = Utils.getLev(liftSiteLocNo);//閬胯妤煎眰
- String startLocNo = "180020" + Utils.getLev(liftSiteLocNo);
- ShuttleAssignCommand moveAssignCommand = Utils.searchEmptyGroupToMoveShuttle(distLev, shuttleThread.getSlave().getId(), shuttleThread, startLocNo);
- if (moveAssignCommand == null) {//璋冨害灏忚溅鍛戒护涓虹┖
- continue;
- }
- //鎵�浣跨敤鐨勮矾寰勮繘琛屼复鏃惰В閿侊紝鐢ㄤ簬鍚庣画璁$畻
- navigateMapData.writeNavigateNodeToRedisMap(moveAssignCommand.getNodes(), false);//鎵�浣跨敤鐨勮矾寰勮繘琛屼复鏃惰В閿�
- commands.addAll(moveAssignCommand.getCommands());//灏嗛伩璁╁皬杞︾殑鍛戒护娣诲姞
- List<NavigateNode> nodes = assignCommand.getNodes();//灏嗛伩璁╄矾寰勬坊鍔犺繘鑺傜偣璺緞涓�
- nodes.addAll(moveAssignCommand.getNodes());//灏嗛伩璁╄矾寰勬坊鍔犺繘鑺傜偣璺緞涓�
- assignCommand.setNodes(nodes);
- navigateMapData.writeNavigateNodeToRedisMap(nodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹�
-
//鍒嗛厤鐩爣搴撲綅
shuttleProtocol.setLocNo(wrkMast.getSourceLocNo());
@@ -1177,26 +1157,6 @@
if (commands == null) {
continue;//鏈壘鍒拌矾寰�
}
- //鎵�浣跨敤鐨勮矾寰勮繘琛屼复鏃惰В閿侊紝鐢ㄤ簬鍚庣画璁$畻
- NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(liftSiteLocNo));
- navigateMapData.writeNavigateNodeToRedisMap(assignCommand.getNodes(), false);//鎵�浣跨敤鐨勮矾寰勮繘琛屼复鏃惰В閿�
-
- //浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀�
- //鎼滅储涓�鏉℃病鏈夊皬杞︾殑绌哄贩閬擄紝骞惰皟搴﹀皬杞�
- int distLev = Utils.getLev(liftSiteLocNo);//閬胯妤煎眰
- String startLocNo = "180020" + Utils.getLev(liftSiteLocNo);
- ShuttleAssignCommand moveAssignCommand = Utils.searchEmptyGroupToMoveShuttle(distLev, shuttleThread.getSlave().getId(), shuttleThread, startLocNo);
- if (moveAssignCommand == null) {//璋冨害灏忚溅鍛戒护涓虹┖
- continue;
- }
- //鎵�浣跨敤鐨勮矾寰勮繘琛屼复鏃惰В閿侊紝鐢ㄤ簬鍚庣画璁$畻
- navigateMapData.writeNavigateNodeToRedisMap(moveAssignCommand.getNodes(), false);//鎵�浣跨敤鐨勮矾寰勮繘琛屼复鏃惰В閿�
- commands.addAll(moveAssignCommand.getCommands());//灏嗛伩璁╁皬杞︾殑鍛戒护娣诲姞
- List<NavigateNode> nodes = assignCommand.getNodes();//灏嗛伩璁╄矾寰勬坊鍔犺繘鑺傜偣璺緞涓�
- nodes.addAll(moveAssignCommand.getNodes());//灏嗛伩璁╄矾寰勬坊鍔犺繘鑺傜偣璺緞涓�
- assignCommand.setNodes(nodes);
- navigateMapData.writeNavigateNodeToRedisMap(nodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹�
-
//姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
@@ -1373,6 +1333,7 @@
//灏嗕换鍔℃。鏍囪涓哄畬鎴�
WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue());
+ ShuttleAssignCommand moveAssignCommand = null;//閬胯鍛戒护
if (wrkMast != null) {
switch (wrkMast.getWrkSts().intValue()) {
case 9://9.灏忚溅鍏ュ簱鎼繍涓� ==> 14.鍏ュ簱瀹屾垚
@@ -1385,6 +1346,15 @@
wrkMast.setWrkSts(23L);
break;
case 26://26.灏忚溅鍑哄簱鎼繍涓� ==> 27.灏忚溅鍑哄簱鎼繍瀹屾垚
+ //浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀�
+ //鎼滅储涓�鏉℃病鏈夊皬杞︾殑绌哄贩閬擄紝骞惰皟搴﹀皬杞�
+ int distLev = Utils.getLev(wrkMast.getSourceLocNo());//閬胯妤煎眰
+ String startLocNo = "180020" + distLev;
+ moveAssignCommand = Utils.searchEmptyGroupToMoveShuttle(distLev, shuttleThread.getSlave().getId(), shuttleThread, startLocNo);
+ if (moveAssignCommand == null) {//璋冨害灏忚溅鍛戒护涓虹┖
+ continue;
+ }
+
wrkMast.setWrkSts(27L);
break;
default:
@@ -1402,6 +1372,15 @@
//浠诲姟鎸囦护娓呴浂
shuttleProtocol.setAssignCommand(null);
News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
+
+ if (wrkMast.getWrkSts() == 27) {
+ if (moveAssignCommand != null) {
+ //涓嬪彂浠诲姟
+ shuttleProtocol.setPakMk(true);
+ MessageQueue.offer(SlaveType.Shuttle, shuttleThread.getSlave().getId(), new Task(3, moveAssignCommand));
+ }
+ }
+
} else {
News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 89e907d..d862cba 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -9,6 +9,7 @@
import com.zy.asrs.service.impl.MainServiceImpl;
import com.zy.common.model.NavigateNode;
import com.zy.common.model.enums.NavigationMapType;
+import com.zy.common.service.CommonService;
import com.zy.common.utils.NavigateMapData;
import com.zy.common.utils.NavigatePositionConvert;
import com.zy.common.utils.NavigateUtils;
@@ -525,6 +526,7 @@
public static ShuttleAssignCommand searchEmptyGroupToMoveShuttle(int z, Integer currentShuttleId, ShuttleThread shuttleThread, String startLocNo) {
LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
MainServiceImpl mainServiceImpl = SpringUtils.getBean(MainServiceImpl.class);
+ CommonService commonService = SpringUtils.getBean(CommonService.class);
if (shuttleThread == null) {
return null;
@@ -579,7 +581,7 @@
//鍒涘缓鍒嗛厤鍛戒护
ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
- assignCommand.setTaskNo((short) 9998);//浠诲姟鍙�
+ assignCommand.setTaskNo((short) commonService.getWorkNo(7));//浠诲姟鍙�
assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id.shortValue());//绉诲姩鍒扮洰鏍囧簱浣�
assignCommand.setSourceLocNo(startLocNo);//婧愬簱浣�
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index d6b95ac..88b5ab8 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -729,6 +729,9 @@
// }
// }
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
+ LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+
List<ShuttleCommand> commands = redisCommand.getAssignCommand().getCommands();
//褰撳墠姝ュ簭
int commandStep = redisCommand.getCommandStep();
@@ -744,6 +747,14 @@
if (command.getDistCodeNum().intValue() == shuttleProtocol.getCurrentCode().intValue()) {
//涓婁竴鏉℃寚浠ょ殑鐩爣浣嶇疆鍜屽綋鍓嶅皬杞︿綅缃浉鍚岋紝鍒欒瀹氫笂涓�鏉′换鍔″畬鎴�
command.setComplete(true);
+
+ //涓婁竴鏉℃寚浠よ捣鐐规槸鎻愬崌鏈轰簩缁寸爜锛屽垯娓呴浂鎻愬崌鏈轰换鍔″彿
+ if (command.getStartCodeNum().intValue() == liftProtocol.getBarcode().intValue()) {
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂�
+ if (liftProtocol.isIdleNoTask()) {
+ liftProtocol.setTaskNo((short) 0);//娓呯┖浠诲姟鍙�
+ }
+ }
}
} else if (command.getCommandWord().intValue() == 2) {
//鎵樼洏椤跺崌鍛戒护
@@ -805,9 +816,6 @@
}
}
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
- LiftProtocol liftProtocol = liftThread.getLiftProtocol();
-
//鍒ゆ柇灏忚溅褰撳墠浜岀淮鐮佹槸鍚︿负鎻愬崌鏈轰簩缁寸爜
if (shuttleProtocol.getCurrentCode().intValue() == liftProtocol.getBarcode().intValue()) {
@@ -844,6 +852,9 @@
if (!staProtocol.isLiftArrival()) {
return false;//绔欑偣鎻愬崌鏈哄埌浣嶄俊鍙穎alse锛岀姝笅鍙戝懡浠�
}
+
+ //鏉′欢婊¤冻锛屽崰鐢ㄦ彁鍗囨満
+ liftProtocol.setTaskNo(wrkNo);
}
}
@@ -1046,6 +1057,7 @@
return true;
}else {
if (liftProtocol.getPositionArrivalFeedback$() == shuttleLocNoLev) {
+ liftProtocol.setTaskNo(wrkNo);//缁欐彁鍗囨満鍐欏伐浣滃彿锛岄槻姝㈣鍗犵敤
return true;//鎻愬崌鏈哄埌浣�
}
executeLift(liftThread, liftProtocol, redisCommand, shuttleLocNoLev);//璋冨害鎻愬崌鏈�
--
Gitblit v1.9.1