From 03e68b2be24ea024eae645c47da1d4cb1773302a Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期五, 13 十月 2023 19:47:13 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 147 ++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 127 insertions(+), 20 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 e2ec5d0..5b6cae4 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -1190,16 +1190,27 @@ return false; } - //璋冨害灏忚溅閬胯 - boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread); - if (!result) { - return false; - } - //鑾峰彇鍑哄簱绔欑偣(鐩爣绔�) BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); if (basDevp == null) { return false;//鍑哄簱绔欑偣涓嶅瓨鍦� + } + + //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) + LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo())); + if (liftStaProtocol == null) { + return false;//鎵句笉鍒扮珯鐐� + } + Integer startSta = liftStaProtocol.getStaNo(); + + NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + if (shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { + //灏忚溅杩樺湪杈撻�佺珯鐐� + //璋冨害灏忚溅閬胯 + boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread); + if (!result) { + return false; + } } if (!basDevp.getOutEnable().equals("Y")) { @@ -1214,6 +1225,7 @@ if (liftProtocol == null) { return false; } + if (!liftProtocol.isIdle()) { return false; } @@ -1226,13 +1238,6 @@ if (liftWrkMast != null) { return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } - - //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(liftThread.getSlave().getId(), Utils.getLev(wrkMast.getSourceLocNo())); - if (liftStaProtocol == null) { - return false;//鎵句笉鍒扮珯鐐� - } - Integer startSta = liftStaProtocol.getStaNo(); //鑾风洰鏍囩珯婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo()); @@ -1377,7 +1382,7 @@ continue; } - boolean step4 = this.locToLocExecuteStep4(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鍑哄簱鍙� + boolean step4 = this.locToLocExecuteStep4(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鐩爣搴撲綅 if (!step4) { continue; } @@ -1999,8 +2004,43 @@ targetSta = (short) 317; if (wrkMast.getStaNo() != 303 && wrkMast.getStaNo() != 317) { + //鍚慉GV鍙戣捣缁勬墭璇锋眰 +// try { +// HashMap<String, Object> param = new HashMap<>(); +// param.put("wrkNo", wrkMast.getWrkNo()); +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath("/openAGV") +// .setJson(JSON.toJSONString(param)) +// .build() +// .doPost(); +// JSONObject jsonObject = JSON.parseObject(response); +// Integer code = jsonObject.getInteger("code"); +// if (code.equals(200)) {//AGV缁勬墭鎴愬姛 +// //瑕嗙洊宸ヤ綔妗g洰鏍囩珯 +// wrkMast.setStaNo(targetSta.intValue()); +// wrkMast.setShuttleNo(null);//閲婃斁灏忚溅 +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //鍚�300绔欏啓鍏ョ洰鏍囩珯 +// staProtocol = staProtocol.clone(); +// staProtocol.setStaNo(targetSta);//绉诲姩鍒扮洰鏍囩珯 +// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// try { +// Thread.sleep(500); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// continue; +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// } + //瑕嗙洊宸ヤ綔妗g洰鏍囩珯 wrkMast.setStaNo(targetSta.intValue()); + wrkMast.setShuttleNo(null);//閲婃斁灏忚溅 if (wrkMastMapper.updateById(wrkMast) > 0) { //鍚�300绔欏啓鍏ョ洰鏍囩珯 staProtocol = staProtocol.clone(); @@ -2026,15 +2066,15 @@ if (wrkMast == null) { continue; } - WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo()); - if (wrkDetl == null) { + 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(), wrkDetl.getAnfme().intValue(), "303"); + RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetls.size(), "303"); } } }else if (staProtocol317.isAutoing() && staProtocol317.isLoading() && staProtocol317.getWorkNo() != 0) { @@ -2044,18 +2084,82 @@ if (wrkMast == null) { continue; } - WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo()); - if (wrkDetl == null) { + 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(), wrkDetl.getAnfme().intValue(), "317"); + RobotUtils.sendTask(staProtocol317.getWorkNo().toString(), wrkDetls.size(), "317"); } } } } + } + + /** + * AGV琛ヨ揣(閫氱煡AGV鍙栬揣) + */ + public void agvRestockInto() { + //妫�娴�309鍜�312绔欐槸鍚﹁嚜鍔ㄣ�佹湁鐗� + for (DevpSlave devp : slaveProperties.getDevp()) { + // 鑾峰彇鍏ュ簱绔欎俊鎭� + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol309 = devpThread.getStation().get(309); + StaProtocol staProtocol312 = devpThread.getStation().get(312); + if (staProtocol309 == null || staProtocol312 == null) { + continue; + } + + if (staProtocol309.isAutoing() && staProtocol309.isLoading()) { + // 鑾峰彇鏉$爜鎵弿浠俊鎭� + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, 11);//308绔欐潯鐮佸櫒 + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + if(!Cools.isEmpty(barcode)) { + //閫氱煡AGV鍙栬揣 + agvRestockCall("CS-301-001-01@3", barcode); + } + } else if (staProtocol312.isAutoing() && staProtocol312.isLoading()) { + // 鑾峰彇鏉$爜鎵弿浠俊鎭� + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, 12);//311绔欐潯鐮佸櫒 + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + if(!Cools.isEmpty(barcode)) { + //閫氱煡AGV鍙栬揣 + agvRestockCall("CS-302-001-01@3", barcode); + } + } + } + } + + //閫氱煡AGV鍙栬揣 + private boolean agvRestockCall(String staNo, String barcode) { + try { + HashMap<String, Object> param = new HashMap<>(); + param.put("staNo", staNo); + param.put("barcode", barcode); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/callAGV") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + Integer code = jsonObject.getInteger("code"); + if (code.equals(200)) {//鍛煎彨AGV + return true; + } + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return false; } // 300绔欐嫞鏂� @@ -2986,6 +3090,9 @@ wrkMast.setModiTime(now); wrkMastMapper.updateById(wrkMast); + shuttleProtocol.setShuttleNo((short) 0);//閲婃斁灏忚溅 + shuttleProtocol.setToken(0);//閲婃斁灏忚溅 + if (wrkMast.getWrkSts() == 111) { // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) { -- Gitblit v1.9.1