From 91ae43e5415c223bedc5cfde1016290e56577b14 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 02 八月 2023 09:01:12 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/utils/Utils.java | 143 +--------------
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 378 ------------------------------------------
2 files changed, 17 insertions(+), 504 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 5021b23..398e5e0 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -756,201 +756,6 @@
return true;
}
- //鑾峰彇璧风偣-缁堢偣鎸囦护
- public synchronized List<ShuttleCommand> shuttleAssignCommand(String startLocNo, String locNo, Integer mapType, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
- //鑾峰彇灏忚溅绉诲姩閫熷害
- BasShuttle basShuttle = basShuttleService.selectById(assignCommand.getShuttleNo());
- Integer runSpeed = 1000;
-// if (basShuttle != null) {
-// Integer runSpeed1 = basShuttle.getRunSpeed();
-// if (runSpeed1 != null) {
-// runSpeed = runSpeed1;
-// }
-// }
-
- //璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护
- List<NavigateNode> calc = NavigateUtils.calc(startLocNo, locNo, mapType, Utils.getShuttlePoints(shuttleThread.getSlave().getId(), Utils.getLev(startLocNo)));
- List<ShuttleCommand> commands = new ArrayList<>();
- if (calc == null) {
- return null;
- }
- if (!Utils.checkShuttlePath(calc, shuttleThread.getSlave().getId())) {//妫�娴嬬┛姊溅琛岃蛋璺緞锛屾槸鍚﹀瓨鍦ㄥ叾浠栧皬杞︼紝濡傛湁鍏朵粬灏忚溅鍒欒繘琛岃皟绂�
- return null;
- }
- List<NavigateNode> allNode = new ArrayList<>();
- allNode.addAll(calc);
-
- //鑾峰彇鍒嗘璺緞
- ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc);
- //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
- for (ArrayList<NavigateNode> nodes : data) {
- //寮�濮嬭矾寰�
- NavigateNode startPath = nodes.get(0);
-
- //涓棿璺緞
- NavigateNode middlePath = null;
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- Short middleCodeNum = null;
- Integer middleToDistDistance = null;//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
- if (nodes.size() > 10) {//涓鐮佷紶鍊掓暟绗笁涓�
- //涓棿璺緞
- middlePath = nodes.get(nodes.size() - 3);
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
- } else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
- //涓棿璺緞
- middlePath = nodes.get(nodes.size() - 2);
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
- }
-
- //鐩爣璺緞
- NavigateNode endPath = nodes.get(nodes.size() - 1);
- Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
- //鑾峰彇绉诲姩鍛戒护
- ShuttleCommand command = shuttleThread.getMoveCommand(startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id, middleCodeNum, middleToDistDistance, runSpeed);
- commands.add(command);
- }
-
- assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist
- //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
- NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(startLocNo));
- navigateMapData.writeNavigateNodeToRedisMap(allNode, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
-
- return commands;
- }
-
- //鑾峰彇璧风偣-涓偣-缁堢偣鎸囦护
- public synchronized List<ShuttleCommand> shuttleAssignCommand(String startLocNo, String middleLocNo, String locNo, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
- //鑾峰彇灏忚溅绉诲姩閫熷害
- BasShuttle basShuttle = basShuttleService.selectById(assignCommand.getShuttleNo());
- Integer runSpeed = 1000;
-// if (basShuttle != null) {
-// Integer runSpeed1 = basShuttle.getRunSpeed();
-// if (runSpeed1 != null) {
-// runSpeed = runSpeed1;
-// }
-// }
-
- List<NavigateNode> allNode = new ArrayList<>();
-
- //璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护
- List<NavigateNode> calc = NavigateUtils.calc(startLocNo, middleLocNo, NavigationMapType.NORMAL.id, null);//灏忚溅鏃犺揣锛岃蛋姝e父搴撲綅閫氶亾
- List<ShuttleCommand> commands = new ArrayList<>();
-
- if (calc != null) {
- if (!Utils.checkShuttlePath(calc, shuttleThread.getSlave().getId())) {//妫�娴嬬┛姊溅琛岃蛋璺緞锛屾槸鍚﹀瓨鍦ㄥ叾浠栧皬杞︼紝濡傛湁鍏朵粬灏忚溅鍒欒繘琛岃皟绂�
- return null;
- }
-
- allNode.addAll(calc);
- //鑾峰彇鍒嗘璺緞
- ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc);
- //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
- for (ArrayList<NavigateNode> nodes : data) {
- //寮�濮嬭矾寰�
- NavigateNode startPath = nodes.get(0);
-
- //涓棿璺緞
- NavigateNode middlePath = null;
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- Short middleCodeNum = null;
- Integer middleToDistDistance = null;//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
- if (nodes.size() > 10) {//涓鐮佷紶鍊掓暟绗笁涓�
- //涓棿璺緞
- middlePath = nodes.get(nodes.size() - 3);
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
- } else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
- //涓棿璺緞
- middlePath = nodes.get(nodes.size() - 2);
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
- }
-
- //鐩爣璺緞
- NavigateNode endPath = nodes.get(nodes.size() - 1);
- Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
- //鑾峰彇绉诲姩鍛戒护
- ShuttleCommand command = shuttleThread.getMoveCommand(startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id, middleCodeNum, middleToDistDistance, runSpeed);
- commands.add(command);
- }
- }
-
- //灏忚溅鎸囦护鍒拌揪鐩爣浣嶇疆鍚庯紝鍐嶅彂鍑轰竴鏉¢《鍗囨寚浠�
- commands.add(shuttleThread.getPalletCommand((short) 1));
-
- //璁$畻灏忚溅涓偣鍒扮粓鐐规墍闇�鍛戒护
- List<NavigateNode> calc2 = NavigateUtils.calc(middleLocNo, locNo, NavigationMapType.DFX.id, null);//灏忚溅鏈夎揣锛岃蛋绂佺敤杩嘍FX搴撲綅鐨勫湴鍥鹃�氶亾
- if (calc2 == null) {
- return null;
- }
- if (!Utils.checkShuttlePath(calc2, shuttleThread.getSlave().getId())) {//妫�娴嬬┛姊溅琛岃蛋璺緞锛屾槸鍚﹀瓨鍦ㄥ叾浠栧皬杞︼紝濡傛湁鍏朵粬灏忚溅鍒欒繘琛岃皟绂�
- return null;
- }
- allNode.addAll(calc2);
-
- //鑾峰彇鍒嗘璺緞
- ArrayList<ArrayList<NavigateNode>> data2 = NavigateUtils.getSectionPath(calc2);
- for (ArrayList<NavigateNode> nodes : data2) {
- //寮�濮嬭矾寰�
- NavigateNode startPath = nodes.get(0);
-
- //涓棿璺緞
- NavigateNode middlePath = null;
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- Short middleCodeNum = null;
- Integer middleToDistDistance = null;//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
- if (nodes.size() > 10) {//涓鐮佷紶鍊掓暟绗笁涓�
- //涓棿璺緞
- middlePath = nodes.get(nodes.size() - 3);
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
- } else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
- //涓棿璺緞
- middlePath = nodes.get(nodes.size() - 2);
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
- middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
- }
-
- //鐩爣璺緞
- NavigateNode endPath = nodes.get(nodes.size() - 1);
- Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- Short startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
- //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
- Short distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
- ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id, middleCodeNum, middleToDistDistance, runSpeed);
- commands.add(moveCommand);
- }
-
- //灏忚溅鎸囦护鍒拌揪鐩爣浣嶇疆鍚庯紝鍐嶅彂鍑轰竴鏉℃墭鐩樹笅闄嶆寚浠�
- commands.add(shuttleThread.getPalletCommand((short) 2));
-
- assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist
- //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
- NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(startLocNo));
- navigateMapData.writeNavigateNodeToRedisMap(allNode, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
-
- return commands;
- }
-
/**
* 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙�
*/
@@ -1454,16 +1259,6 @@
continue;
}
- boolean step2 = this.locToLocExecuteStep2(wrkMast);//璋冨害灏忚溅鍒扮洰鏍囨ゼ灞�
- if (!step2) {
- continue;
- }
-
- boolean step3 = this.locToLocExecuteStep3(wrkMast);//鍚屾ゼ灞傚簱浣嶇Щ杞�
- if (!step3) {
- continue;
- }
-
}
}
@@ -1484,179 +1279,6 @@
wrkMast.setShuttleNo(shuttleThread.getSlave().getId());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿
wrkMastMapper.updateById(wrkMast);
}
- return true;
- }
-
- /**
- * 璋冨害灏忚溅鍒扮洰鏍囨ゼ灞�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean locToLocExecuteStep2(WrkMast wrkMast) {
- if (wrkMast.getWrkSts() == 1 && wrkMast.getShuttleNo() != null) {
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
- if (!shuttleProtocol.isIdle(wrkMast.getWrkNo().shortValue())) {
- return false;//灏忚溅澶勪簬涓嶇┖闂茬姸鎬�
- }
-
- String currentLocNo = shuttleProtocol.getCurrentLocNo();//灏忚溅褰撳墠搴撲綅鍙�
- int shuttleLev = Utils.getLev(currentLocNo);//灏忚溅鎵�鍦ㄦゼ灞�
-
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
- LiftProtocol liftProtocol = liftThread.getLiftProtocol();
-
- //鍒ゆ柇灏忚溅鏄惁鍐嶇洰鏍囨ゼ灞�
- if (shuttleLev != Utils.getLev(wrkMast.getLocNo())) {
- //灏忚溅鍜岀洰鏍囦笉鍦ㄥ悓涓�妤煎眰
-
- //鎻愬崌鏈哄彛绔欑偣搴撲綅鍙�
- String liftSiteLocNo = Utils.levToOutInStaLocNo(shuttleLev);
-
- //鍒涘缓鍒嗛厤鍛戒护
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
- assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());//鍏ュ嚭搴撴ā寮�
- assignCommand.setSourceLocNo(currentLocNo);//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-
- //灏忚溅绉诲姩鍒版彁鍗囨満鍙o紝璁$畻璺緞
- List<ShuttleCommand> commands = this.shuttleAssignCommand(shuttleProtocol.getLocNo(), liftSiteLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
- if (commands == null) {
- return false;//鏈壘鍒拌矾寰�
- }
-
- //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅
- BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
- Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
-
-// //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护
-// ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1600, ShuttleRunDirection.TOP.id, null, null, 500);
-// commands.add(moveCommand);
-
- //鍒嗛厤鐩爣搴撲綅
- shuttleProtocol.setLocNo(liftSiteLocNo);
- //鐩爣搴撲綅
- assignCommand.setLocNo(liftSiteLocNo);
-// assignCommand.setCommands(commands);
- wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵��
-
- if (wrkMastMapper.updateById(wrkMast) > 0) {
- //涓嬪彂浠诲姟
- MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
- }
- }
- }
- return true;
- }
-
- /**
- * 鍚屾ゼ灞傚簱浣嶇Щ杞�
- * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
- * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
- */
- private boolean locToLocExecuteStep3(WrkMast wrkMast) {
- if (wrkMast.getShuttleNo() == null) {
- return false;
- }
-
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
- ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
- if (!shuttleProtocol.isIdle(wrkMast.getWrkNo().shortValue())) {
- return false;//灏忚溅澶勪簬涓嶇┖闂茬姸鎬�
- }
-
- LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
- LiftProtocol liftProtocol = liftThread.getLiftProtocol();
-
- DevpThread devpThread = null;
- for (DevpSlave devp : slaveProperties.getDevp()){
- // 鑾峰彇鍏ュ簱绔欎俊鎭�
- devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
- }
-
- //鍒ゆ柇灏忚溅鏄惁鍦ㄥ伐浣滄。浠诲姟鐩爣妤煎眰
- String currentLocNo = shuttleProtocol.getCurrentLocNo();//灏忚溅褰撳墠搴撲綅鍙�
- int shuttleLev = Utils.getLev(currentLocNo);//灏忚溅鎵�鍦ㄦゼ灞�
- if (shuttleLev != Utils.getLev(wrkMast.getLocNo())) {
- return false;//涓嶅湪鍚屼竴妤煎眰
- }
-
- if (wrkMast.getWrkSts() == 1 || wrkMast.getWrkSts() == 8) {
- //璋冨害灏忚溅鎵ц鍚屾ゼ灞傜Щ搴撲换鍔�
-
- //鍒涘缓鍒嗛厤鍛戒护
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
- assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());//鍏ュ嚭搴撴ā寮�
- assignCommand.setSourceLocNo(currentLocNo);//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-
- List<ShuttleCommand> commands = new ArrayList<>();
-
- if (wrkMast.getWrkSts() == 8) {//8.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴愶紝闇�瑕佸皢灏忚溅绉诲嚭鎻愬崌鏈�
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
- if (!liftProtocol.isIdleNoTask()) {
- return false;//鎻愬崌鏈哄繖
- }
- //鍒ゆ柇鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙锋槸鍚︿竴鑷�
- if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
- return false;
- }
-
- //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌浣嶏紝鍒ゆ柇绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙�
- String locNo = wrkMast.getLocNo();
- int lev = Utils.getLev(locNo);//鐩爣浜岀淮鐮佹墍鍦ㄦゼ灞�
- int liftLev = liftProtocol.getLev().intValue();//鎻愬崌鏈烘墍鍦ㄦゼ灞�
- if (liftLev != lev) {
- return false;//鎻愬崌鏈轰笉鍦ㄧ洰鏍囨ゼ灞傝烦杩�
- }
-
- Integer staNo = Utils.levToOutInStaNo(lev >= 2 ? lev + 1 : lev);
- //鑾峰彇鐩爣绔欎俊鎭�
- StaProtocol staProtocol1 = devpThread.getStation().get(staNo);
- if (staProtocol1 == null) {
- return false;//绔欑偣淇℃伅涓嶅瓨鍦�
- }
- if (!staProtocol1.isLiftArrival()) {
- return false;//绔欑偣鎻愬崌鏈哄埌浣嶄俊鍙穎alse
- }
-
-// BasDevp basDevp = basDevpService.selectById(staNo);
-// short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
-// Short distCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈哄彛绔欑偣浜岀淮鐮�
-// Short runDirection = ShuttleRunDirection.BOTTOM.id;//杩愯鏂瑰悜
-// //鑾峰彇鍛戒护
-// ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1600, runDirection, null, null, 500);
-// commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
-
-// currentLocNo = basDevp.getLocNo();//浣跨敤杈撻�佺珯鐐瑰彛浣滀负璧风偣鍧愭爣
- }
-
- //鐩存帴璁$畻杞﹀埌婧愬簱浣嶅埌鐩爣搴撲綅璺緞
- List<ShuttleCommand> commands1 = this.shuttleAssignCommand(currentLocNo, wrkMast.getSourceLocNo(), wrkMast.getLocNo(), assignCommand, shuttleThread);
- if (commands1 == null) {
- return false;//鎵句笉鍒拌矾寰勭瓑寰呬笅涓�娆�
- }
- commands.addAll(commands1);
-
- //鍒嗛厤浠诲姟鍙�
- shuttleProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());
- //鍒嗛厤婧愬簱浣�
- shuttleProtocol.setSourceLocNo(wrkMast.getSourceLocNo());
-
-// assignCommand.setCommands(commands);
- //鍒嗛厤鐩爣搴撲綅
- shuttleProtocol.setLocNo(wrkMast.getLocNo());
- //鐩爣搴撲綅
- assignCommand.setLocNo(wrkMast.getLocNo());
- wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓�
- if (wrkMastMapper.updateById(wrkMast) > 0) {
- //涓嬪彂浠诲姟
- MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
- }
- }
-
return true;
}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 041ec0a..2a8ed5e 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -13,6 +13,7 @@
import com.zy.common.utils.NavigateMapData;
import com.zy.common.utils.NavigatePositionConvert;
import com.zy.common.utils.NavigateUtils;
+import com.zy.common.utils.ShuttleDispatchUtils;
import com.zy.core.Slave;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
@@ -445,102 +446,19 @@
return list;
}
- //妫�娴嬬┛姊溅琛岃蛋璺緞锛屾槸鍚﹀瓨鍦ㄥ叾浠栧皬杞︼紝濡傛湁鍏朵粬灏忚溅鍒欒繘琛岃皟绂�
- public static boolean checkShuttlePath(List<NavigateNode> nodes, Integer shuttleId) {
- boolean flag = false;
- int shuttleX = -1;
- int shuttleY = -1;
- int shuttleZ = -1;
-
- LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
-
- if (nodes == null) {
- return false;
- }
- if (nodes.size() == 0) {
- return false;
- }
- NavigateMapData mapData = new NavigateMapData(nodes.get(0).getZ());//鑾峰彇鍦板浘鏁版嵁
- int[][] data = mapData.getData(-1, null, Utils.getShuttlePoints(shuttleId, nodes.get(0).getZ()));
- for (NavigateNode node : nodes) {
- int x = node.getX();
- int y = node.getY();
- if (data[x][y] == 66) {//鍒ゆ柇璇ヨ矾寰勬槸鍚︽湁灏忚溅
- flag = true;//瀛樺湪灏忚溅
- shuttleX = x;
- shuttleY = y;
- shuttleZ = node.getZ();
- break;
- }
- }
-
- if (flag) {
- //妫�娴嬪埌璺緞瀛樺湪鍏朵粬灏忚溅
- //鎼滅储涓�鏉℃病鏈夊皬杞︾殑绌哄贩閬�
-
- //鑾峰彇灏忚溅鍧愭爣浜岀淮鐮�
- Short shuttlePosition = NavigatePositionConvert.xyToPosition(shuttleX, shuttleY, shuttleZ);
- LocMast shuttleLocMast = locMastService.queryByQrCode(String.valueOf(shuttlePosition));
-
- //鑾峰彇灏忚溅绾跨▼
- SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class);
- ShuttleThread currentShuttleThread = null;
- for (ShuttleSlave slave : slaveProperties.getShuttle()) {
- //鑾峰彇绌挎杞︽墍鍦ㄨ妭鐐逛綅缃�
- ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId());
- if (shuttleThread == null) {
- continue;
- }
- ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
- if (shuttleProtocol == null) {
- continue;
- }
-
- if (shuttleProtocol.getCurrentCode().intValue() == Integer.parseInt(shuttleLocMast.getQrCodeValue())) {
- //灏忚溅鍧愭爣鍜岀嚎绋嬭幏鍙栫殑灏忚溅鍧愭爣涓�鑷�
- currentShuttleThread = shuttleThread;
- break;
- }
- }
-
- if (currentShuttleThread == null) {
- //娌℃壘鍒板皬杞�
- return false;
- }
-
- ShuttleProtocol shuttleProtocol = currentShuttleThread.getShuttleProtocol();
- if (!shuttleProtocol.isIdle()) {
- return false;//琚皟搴︾殑灏忚溅澶勪簬宸ヤ綔鐘舵�侊紝绂佹瑙﹀彂閬胯浠诲姟
- }
-
- //鎼滅储涓�鏉℃病鏈夊皬杞︾殑绌哄贩閬擄紝骞惰皟搴﹀皬杞�
- ShuttleAssignCommand assignCommand = Utils.searchEmptyGroupToMoveShuttle(shuttleZ, shuttleId, currentShuttleThread, null);//shuttleId鎼滅储鏃堕渶瑕佹帓闄ょ殑杞﹁締id锛宑urrentShuttleThread鏄渶瑕佽璋冨害鐨勮溅杈嗙嚎绋�
-
- if (assignCommand == null) {
- return false;
- }
-
- //涓嬪彂浠诲姟
- MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
-
- return false;
- }
-
- return true;
- }
-
- //鎼滅储涓�鏉℃病鏈夊皬杞︾殑绌哄贩閬擄紝骞惰繑鍥炵Щ鍔ㄥ皬杞︾殑鍛戒护
- public static ShuttleAssignCommand searchEmptyGroupToMoveShuttle(int z, Integer currentShuttleId, ShuttleThread shuttleThread, String startLocNo) {
+ //鎼滅储涓�鏉℃病鏈夊皬杞︾殑绌哄贩閬擄紝骞惰皟搴﹀皬杞�
+ public static boolean searchEmptyGroupToMoveShuttle(int z, Integer currentShuttleId, NyShuttleThread shuttleThread) {
LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
MainServiceImpl mainServiceImpl = SpringUtils.getBean(MainServiceImpl.class);
CommonService commonService = SpringUtils.getBean(CommonService.class);
+ ShuttleDispatchUtils shuttleDispatchUtils = SpringUtils.getBean(ShuttleDispatchUtils.class);
if (shuttleThread == null) {
- return null;
+ return false;
}
- ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
if (shuttleProtocol == null) {
- return null;
+ return false;
}
NavigateMapData mapData = new NavigateMapData(z);//鑾峰彇鍦板浘鏁版嵁
@@ -549,9 +467,9 @@
int distY = -1;
int distX = -1;
int distZ = -1;
- for (int y = 3; y <= 25; y++) {
+ for (int y = 20; y <= 56; y++) {
boolean searchFlag = true;
- for (int x = 20; x <= 23; x++) {
+ for (int x = 10; x <= 11; x++) {
if (data[x][y] < 0 || data[x][y] == 66) {
searchFlag = false;//璇ュ贩閬撴湁绂佺敤鑺傜偣鎴栨湁灏忚溅
break;
@@ -561,7 +479,7 @@
if (searchFlag) {
//鎼滅储鍑虹┖宸烽亾
distY = y;
- distX = 20;
+ distX = 11;
distZ = z;
break;
}
@@ -569,44 +487,17 @@
if (distY != -1) {
- //鑾峰彇閬胯鍧愭爣浜岀淮鐮�
- Short distPosition = NavigatePositionConvert.xyToPosition(distX, distY, distZ);
- LocMast distLocMast = locMastService.queryByQrCode(String.valueOf(distPosition));
+ //鑾峰彇閬胯搴撲綅
+ String distLocNo = NavigatePositionConvert.xyzToLocNo(distX, distY, distZ);
+ LocMast distLocMast = locMastService.queryByLoc(distLocNo);
if (distLocMast == null) {
- return null;
+ return false;
}
- if (startLocNo == null) {
- //鑾峰彇灏忚溅鍧愭爣浜岀淮鐮�
- LocMast shuttleLocMast = locMastService.queryByQrCode(String.valueOf(shuttleProtocol.getCurrentCode()));
- if (shuttleLocMast == null) {
- return null;
- }
- startLocNo = shuttleLocMast.getLocNo();
- }
-
- //鍒涘缓鍒嗛厤鍛戒护
- ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
- assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
- assignCommand.setTaskNo((short) commonService.getWorkNo(7));//浠诲姟鍙�
- assignCommand.setTaskMode(ShuttleTaskModeType.AVOID.id.shortValue());//閬胯浠诲姟
- assignCommand.setSourceLocNo(startLocNo);//婧愬簱浣�
-
- //鍒嗛厤鐩爣搴撲綅
- shuttleProtocol.setLocNo(distLocMast.getLocNo());
- //鐩爣搴撲綅
- assignCommand.setLocNo(distLocMast.getLocNo());
-
- //灏忚溅绉诲姩鍒扮洰鏍囦綅缃�
- List<ShuttleCommand> commands = mainServiceImpl.shuttleAssignCommand(startLocNo, distLocMast.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
- if (commands == null) {
- return null;
- }
-
-// assignCommand.setCommands(commands);
- return assignCommand;
+ //璋冨害灏忚溅鍒伴伩璁╀綅缃�
+ return shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(7), distLocNo, shuttleProtocol.getShuttleNo().intValue());
}
- return null;
+ return false;
}
}
--
Gitblit v1.9.1