From ff9ae5d1f76bb0dfde67fc2bc1141ce61f704692 Mon Sep 17 00:00:00 2001 From: zhangc <zc@123> Date: 星期二, 15 四月 2025 12:45:07 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java | 99 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 69 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java index 00e2be6..863ba5a 100644 --- a/src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java @@ -24,6 +24,8 @@ import com.zy.core.model.command.ShuttleCommand; import com.zy.core.model.protocol.LiftProtocol; import com.zy.core.model.protocol.ShuttleProtocol; +import com.zy.core.model.protocol.StaProtocol; +import com.zy.core.thread.DevpThread; import com.zy.core.thread.LiftThread; import com.zy.core.thread.ShuttleThread; import lombok.extern.slf4j.Slf4j; @@ -117,7 +119,7 @@ private boolean shuttleMoveExecuteTransportLiftStepCallShuttle(WrkMast wrkMast) { Date now = new Date(); //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣 - if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) { + if (wrkMast != null && wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); if (shuttleThread == null) { @@ -127,7 +129,22 @@ if (shuttleProtocol == null) { return false; } - + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + if (devpThread == null) { + return false; + } + StaProtocol staProtocol = devpThread.getStation().get(Utils.getLev(wrkMast.getSourceLocNo()) == 1 ? 1015 : 1026); + if (!staProtocol.isLoading() || !staProtocol.isAutoing()) { + log.info("{}浠诲姟锛寋}鍙疯緭閫佺嚎鏃犵墿", wrkMast.getWrkNo(), wrkMast.getSourceStaNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鏃犵墿", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); + return false; + } + //TODO +// if (!staProtocol.getFinishWorkNo().equals(wrkMast.getWrkNo())) { +// log.info( "{}浠诲姟锛寋}鍙疯緭閫佺嚎鐨勫伐浣滃彿鍜屽伐浣滄。涓嶅尮閰�", wrkMast.getWrkNo(), wrkMast.getSourceStaNo()); +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鐨勫伐浣滃彿鍜屽伐浣滄。涓嶅尮閰�", wrkMast.getWrkNo(), wrkMast.getSourceStaNo()); +// return false; +// } //灏忚溅澶勪簬绌洪棽鐘舵�� if (!shuttleThread.isIdle()) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); @@ -169,7 +186,7 @@ Date now = new Date(); //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑 - if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_2.sts) { + if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_1.sts) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); if (shuttleThread == null) { @@ -185,7 +202,9 @@ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } - + if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { + return false; + } //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満 LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo()); @@ -212,15 +231,14 @@ List<ShuttleCommand> commands = new ArrayList<>(); Integer mapType = NavigationMapType.NORMAL.id; - if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) { - //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠� - List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread); - if (moveCommands == null) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//璺緞瑙i攣澶辫触 - } - commands.addAll(moveCommands); + + //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠� + List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread); + if (moveCommands == null) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + return false;//璺緞瑙i攣澶辫触 } + commands.addAll(moveCommands); List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true); if (liftCommand == null) { @@ -287,10 +305,12 @@ } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満) - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(),wrkMast.getWrkNo(),wrkMast.getMainWrkNo()); if (liftWrkMast != null) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� + if (liftWrkMast != null && !wrkMast.getMainWrkNo().equals(liftWrkMast.getWrkNo())) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� + } } wrkMast.setModiTime(now); @@ -313,7 +333,7 @@ } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(),wrkMast.getWrkNo(),wrkMast.getMainWrkNo()); if (liftWrkMast != null) { if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); @@ -332,11 +352,6 @@ return false;//鎻愬崌鏈哄唴鏃犲皬杞� } - //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩� - if (!liftProtocol.getHasTray()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈哄唴鏃犲皬杞� - } //鍒ゆ柇鎻愬崌鏈烘ゼ灞� if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) { @@ -424,7 +439,7 @@ } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(),wrkMast.getWrkNo(),wrkMast.getMainWrkNo()); if (liftWrkMast != null) { if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); @@ -449,17 +464,21 @@ return false;//鎻愬崌鏈哄唴鏃犲皬杞� } - //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩� - if (!liftProtocol.getHasTray()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈哄唴鏃犲皬杞� - } //鍒ゆ柇鎻愬崌鏈烘ゼ灞� if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) { //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞� News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満涓庡皬杞︿笉鍦ㄥ悓涓�灞傦紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰 + } + + //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 + WrkMast w = wrkMastService.selectLiftWrkMast(1); + if (w != null) { + if (!w.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鍒殑缁戝畾浠诲姟ru锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), 1); + return false; + } } ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); @@ -479,6 +498,7 @@ wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_7.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑 wrkMast.setModiTime(now); + wrkMast.setLiftNo(1); if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); @@ -521,7 +541,7 @@ } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(),wrkMast.getWrkNo(),wrkMast.getMainWrkNo()); if (liftWrkMast != null) { if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); @@ -612,7 +632,7 @@ } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(1,wrkMast.getWrkNo(),wrkMast.getMainWrkNo()); if (liftWrkMast != null) { if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); @@ -793,7 +813,7 @@ Date now = new Date(); //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓� - if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_1.sts) { + if (wrkMast != null && wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_1.sts) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� @@ -811,7 +831,26 @@ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + if (devpThread == null) { + return false; + } + StaProtocol staProtocol = devpThread.getStation().get(Utils.getLev(wrkMast.getSourceLocNo()) == 1 ? 1015 : 1026); + if (!staProtocol.isLoading()) { + log.error("{}浠诲姟锛寋}鍙疯緭閫佺嚎鏃犵墿", wrkMast.getWrkNo(), wrkMast.getSourceStaNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鏃犵墿", wrkMast.getWrkNo(), wrkMast.getSourceStaNo()); + return false; + } + //TODO +// if (!staProtocol.getFinishWorkNo().equals(wrkMast.getWrkNo())) { +// log.error("{}浠诲姟锛寋}鍙疯緭閫佺嚎鐨勫伐浣滃彿鍜屽伐浣滄。涓嶅尮閰�", wrkMast.getWrkNo(), wrkMast.getSourceStaNo()); +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鐨勫伐浣滃彿鍜屽伐浣滄。涓嶅尮閰�", wrkMast.getWrkNo(), wrkMast.getSourceStaNo()); +// return false; +// } + if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { + return false; + } ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� -- Gitblit v1.9.1