From fcb71b8fc63f74cd00d3faa76c73f4c5566ee352 Mon Sep 17 00:00:00 2001 From: zc <zc@123> Date: 星期三, 07 五月 2025 23:23:09 +0800 Subject: [PATCH] 解决提升机在本层,而没有锁提升机的问题 --- src/main/java/com/zy/asrs/service/impl/NoLiftOutServiceImpl.java | 271 +++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 186 insertions(+), 85 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/NoLiftOutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/NoLiftOutServiceImpl.java index ee7b7de..00a8496 100644 --- a/src/main/java/com/zy/asrs/service/impl/NoLiftOutServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/NoLiftOutServiceImpl.java @@ -23,6 +23,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; @@ -32,6 +34,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; @Slf4j @Service("noLiftOutService") @@ -58,14 +61,17 @@ @Autowired private LiftAction liftAction; + @Autowired + private MainServiceImpl mainService; /** * 浠庢病鏈夋彁鍗囨満渚у嚭搴擄紝鏈変袱绉嶆儏鍐碉紝涓�绉�1锛�5搴撳埌鍚屽眰锛屼竴绉嶉潪1锛�5搴撳埌1锛�5锛屽垯闇�瑕佹彁鍗囨満 + * * @param wrkMast */ - public void shuttleMoveExecute(WrkMast wrkMast) { + public void shuttleMoveExecute(WrkMast wrkMast, Integer staNo, Integer lev) { //鍒ゆ柇鐩爣搴撲綅鏄惁鍦�1灞傛垨5灞� - if (Utils.getLev(wrkMast.getLocNo()) == 1 || Utils.getLev(wrkMast.getLocNo()) == 5) { + if ((lev == 1 & staNo == 1013) || (lev == 5 && staNo == 1024)) { boolean stepMoveSta = this.shuttleMoveExecuteTransportLiftStepCallShuttle2(wrkMast);//鍛煎彨灏忚溅鑷冲彇璐х偣 if (!stepMoveSta) { return; @@ -136,9 +142,27 @@ return false; } + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + if (devpThread == null) { + return false; + } + + WrkMast wrkMast1 = wrkMastService.selectByWorkNo(wrkMast.getMainWrkNo()); + if (wrkMast1 != null) { + if (!mainService.isOutEnable(devpThread, wrkMast1.getStaNo())) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎涓嶅彲鍑�111", wrkMast.getWrkNo(), wrkMast1.getStaNo()); + return false; + } + StaProtocol staProtocol = devpThread.getStation().get(wrkMast1.getStaNo() + 2); + if (staProtocol.isLoading()) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鏈夌墿111", wrkMast.getWrkNo(), wrkMast1.getStaNo() + 1); + return false; + } + } + if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { //灏忚溅鍦ㄥ彇璐х偣 - wrkMast.setWrkSts(WrkStsType.MOVE_OUT_NO_LIFT_2.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣 + wrkMast.setWrkSts(WrkStsType.MOVE_OUT_NO_LIFT_1.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣 wrkMast.setModiTime(now); wrkMast.setSystemMsg("");//娓呯┖娑堟伅 wrkMastService.updateById(wrkMast); @@ -195,13 +219,13 @@ //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満 LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo()); if (liftThread == null) { - News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}鍙峰皬杞︼紝{}灏忚溅搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo()); return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈� } LiftProtocol liftProtocol = liftThread.getStatus(); if (liftProtocol == null) { - News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo()); return false; } @@ -260,82 +284,62 @@ //鑾峰彇鍥涘悜绌挎杞︾嚎绋� ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); if (shuttleThread == null) { - News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); return false; } ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { - News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); return false; } LiftThread liftThread = null; LiftProtocol liftProtocol = null; - if (wrkMast.getLiftNo() == null) { - //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満 - liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo()); - if (liftThread == null) { - News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo()); - return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈� - } - liftProtocol = liftThread.getStatus(); - if (liftProtocol == null) { - News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo()); - return false; - } - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満) - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo()); - if (liftWrkMast != null) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } + //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満 + liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo()); + if (liftThread == null) { + News.taskInfo(wrkMast.getWrkNo(), "{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂叉彁鍗囨満", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo()); + return false;//娌℃湁鍙敤涓旂┖闂茬殑鎻愬崌鏈� + } - wrkMast.setModiTime(now); - wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈� - wrkMast.setSystemMsg("");//娓呯┖娑堟伅 - wrkMastService.updateById(wrkMast); + liftProtocol = liftThread.getStatus(); + //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� + if (liftProtocol.getHasCar()) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); return false; - } else { - liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); - if (liftThread == null) { - News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo()); - return false; - } - - liftProtocol = liftThread.getStatus(); - if (liftProtocol == null) { - News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo()); - return false; - } } - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); - if (liftWrkMast != null) { - if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } + //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩� + if (liftProtocol.getHasTray()) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + return false; } + if (!liftThread.isIdle()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); return false; } //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� if (liftProtocol.getHasCar()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); return false;//鎻愬崌鏈哄唴鏃犲皬杞� } //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩� if (liftProtocol.getHasTray()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); return false;//鎻愬崌鏈哄唴鏃犲皬杞� + } + //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(wrkMast.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); + if (liftWrkMast != null) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } //鍒ゆ柇鎻愬崌鏈烘ゼ灞� @@ -343,6 +347,7 @@ //鎻愬崌鏈哄湪灏忚溅妤煎眰 wrkMast.setWrkSts(WrkStsType.MOVE_OUT_NO_LIFT_5.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� wrkMast.setModiTime(now); + wrkMast.setLiftNo(1); wrkMastService.updateById(wrkMast); return false; } @@ -361,9 +366,12 @@ //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); assignCommand.setCommands(commands); - assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue()); + assignCommand.setLiftNo((short) 1); assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue()); + + + wrkMast.setWrkSts(WrkStsType.MOVE_OUT_NO_LIFT_4.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 鎻愬崌鏈鸿嚦灏忚溅灞� wrkMast.setLiftNo(liftProtocol.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈� @@ -393,56 +401,44 @@ //鑾峰彇鍥涘悜绌挎杞︾嚎绋� ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); if (shuttleThread == null) { - News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅绾跨▼涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getShuttleNo()); return false; } ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { - News.info("{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙峰皬杞︼紝灏忚溅瀵硅薄涓嶅瓨鍦紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getShuttleNo()); return false; } - if (wrkMast.getLiftNo() == null) { - News.info("{}浠诲姟锛屾湭缁戝畾鎻愬崌鏈猴紝绂佹娲惧彂", wrkMast.getWrkNo()); - return false; - } - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); - if (liftThread == null) { - News.info("{}鍙锋彁鍗囨満涓嶅瓨鍦�", wrkMast.getLiftNo()); - return false; - } - + LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo()); LiftProtocol liftProtocol = liftThread.getStatus(); if (liftProtocol == null) { - News.info("{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}鍙锋彁鍗囨満瀵硅薄涓嶅瓨鍦�", 1); return false; } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(wrkMast.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); if (liftWrkMast != null) { - if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), 1); + return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } if (!liftThread.isIdle()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), 1); return false; } //灏忚溅澶勪簬绌洪棽鐘舵�� if (!shuttleThread.isIdle()) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� if (liftProtocol.getHasCar()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮湁灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); return false;//鎻愬崌鏈哄唴鏃犲皬杞� } @@ -459,6 +455,13 @@ return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰 } + //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 + WrkMast w = wrkMastService.selectLiftWrkMastAndWrkNo(1, wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); + if (w != null) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鍒殑缁戝畾浠诲姟out锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), 1); + return false; + } + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟 @@ -466,7 +469,7 @@ assignCommand.setAuto(true);//鑷姩妯″紡 //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护 - List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.DFX.id, assignCommand, shuttleThread); if (commands == null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; @@ -476,6 +479,7 @@ wrkMast.setWrkSts(WrkStsType.MOVE_OUT_NO_LIFT_6.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑 wrkMast.setModiTime(now); + wrkMast.setLiftNo(1); if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); @@ -516,12 +520,10 @@ } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(wrkMast.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); if (liftWrkMast != null) { - if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } + News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } if (!liftThread.isIdle()) { @@ -607,12 +609,10 @@ } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(wrkMast.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); if (liftWrkMast != null) { - if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } + News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); @@ -648,6 +648,25 @@ if (!liftProtocol.getHasTray()) { News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); return false;//鎻愬崌鏈哄唴鏃犲皬杞� + } + + if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) { + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� + assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣 + assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� + assignCommand.setAuto(true);//鑷姩妯″紡 + assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣� + assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅 + + //鏇存柊灏忚溅鍧愭爣 + ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo()); + ArrayList<ShuttleCommand> commands = new ArrayList<>(); + commands.add(command); + + assignCommand.setCommands(commands); + shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); + return false; } ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); @@ -703,10 +722,47 @@ return false; } +// if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) { +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� +// assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣 +// assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� +// assignCommand.setAuto(true);//鑷姩妯″紡 +// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣� +// assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅 +// +// //鏇存柊灏忚溅鍧愭爣 +// ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo()); +// ArrayList<ShuttleCommand> commands = new ArrayList<>(); +// commands.add(command); +// +// assignCommand.setCommands(commands); +// shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); +// return false; +// } + + //灏忚溅澶勪簬绌洪棽鐘舵�� if (!shuttleThread.isIdle()) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; + } + + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + Map<Integer, StaProtocol> station = devpThread.getStation(); + StaProtocol staProtocol2 = null; + if (Utils.getLev(shuttleThread.getStatus().getCurrentLocNo()) == 1) { + staProtocol2 = station.get(1015); + if (staProtocol2.isLoading()) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鏈夌墿12432", wrkMast.getWrkNo(), 1015); + return false; + } + } else { + staProtocol2 = station.get(1026); + if (staProtocol2.isLoading()) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鏈夌墿12341", wrkMast.getWrkNo(), 1026); + return false; + } } ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); @@ -744,6 +800,14 @@ //涓嬪彂浠诲姟 shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); } + WrkMast wrkMast1 = wrkMastService.selectByMainWrkNo(wrkMast.getWrkNo()); + if (wrkMast1 != null) { + wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� + wrkMast.setModiTime(now); + if (!wrkMastService.updateById(wrkMast1)) { + News.taskInfo(wrkMast.getWrkNo(), "{}瑙i攣鎻愬崌鏈�", wrkMast1.getWrkNo()); + } + } } return true; } @@ -772,6 +836,22 @@ if (!shuttleThread.isIdle()) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; + } + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + if (devpThread == null) { + return false; + } + WrkMast wrkMast1 = wrkMastService.selectByWorkNo(wrkMast.getMainWrkNo()); + if (wrkMast1 != null) { + if (!mainService.isOutEnable(devpThread, wrkMast1.getStaNo())) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎涓嶅彲鍑�222", wrkMast.getWrkNo(), wrkMast1.getStaNo()); + return false; + } + StaProtocol staProtocol = devpThread.getStation().get(wrkMast1.getStaNo() + 2); + if (staProtocol.isLoading()) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鏈夌墿222", wrkMast.getWrkNo(), wrkMast1.getStaNo()); + return false; + } } if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { @@ -825,6 +905,27 @@ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + Map<Integer, StaProtocol> station = devpThread.getStation(); + StaProtocol staProtocol2 = null; + if (Utils.getLev(shuttleThread.getStatus().getCurrentLocNo()) == 1) { + staProtocol2 = station.get(1015); + if (staProtocol2.isLoading()) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鏈夌墿12432", wrkMast.getWrkNo(), 1015); + return false; + } + } else { + staProtocol2 = station.get(1026); + if (staProtocol2.isLoading()) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鏈夌墿12341", wrkMast.getWrkNo(), 1026); + return false; + } + } + + + if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { + return false; + } ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� -- Gitblit v1.9.1