From a71d0a6a0d5e31f0e93feaf0444d93bc603fdd90 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期四, 12 十月 2023 13:02:33 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 176 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 116 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 15852c4..309f246 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -698,38 +698,6 @@ continue; } } - - - - - // 鏍规嵁杈撻�佺嚎plc閬嶅巻 - for (DevpSlave devp : slaveProperties.getDevp()) { - // 閬嶅巻鍏ュ簱绔� - for (DevpSlave.StaRack staRack : devp.getRackInStn()) { - // 鑾峰彇鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(staRack.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - Short workNo = staProtocol.getWorkNo(); - BasDevp basDevp = basDevpService.selectById(staProtocol.getSiteId()); - if (basDevp == null) { - continue;//绔欑偣淇℃伅涓嶅瓨鍦� - } - - // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢锛岃嚜鍔ㄣ�佹湁鐗┿�佸洓鍚戠┛姊溅鍙彇淇″彿 - if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isShuttleTakeEnable())) { - continue; - } - - - - } - } - } // /** @@ -1176,6 +1144,12 @@ //鑾峰彇鎻愬崌鏈哄懡浠� NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); + if (wrkMast.getIoType() == 53) { + //鎷f枡鍐嶅洖搴擄紝閲嶆柊鍒嗛厤璁惧宸ヤ綔鍙� + Random random = new Random(); + int deviceWrk = Math.abs((liftCommand.getTaskNo().intValue() + random.nextInt(9999)));//鑾峰彇璁惧宸ヤ綔鍙� + liftCommand.setTaskNo((short) deviceWrk); + } ArrayList<NyLiftCommand> commands = new ArrayList<>(); commands.add(liftCommand); @@ -1216,10 +1190,14 @@ return false; } - //璋冨害灏忚溅閬胯 - boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread); - if (!result) { - return false; + NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { + //灏忚溅杩樺湪杈撻�佺珯鐐� + //璋冨害灏忚溅閬胯 + boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread); + if (!result) { + return false; + } } //鑾峰彇鍑哄簱绔欑偣(鐩爣绔�) @@ -1403,7 +1381,7 @@ continue; } - boolean step4 = this.locToLocExecuteStep4(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鍑哄簱鍙� + boolean step4 = this.locToLocExecuteStep4(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鐩爣搴撲綅 if (!step4) { continue; } @@ -2027,6 +2005,7 @@ if (wrkMast.getStaNo() != 303 && wrkMast.getStaNo() != 317) { //瑕嗙洊宸ヤ綔妗g洰鏍囩珯 wrkMast.setStaNo(targetSta.intValue()); + wrkMast.setShuttleNo(null);//閲婃斁灏忚溅 if (wrkMastMapper.updateById(wrkMast) > 0) { //鍚�300绔欏啓鍏ョ洰鏍囩珯 staProtocol = staProtocol.clone(); @@ -2047,30 +2026,82 @@ StaProtocol staProtocol317 = devpThread.getStation().get(317); if (staProtocol303.isAutoing() && staProtocol303.isLoading() && staProtocol303.getWorkNo() != 0) { //璋冨害鏈烘鑷� -// //鏌ヨ鏄惁鏈夊伐浣滄。 -// WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol303.getWorkNo().intValue()); -// if (wrkMast == null) { -// continue; -// } -// WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo()); -// if (wrkDetl == null) { -// continue; -// } -// RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "303"); - RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), -1, "303"); + //鏌ヨ鏄惁鏈夊伐浣滄。 + WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol303.getWorkNo().intValue()); + if (wrkMast == null) { + continue; + } + List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); + if (wrkDetls.isEmpty()) { + continue; + } + + if (wrkMast.getInvWh() == null) { + wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔� + if (wrkMastMapper.updateById(wrkMast) > 0) { + RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetls.size(), "303"); + } + } }else if (staProtocol317.isAutoing() && staProtocol317.isLoading() && staProtocol317.getWorkNo() != 0) { //璋冨害鏈烘鑷� -// //鏌ヨ鏄惁鏈夊伐浣滄。 -// WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol317.getWorkNo().intValue()); -// if (wrkMast == null) { -// continue; -// } -// WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo()); -// if (wrkDetl == null) { -// continue; -// } -// RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "317"); - RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), -1, "317"); + //鏌ヨ鏄惁鏈夊伐浣滄。 + WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol317.getWorkNo().intValue()); + if (wrkMast == null) { + continue; + } + List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); + if (wrkDetls.isEmpty()) { + continue; + } + if (wrkMast.getInvWh() == null) { + wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔� + if (wrkMastMapper.updateById(wrkMast) > 0) { + RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetls.size(), "317"); + } + } + } + } + } + + // 300绔欐嫞鏂� + public void pick300() { + //妫�娴�300绔欐槸鍚﹁嚜鍔ㄣ�佹湁鐗┿�佸伐浣滃彿 + for (DevpSlave devp : slaveProperties.getDevp()) { + // 鑾峰彇鍏ュ簱绔欎俊鎭� + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(300); + if (staProtocol == null) { + continue; + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0) { + //鏌ヨ鏄惁鏈夊伐浣滄。 + WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol.getWorkNo().intValue()); + if (wrkMast == null) { + continue; + } + + if (wrkMast.getWrkSts() != 25) {//25.鎻愬崌鏈烘惉杩愬畬鎴� + continue; + } + + if (wrkMast.getMk() == null) { + Integer sourceStaNo = wrkMast.getSourceStaNo();//婧愮珯 + Integer staNo = wrkMast.getStaNo();//鐩爣绔� + //瑕嗙洊宸ヤ綔妗g洰鏍囩珯 + wrkMast.setStaNo(sourceStaNo); + wrkMast.setSourceStaNo(staNo); + if (wrkMastMapper.updateById(wrkMast) > 0) { + //鍚�300绔欏啓鍏ョ洰鏍囩珯 + staProtocol = staProtocol.clone(); + staProtocol.setStaNo(wrkMast.getStaNo().shortValue());//绉诲姩鍒扮洰鏍囩珯 + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + try { + Thread.sleep(500); + } catch (Exception e) { + e.printStackTrace(); + } + } + } } } } @@ -2626,7 +2657,8 @@ NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), sourceLiftSta.getStaNo(), wrkMast.getWrkNo()); Random random = new Random(); - liftCommand.setTaskNo((short) Math.abs((liftCommand.getTaskNo().intValue() + random.nextInt(9999))));//鏇存崲闅忔満浠诲姟鍙� + int deviceWrk = Math.abs((liftCommand.getTaskNo().intValue() + random.nextInt(9999)));//鑾峰彇璁惧宸ヤ綔鍙� + liftCommand.setTaskNo((short) deviceWrk);//鏇存崲闅忔満浠诲姟鍙� ArrayList<NyLiftCommand> commands = new ArrayList<>(); commands.add(liftCommand); @@ -2948,6 +2980,30 @@ // NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY()); // liftNode.setZ(basLift.getPoint$().getZ()); + //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚 + if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) { + if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { + //閲婃斁灏忚溅浠ょ墝 + shuttleProtocol.setToken(0); + } + wrkMast.setWrkSts(111L);//111.灏忚溅绉诲姩瀹屾垚 + wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� + wrkMast.setModiTime(now); + wrkMastMapper.updateById(wrkMast); + + if (wrkMast.getWrkSts() == 111) { + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) { + log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + // 鍒犻櫎宸ヤ綔涓绘。 + if (!wrkMastService.deleteById(wrkMast)) { + log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + } + return false; + } + //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠� NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id); if (result == null) { -- Gitblit v1.9.1