From 7bb9d1f8453c3182650c2c7d181dd77c72687809 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期三, 02 八月 2023 14:23:40 +0800 Subject: [PATCH] 提升机、穿梭车独占令牌 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 78 ++++++++++++++++++++++++++++++++++++++- 1 files changed, 76 insertions(+), 2 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 731db7f..92adad4 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -721,6 +721,10 @@ if (!shuttleProtocol.isIdle()) { return false; } + //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 + if (shuttleProtocol.getToken() != 0) { + return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 + } //鍒ゆ柇灏忚溅鏄惁鍒拌揪杈撻�佺珯鐐瑰簱浣� if (!shuttleProtocol.getCurrentLocNo().equals(basDevp.getLocNo())) { @@ -746,6 +750,7 @@ wrkMast.setWrkSts(5L);//4.鎻愬崌鏈烘惉杩愬畬鎴� => 5.灏忚溅鎼繍涓� wrkMast.setModiTime(new Date()); + shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); @@ -793,6 +798,10 @@ if (!shuttleProtocol.isIdle()) { return false; } + //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 + if (shuttleProtocol.getToken() != 0) { + return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 + } //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getLiftNo()); @@ -824,6 +833,7 @@ wrkMast.setWrkSts(22L);//21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� wrkMast.setModiTime(new Date()); + shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); @@ -856,11 +866,17 @@ switch (wrkMast.getWrkSts().intValue()) { case 5://5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚 wrkMast.setWrkSts(9L); - //浠诲姟鍙锋竻闆� - shuttleProtocol.setTaskNo(0); + if (shuttleProtocol.getToken() == wrkMast.getWrkNo()) { + //閲婃斁灏忚溅浠ょ墝 + shuttleProtocol.setToken(0); + } break; case 22://22.灏忚溅鎼繍涓� ==> 23.灏忚溅鎼繍瀹屾垚 wrkMast.setWrkSts(23L); + if (shuttleProtocol.getToken() == wrkMast.getWrkNo()) { + //閲婃斁灏忚溅浠ょ墝 + shuttleProtocol.setToken(0); + } break; case 102://102.灏忚溅鍒版彁鍗囨満涓� ==> 103.灏忚溅鍒版彁鍗囨満瀹屾垚 wrkMast.setWrkSts(103L); @@ -870,6 +886,10 @@ break; case 108://108.灏忚溅绉诲姩涓� ==> 109.灏忚溅绉诲姩瀹屾垚 wrkMast.setWrkSts(109L); + if (shuttleProtocol.getToken() == wrkMast.getWrkNo()) { + //閲婃斁灏忚溅浠ょ墝 + shuttleProtocol.setToken(0); + } break; default: } @@ -961,6 +981,10 @@ if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { return false; } + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� + if (liftProtocol.getToken() != 0) { + return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� + } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); if (liftWrkMast != null) { @@ -991,6 +1015,7 @@ wrkMast.setWrkSts(3L);//2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� wrkMast.setModiTime(now); + liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); @@ -1023,6 +1048,10 @@ if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { return false; } + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� + if (liftProtocol.getToken() != 0) { + return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� + } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); if (liftWrkMast != null) { @@ -1053,6 +1082,7 @@ wrkMast.setWrkSts(24L);//23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� wrkMast.setModiTime(now); + liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); @@ -1088,11 +1118,19 @@ case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴� wrkMast.setWrkSts(4L); wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� + if (liftProtocol.getToken() == wrkMast.getWrkNo()) { + //閲婃斁鎻愬崌鏈轰护鐗� + liftProtocol.setToken(0); + } break; case 24://24.鎻愬崌鏈烘惉杩愪腑 ==> 25.鎻愬崌鏈烘惉杩愬畬鎴� wrkMast.setWrkSts(25L); if (wrkMast.getIoType() == 11) {//搴撲綅绉昏浆 wrkMast.setWrkSts(4L);//4.鎻愬崌鏈烘惉杩愬畬鎴� + } + if (liftProtocol.getToken() == wrkMast.getWrkNo()) { + //閲婃斁鎻愬崌鏈轰护鐗� + liftProtocol.setToken(0); } break; case 104://104.鎻愬崌鏈烘惉杩愪腑 ==> 105.鎻愬崌鏈烘惉杩愬畬鎴� @@ -1984,6 +2022,11 @@ return false; } + //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 + if (shuttleProtocol.getToken() != 0) { + return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 + } + if (Utils.getLev(wrkMast.getLocNo()) == shuttleProtocol.getPoint().getZ()) { //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛岄渶瑕侀�氳繃鎻愬崌鏈鸿皟搴� return true;//鐩存帴杩涘叆108.灏忚溅绉诲姩涓� @@ -2062,6 +2105,7 @@ wrkMast.setWrkSts(102L);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 101.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 102.灏忚溅鍒版彁鍗囨満涓� wrkMast.setLiftNo(basLift.getLiftNo());//鎻愬崌鏈哄彿(閿佸畾鎻愬崌鏈洪槻姝㈣鍏朵粬浠诲姟鎶㈠崰) wrkMast.setModiTime(now); + shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗� if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); @@ -2092,6 +2136,10 @@ } if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { return false; + } + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� + if (liftProtocol.getToken() != 0) { + return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� } //鑾峰彇鍥涘悜绌挎杞︾嚎绋� @@ -2133,6 +2181,7 @@ wrkMast.setWrkSts(104L);//鎻愬崌鏈烘惉杩愪腑 103.灏忚溅鍒版彁鍗囨満瀹屾垚 ==> 104.鎻愬崌鏈烘惉杩愪腑 wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤 wrkMast.setModiTime(now); + liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); @@ -2166,6 +2215,11 @@ return false; } + //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠浠诲姟 + if (liftProtocol.getToken() != wrkMast.getWrkNo()) { + return false; + } + //鑾峰彇鍥涘悜绌挎杞︾嚎绋� NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); if (shuttleThread == null) { @@ -2178,6 +2232,11 @@ //灏忚溅澶勪簬绌洪棽鐘舵�� if (!shuttleProtocol.isIdleNoCharge()) { + return false; + } + + //鍒ゆ柇灏忚溅浠ょ墝鏄惁涓哄綋鍓嶄换鍔� + if (shuttleProtocol.getToken() != wrkMast.getWrkNo()) { return false; } @@ -2233,6 +2292,15 @@ //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 107.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 108.灏忚溅绉诲姩涓� if (wrkMast.getWrkSts() == 107) { + LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); + if (liftThread == null) { + return false; + } + LiftProtocol liftProtocol = liftThread.getLiftProtocol(); + if (liftProtocol == null) { + return false; + } + //鑾峰彇鍥涘悜绌挎杞︾嚎绋� NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); if (shuttleThread == null) { @@ -2245,6 +2313,11 @@ //灏忚溅澶勪簬绌洪棽鐘舵�� if (!shuttleProtocol.isIdleNoCharge()) { + return false; + } + + //鍒ゆ柇灏忚溅浠ょ墝鏄惁涓哄綋鍓嶄换鍔� + if (shuttleProtocol.getToken() != wrkMast.getWrkNo()) { return false; } @@ -2283,6 +2356,7 @@ wrkMast.setWrkSts(108L);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 107.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 108.灏忚溅绉诲姩涓� wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� wrkMast.setModiTime(now); + liftProtocol.setToken(0);//閲婃斁鎻愬崌鏈轰护鐗� if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); -- Gitblit v1.9.1