From de27c6f2d428632ed21a015dc6bfb73cc07f31a3 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期四, 30 三月 2023 10:43:55 +0800 Subject: [PATCH] 四向穿梭车入库模式完善 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 101 ++++++++++++++++++++++++++++---------------------- 1 files changed, 57 insertions(+), 44 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 e3d8031..8bb3c30 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -636,15 +636,28 @@ if (true || staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) { WrkMast wrkMast = wrkMastMapper.selectRackInStep48(workNo, staProtocol.getSiteId()); if (wrkMast != null) { - if (wrkMast.getWrkSts() == 4) { - //瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅 - HashMap<String, Object> searchIdleShuttle = this.searchIdleShuttle(wrkMast); - ShuttleThread shuttleThread = (ShuttleThread) searchIdleShuttle.get("result"); + if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 8) { + ShuttleThread shuttleThread = null; + HashMap<String, Object> searchIdleShuttle = null; + if (wrkMast.getWrkSts() == 4) { + //瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅 + searchIdleShuttle = this.searchIdleShuttle(wrkMast); + shuttleThread = (ShuttleThread) searchIdleShuttle.get("result"); + }else { + //鐘舵��8锛屽洓鍚戠┛姊溅宸插湪鎻愬崌鏈哄彛锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣� + Integer shuttleNo = wrkMast.getShuttleNo();//鍥涘悜绌挎杞﹀彿 + shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); + } + if (shuttleThread == null) { continue; } ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + if (!shuttleProtocol.isIdle()) { + continue; + } + wrkMast.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿 //鍒嗛厤浠诲姟鍙� @@ -664,52 +677,30 @@ LocMast currentLocMast = locMastService.queryByQrCode(currentCode.toString()); assignCommand.setSourceLocNo(currentLocMast.getLocNo()); - if (Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) { + if (wrkMast.getWrkSts() == 8 || Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) { //鍚屼竴灞� //鍒嗛厤鐩爣搴撲綅 shuttleProtocol.setLocNo(wrkMast.getLocNo()); //鐩爣搴撲綅 - assignCommand.setDistLocNo(wrkMast.getLocNo()); + assignCommand.setLocNo(wrkMast.getLocNo()); wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓� }else { //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿 - //鍒嗛厤鐩爣搴撲綅 - shuttleProtocol.setLocNo("1800201"); + + //灏忚溅褰撳墠灞傞珮 + String currentLocNo = currentLocMast.getLocNo(); + Integer currentLev = Integer.parseInt(currentLocNo.substring(currentLocNo.length() - 2, currentLocNo.length())); + + //鑾峰彇鎻愬崌鏈� + LiftSlave liftSlave = slaveProperties.getLift().get(0); + //鎻愬崌鏈哄簱浣嶅彿 + String liftLocNo = liftSlave.getLiftLocNo(currentLev); + shuttleProtocol.setLocNo(liftLocNo); //鐩爣搴撲綅 - assignCommand.setDistLocNo("1800201"); + assignCommand.setLocNo(liftLocNo); wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵�� } - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - }else { - //鐘舵��8锛屽洓鍚戠┛姊溅宸插湪鎻愬崌鏈哄彛锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣� - Integer shuttleNo = wrkMast.getShuttleNo();//鍥涘悜绌挎杞﹀彿 - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); - if (shuttleThread == null) { - continue; - } - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - - //鍒嗛厤鐩爣搴撲綅 - shuttleProtocol.setLocNo(wrkMast.getLocNo()); - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - //鍥涘悜绌挎杞﹀彿 - assignCommand.setShuttleNo(shuttleNo.shortValue()); - //浠诲姟鍙� - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - //鍏ュ嚭搴撴ā寮� - assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue()); - //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - Short currentCode = shuttleProtocol.getCurrentCode(); - LocMast currentLocMast = locMastService.queryByQrCode(currentCode.toString()); - assignCommand.setSourceLocNo(currentLocMast.getLocNo()); - //鐩爣搴撲綅 - assignCommand.setDistLocNo(wrkMast.getLocNo()); - wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓� if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); @@ -778,10 +769,23 @@ //妤煎眰鐩稿悓鎯呭喌 //鎵捐窛绂诲嚭搴撶偣鏈�杩戠殑杞� + if (!(recentShuttleProtocol.isIdle() && shuttleProtocol.isIdle())) { + //鍙鏈変竴杈嗚溅涓嶆槸绌洪棽鍒欎笉杩涜璋冨害 + map.put("sameLay", false);//涓嶅悓灞� + map.put("result", null); + return map; + } + + //鑾峰彇鎻愬崌鏈� + LiftSlave liftSlave = slaveProperties.getLift().get(0); + //鎻愬崌鏈哄簱浣嶅彿 + String recentLiftLocNo = liftSlave.getLiftLocNo(recentShuttleLocNoLayInt); + String shuttleLiftLocNo = liftSlave.getLiftLocNo(shuttleLocNoLayInt); + //褰撳墠鏈�杩戝洓鍚戠┛姊溅鍒版彁鍗囨満璺緞 - List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentShuttleLocNo, "1800201", ShuttleTaskModeType.PAK_IN.id); + List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentShuttleLocNo, recentLiftLocNo, ShuttleTaskModeType.PAK_IN.id); //褰撳墠妤煎眰鍥涘悜绌挎杞﹀埌鎻愬崌鏈鸿矾寰� - List<NavigateNode> shuttlePath = NavigateUtils.calc(shuttleLocNo, "1800201", ShuttleTaskModeType.PAK_IN.id); + List<NavigateNode> shuttlePath = NavigateUtils.calc(shuttleLocNo, shuttleLiftLocNo, ShuttleTaskModeType.PAK_IN.id); //鍒ゆ柇鍝竴涓矾寰勬渶鐭� if (shuttlePath.size() < recentShuttlePath.size()) { //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠┛姊溅 @@ -811,9 +815,18 @@ //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭 if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id && shuttleProtocol.getTaskNo() != 0) { //灏嗕换鍔℃。鏍囪涓哄畬鎴� - WrkMast wrkMast = wrkMastMapper.selectByWorkNo9(shuttleProtocol.getTaskNo().intValue()); + WrkMast wrkMast = wrkMastMapper.selectByWorkNo59(shuttleProtocol.getTaskNo().intValue()); if (wrkMast != null) { - wrkMast.setWrkSts(14L); + switch (wrkMast.getWrkSts().intValue()) { + case 9: + wrkMast.setWrkSts(14L); + break; + case 5: + wrkMast.setWrkSts(6L); + break; + default: + } + if (wrkMastMapper.updateById(wrkMast) > 0) { //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); @@ -825,7 +838,7 @@ shuttleProtocol.setLocNo(null); //鏍囪澶嶄綅 shuttleProtocol.setPakMk(true); - News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚爢鍨涙満鍙�={}", shuttleProtocol.getShuttleNo()); + News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚爢鍨涙満鍙�={}", shuttleProtocol.getShuttleNo()); } else { News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); } -- Gitblit v1.9.1