From 6c6a1178f2e5900d56a381e12f9c9f998cf9b270 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 20 六月 2023 11:25:22 +0800 Subject: [PATCH] fix --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 165 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 105 insertions(+), 60 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 0d68a9c..a3270f1 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -685,6 +685,11 @@ //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂� if (!liftProtocol.isIdle()) { + try { + Thread.sleep(1000);//浼戠湢1s + } catch (InterruptedException e) { + throw new RuntimeException(e); + } continue;//鎻愬崌鏈哄繖 } @@ -982,6 +987,11 @@ //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂� if (!liftProtocol.isIdle()) { + try { + Thread.sleep(1000);//浼戠湢1s + } catch (InterruptedException e) { + throw new RuntimeException(e); + } continue;//鎻愬崌鏈哄繖 } @@ -993,7 +1003,7 @@ continue;//鎻愬崌鏈轰笉鍦ㄧ洰鏍囨ゼ灞傝烦杩� } - Integer staNo = Utils.levToOutInStaNo(lev); + Integer staNo = Utils.levToOutInStaNo(lev >= 2 ? lev + 1 : lev); DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); //鑾峰彇鐩爣绔欎俊鎭� StaProtocol staProtocol1 = devpThread.getStation().get(staNo); @@ -1028,32 +1038,26 @@ continue; } - wrkMast.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿 - //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - String currentLocNo = shuttleProtocol.getCurrentLocNo(); - - //灏忚溅褰撳墠灞傞珮 - Integer currentLev = Utils.getLev(currentLocNo); - //鑾峰彇鎻愬崌鏈� - LiftSlave liftSlave = slaveProperties.getLift().get(0); - //褰撳墠妤煎眰鎻愬崌鏈鸿緭閫佺珯鐐瑰簱浣嶅彿 - String liftSiteLocNo = Utils.levToOutInStaLocNo(currentLev); - - //鍒嗛厤浠诲姟鍙� - shuttleProtocol.setTaskNo(wrkMast.getWrkNo().shortValue()); - //鍒嗛厤婧愬簱浣� - shuttleProtocol.setSourceLocNo(currentLocNo); - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - //鍥涘悜绌挎杞﹀彿 - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); - //浠诲姟鍙� - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - //鍏ュ嚭搴撴ā寮� - assignCommand.setTaskMode(ShuttleTaskModeType.PAK_OUT.id.shortValue()); - assignCommand.setSourceLocNo(currentLocNo); - if (wrkMast.getWrkSts() == 21) { + + wrkMast.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿 + //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) + String currentLocNo = shuttleProtocol.getCurrentLocNo(); + + //灏忚溅褰撳墠灞傞珮 + Integer currentLev = Utils.getLev(currentLocNo); + //褰撳墠妤煎眰鎻愬崌鏈鸿緭閫佺珯鐐瑰簱浣嶅彿 + String liftSiteLocNo = Utils.levToOutInStaLocNo(currentLev); + + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + //鍥涘悜绌挎杞﹀彿 + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); + //浠诲姟鍙� + assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); + //鍏ュ嚭搴撴ā寮� + assignCommand.setTaskMode(ShuttleTaskModeType.PAK_OUT.id.shortValue()); + assignCommand.setSourceLocNo(currentLocNo); + //鍒ゆ柇灏忚溅鍜屽簱浣嶆槸鍚﹀湪鍚屼竴灞� if (Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) { //鍚屼竴灞�(灏嗗皬杞︾Щ鍔ㄥ埌璐х墿浣嶇疆) @@ -1064,19 +1068,35 @@ } //鍒嗛厤鐩爣搴撲綅 shuttleProtocol.setLocNo(wrkMast.getSourceLocNo()); + //鍒嗛厤浠诲姟鍙� + shuttleProtocol.setTaskNo(wrkMast.getWrkNo().shortValue()); + //鍒嗛厤婧愬簱浣� + shuttleProtocol.setSourceLocNo(currentLocNo); //鐩爣搴撲綅 assignCommand.setLocNo(wrkMast.getSourceLocNo()); assignCommand.setCommands(commands); wrkMast.setWrkSts(26L);//灏忚溅鎼繍涓� + + if (wrkMastMapper.updateById(wrkMast) > 0) { + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + } }else { //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿(灏嗗皬杞︾Щ鍔ㄥ埌鎻愬崌鏈轰綅缃�) //灏忚溅鍒版彁鍗囨満鍙f寚浠� List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, ShuttleTaskModeType.PAK_IN.id, assignCommand, shuttleThread); if (commands == null) { - continue;//鏈壘鍒拌矾寰� + if (!currentLocNo.equals(liftSiteLocNo)) {//褰撳墠浣嶇疆涔熶笉鍦ㄦ彁鍗囨満鍙� + continue;//鏈壘鍒拌矾寰� + } + commands = new ArrayList<>(); } shuttleProtocol.setLocNo(liftSiteLocNo); + //鍒嗛厤浠诲姟鍙� + shuttleProtocol.setTaskNo(wrkMast.getWrkNo().shortValue()); + //鍒嗛厤婧愬簱浣� + shuttleProtocol.setSourceLocNo(currentLocNo); //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅 BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo); @@ -1090,32 +1110,56 @@ assignCommand.setLocNo(liftSiteLocNo); assignCommand.setCommands(commands); wrkMast.setWrkSts(22L);//灏忚溅杩佺Щ鐘舵�� + + if (wrkMastMapper.updateById(wrkMast) > 0) { + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + } } } else if (wrkMast.getWrkSts() == 25) { - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, wrkMast.getSourceLocNo(), liftSiteLocNo, assignCommand, shuttleThread); + + wrkMast.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿 + + //褰撳墠妤煎眰鎻愬崌鏈鸿緭閫佺珯鐐瑰簱浣嶅彿 + String liftSiteLocNo = Utils.levToOutInStaLocNo(liftProtocol.getLev().intValue()); + + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + //鍥涘悜绌挎杞﹀彿 + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); + //浠诲姟鍙� + assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); + //鍏ュ嚭搴撴ā寮� + assignCommand.setTaskMode(ShuttleTaskModeType.PAK_OUT.id.shortValue()); + assignCommand.setSourceLocNo(liftSiteLocNo); + + List<ShuttleCommand> commands = this.shuttleAssignCommand(liftSiteLocNo, wrkMast.getSourceLocNo(), liftSiteLocNo, assignCommand, shuttleThread); if (commands == null) { continue;//鏈壘鍒拌矾寰� } //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛 - BasDevp basDevp = basDevpService.selectById(109);//鑾峰彇鎻愬崌鏈轰俊鎭� - short startCode = Short.parseShort(basDevp.getQrCodeValue());//鎻愬崌鏈轰簩缁寸爜 + short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜 Short distCode = commands.get(0).getStartCodeNum();//鐩爣浜岀淮鐮� //鑾峰彇绉诲姩鍛戒护 - ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1300, commands.get(0).getRunDirection(), (short) 1, 0); + ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1400, commands.get(0).getRunDirection(), startCode, 1400, 500); commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶� //鍒嗛厤鐩爣搴撲綅 shuttleProtocol.setLocNo(wrkMast.getSourceLocNo()); + //鍒嗛厤浠诲姟鍙� + shuttleProtocol.setTaskNo(wrkMast.getWrkNo().shortValue()); + //鍒嗛厤婧愬簱浣� + shuttleProtocol.setSourceLocNo(liftSiteLocNo); //鐩爣搴撲綅 assignCommand.setLocNo(wrkMast.getSourceLocNo()); assignCommand.setCommands(commands); wrkMast.setWrkSts(26L);//灏忚溅鎼繍涓� + + if (wrkMastMapper.updateById(wrkMast) > 0) { + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + } } - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } } } } @@ -1360,11 +1404,6 @@ continue; } - //缁欐彁鍗囨満鍒嗛厤浠诲姟 - liftProtocol.setLiftLock(true);//閿佸畾鎻愬崌鏈� - liftProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());//璁剧疆浠诲姟鍙� - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓� - //鍛戒护list ArrayList<LiftCommand> commands = new ArrayList<>(); @@ -1382,14 +1421,13 @@ //宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞� int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo); - //鎻愬崌鏈哄綋鍓嶆ゼ灞� - int liftLev = liftProtocol.getLev().intValue(); - if (liftLev == 0) {//鎻愬崌鏈哄綋鍓嶆ゼ灞備负0锛屾彁鍗囨満澶卞幓浣嶇疆淇℃伅锛岃鎻愬崌鏈哄墠寰�涓�妤� - LiftCommand command = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), LiftLevType.ONE.lev); - commands.add(command);//灏嗗懡浠ゆ坊鍔犺繘list + Integer levTmp = wrkMastLocNoLey; + if (wrkMastLocNoLey >= 2) { + levTmp += 1; } + Integer distStaNo = Utils.levToOutInStaNo(levTmp); - if (liftLev != LiftLevType.TWO.realLev) { + if (liftProtocol.getPositionArrivalFeedback().intValue() != LiftLevType.TWO.realLev.intValue()) { //鎻愬崌鏈轰笉鍦ㄨ緭閫佺嚎妤煎眰锛岃幏鍙栧埌杈撻�佺嚎灞傜殑鎻愬崌鏈哄懡浠� LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), LiftLevType.TWO.lev); commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list @@ -1400,12 +1438,8 @@ command2.setOperaStaNo((short) 102);//鎿嶄綔102绔� command2.setRotationDire(1);//缁欒緭閫佺嚎涓嬪彂閾炬潯杞姩淇″彿锛屾杞� command2.setDevpId(devpId); + command2.setStaNo(distStaNo.shortValue());//璁剧疆鐩爣绔� commands.add(command2);//灏嗗懡浠ゆ坊鍔犺繘list - - Integer levTmp = wrkMastLocNoLey; - if (wrkMastLocNoLey >= 2) { - levTmp += 1; - } //鎻愬崌鏈哄墠寰�鐩爣妤煎眰(宸ヤ綔妗g洰鏍囨ゼ灞�) LiftCommand command3 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), levTmp); @@ -1414,12 +1448,15 @@ //鎻愬崌鏈哄埌杈炬寚瀹氭ゼ灞傦紝杈撻�佺嚎灏嗚揣鐗╃Щ鍑哄幓(姝h浆) //杈撻�佺嚎灏嗚揣鐗╃Щ鍑哄幓 LiftCommand command4 = liftThread.getLiftTurnCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), 1); - Integer distStaNo = Utils.levToOutInStaNo(levTmp); command4.setOperaStaNo(distStaNo.shortValue());//鎿嶄綔鐩爣妤煎眰绔欑偣 command4.setRotationDire(1);//缁欒緭閫佺嚎涓嬪彂閾炬潯杞姩淇″彿锛屾杞� command4.setDevpId(devpId); command4.setStaNo(distStaNo.shortValue());//璁剧疆鐩爣绔� commands.add(command4);//灏嗗懡浠ゆ坊鍔犺繘list + + //缁欐彁鍗囨満鍒嗛厤浠诲姟 + liftProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());//璁剧疆浠诲姟鍙� + liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓� wrkMast.setWrkSts(3L);//3.鎻愬崌鏈烘惉杩愪腑 } else if (wrkMast.getWrkSts() == 6) {//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑 @@ -1442,7 +1479,7 @@ } //宸ヤ綔妗g洰鏍囧簱浣嶅彿 - String wrkMastLocNo = wrkMast.getIoType() == 101 ? wrkMast.getSourceLocNo() : wrkMast.getLocNo(); + String wrkMastLocNo = wrkMast.getLocNo(); //宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞� int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo); if (wrkMastLocNoLey >= 2) { @@ -1452,6 +1489,10 @@ //鎻愬崌鏈哄墠寰�鐩爣妤煎眰(宸ヤ綔妗g洰鏍囨ゼ灞�) LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey); commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list + + //缁欐彁鍗囨満鍒嗛厤浠诲姟 + liftProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());//璁剧疆浠诲姟鍙� + liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓� wrkMast.setWrkSts(7L);//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑 } else if(wrkMast.getWrkSts() == 23) {//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑 @@ -1475,7 +1516,7 @@ } //宸ヤ綔妗g洰鏍囧簱浣嶅彿 - String wrkMastLocNo = wrkMast.getIoType() == 101 ? wrkMast.getSourceLocNo() : wrkMast.getLocNo(); + String wrkMastLocNo = wrkMast.getSourceLocNo(); //宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞� int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo); if (wrkMastLocNoLey >= 2) { @@ -1486,6 +1527,10 @@ LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey); commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list + //缁欐彁鍗囨満鍒嗛厤浠诲姟 + liftProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());//璁剧疆浠诲姟鍙� + liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓� + wrkMast.setWrkSts(24L);//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑 } else if (wrkMast.getWrkSts() == 27) {//27.灏忚溅鍑哄簱鎼繍瀹屾垚 //宸ヤ綔妗f簮搴撲綅鍙� @@ -1495,14 +1540,10 @@ //鎻愬崌鏈哄綋鍓嶆ゼ灞� int liftLev = liftProtocol.getLev().intValue(); - if (liftLev == 0) {//鎻愬崌鏈哄綋鍓嶆ゼ灞備负0锛屾彁鍗囨満澶卞幓浣嶇疆淇℃伅锛岃鎻愬崌鏈哄墠寰�涓�妤� - LiftCommand command = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), LiftLevType.ONE.lev); - commands.add(command);//灏嗗懡浠ゆ坊鍔犺繘list - } //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀埌浣� - StaProtocol staProtocol = devpThread.getStation().get(Utils.levToOutInStaNo(wrkMastLocNoLey));//璧峰绔欑偣 - if (liftLev != wrkMastLocNoLey && wrkMastLocNoLey != 1 || !staProtocol.isLiftArrival()) { + StaProtocol staProtocol = devpThread.getStation().get(Utils.levToOutInStaNo(wrkMastLocNoLey >= 2 ? wrkMastLocNoLey + 1 : wrkMastLocNoLey));//璧峰绔欑偣 + if (liftLev != wrkMastLocNoLey && !staProtocol.isLiftArrival()) { //鎻愬崌鏈轰笉鍦ㄥ伐浣滄。婧愬簱浣嶆ゼ灞傦紝璋冨害鎻愬崌鏈� LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey); commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list @@ -1536,6 +1577,10 @@ command5.setRotationDire(0);//閾炬潯杞姩鍋滄 commands.add(command5); + //缁欐彁鍗囨満鍒嗛厤浠诲姟 + liftProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());//璁剧疆浠诲姟鍙� + liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓� + wrkMast.setWrkSts(28L);//28.鎻愬崌鏈烘惉杩愪腑 } -- Gitblit v1.9.1