From a6758aa0c0ac75a5ea3f46fb214d62d8f07a6ad4 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期五, 23 二月 2024 12:45:09 +0800 Subject: [PATCH] #显示器更新 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 461 ++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 327 insertions(+), 134 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 6b15116..de5d0c9 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -1,11 +1,11 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; +import com.core.common.SpringUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.*; @@ -37,8 +37,6 @@ import java.util.*; import java.util.stream.Collectors; - -import static com.zy.asrs.utils.Utils.isJson; /** * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔� @@ -106,7 +104,7 @@ @Autowired private RedisUtil redisUtil; @Autowired - private WrkMastLocMapper wrkMastLocMapper; + private WrkMastLogMapper wrkMastLogMapper; @Autowired private BasLiftOptService basLiftOptService; @Autowired @@ -241,7 +239,7 @@ param.setLocType1(locTypeDto.getLocType1()); String response = new HttpHandler.Builder() .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v1") + .setPath("/rpc/pakin/loc/v2") .setJson(JSON.toJSONString(param)) .build() .doPost(); @@ -280,7 +278,7 @@ ledThread.setLedMk(false); } } - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); } else if (code == 700) { // staProtocol.setWorkNo((short) 32002); // staProtocol.setRollback102(1);//102绔欏洖閫�淇″彿 @@ -470,11 +468,11 @@ // } // //*********************鍚屽簱浣嶇粍鏍¢獙********************* - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { - News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); - continue; - } +// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� +// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { +// News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); +// continue; +// } try { LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣� @@ -483,6 +481,7 @@ param.setBarcode(wrkMast.getBarcode()); param.setIoType(wrkMast.getIoType()); param.setSourceStaNo(pickSta.getStaNo()); + param.setLiftNo(pickSta.getLiftNo()); param.setLocType1(locMast.getLocType1()); String response = new HttpHandler.Builder() .setUri(wmsUrl) @@ -495,28 +494,28 @@ if (code.equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); - //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); - if (liftStaProtocol == null) { - News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); - continue; - } - - // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� - wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54 - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 - wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 - wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� - wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 - wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� - wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) == 0) { - News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); - continue; - } +// //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 +// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); +// if (liftStaProtocol == null) { +// News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); +// continue; +// } +// +// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� +// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54 +// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 +// wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 +// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� +// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 +// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� +// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� +// wrkMast.setModiTime(new Date()); +// if (wrkMastMapper.updateById(wrkMast) == 0) { +// News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); +// continue; +// } } else if (code == 500) { - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); } } catch (Exception e) { e.printStackTrace(); @@ -619,11 +618,11 @@ continue; } - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { - News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); - continue; - } +// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� +// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { +// News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); +// continue; +// } //鐩樼偣鎵炬柊搴撲綅 try { @@ -633,6 +632,7 @@ param.setBarcode(wrkMast.getBarcode()); param.setIoType(107);//鐩樼偣 param.setSourceStaNo(pickSta.getStaNo()); + param.setLiftNo(pickSta.getLiftNo()); param.setLocType1(locMast.getLocType1()); String response = new HttpHandler.Builder() .setUri(wmsUrl) @@ -645,32 +645,32 @@ if (code.equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); - //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); - if (liftStaProtocol == null) { - News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); - continue; - } - - // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� - wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 107->57 - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 - wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 - wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� - wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 - wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� - wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) == 0) { - News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); - continue; - } +// //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 +// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); +// if (liftStaProtocol == null) { +// News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); +// continue; +// } +// +// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� +// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 107->57 +// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 +// wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 +// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� +// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 +// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� +// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� +// wrkMast.setModiTime(new Date()); +// if (wrkMastMapper.updateById(wrkMast) == 0) { +// News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); +// continue; +// } // staProtocol.setStaNo(dto.getSourceStaNo().shortValue());//鍐欏叆鐩爣绔� // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); } else if (code == 500) { - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); } } catch (Exception e) { e.printStackTrace(); @@ -1390,7 +1390,7 @@ if (wrkMastMapper.updateById(wrkMast) > 0) { if (wrkMast.getWrkSts() == 111) { // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) { + if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); } // 鍒犻櫎宸ヤ綔涓绘。 @@ -1612,8 +1612,12 @@ NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) { //鎷f枡鍐嶅洖搴擄紝閲嶆柊鍒嗛厤璁惧宸ヤ綔鍙� - Random random = new Random(); - int deviceWrk = Math.abs((liftCommand.getTaskNo().intValue() + random.nextInt(9999)));//鑾峰彇璁惧宸ヤ綔鍙� + int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿 + BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(String.valueOf(deviceWrk), liftThread.getSlave().getId()); + if (basLiftOpt != null) { + News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛岃澶囧伐浣滃彿鍑虹幇閲嶅鎯呭喌锛岃鑱旂郴鎶�鏈汉鍛樻敮鎸併��", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + return false; + } liftCommand.setTaskNo((short) deviceWrk); } ArrayList<NyLiftCommand> commands = new ArrayList<>(); @@ -1680,6 +1684,16 @@ News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀湪杈撻�佺珯鐐硅皟搴﹀皬杞﹂伩璁╁け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } + } + + if (!basDevp.getAutoing().equals("Y")) { + News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夎嚜鍔ㄤ俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); + return false;//鍑哄簱绔欑偣涓嶅彲鍑� + } + + if (basDevp.getLoading().equals("Y")) { + News.info("{}浠诲姟锛寋}绔欑偣锛屽瓨鍦ㄦ湁鐗╀俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); + return false;//鍑哄簱绔欑偣涓嶅彲鍑� } if (!basDevp.getOutEnable().equals("Y")) { @@ -1766,10 +1780,13 @@ && liftProtocol.getTaskNo() != 0 && !liftProtocol.getBusy() ) { - BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString()); int taskNo = liftProtocol.getTaskNo().intValue(); - if (basLiftOpt != null) { - taskNo = basLiftOpt.getWrkNo(); + if (taskNo >= 20000 && taskNo <= 30000) { + //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿 + BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftSlave.getId()); + if (basLiftOpt != null) { + taskNo = basLiftOpt.getWrkNo(); + } } //灏嗕换鍔℃。鏍囪涓哄畬鎴� @@ -1794,6 +1811,7 @@ wrkMast.setWrkSts(29L); wrkMast.setShuttleNo(null);//閲婃斁灏忚溅 wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� + wrkMast.setModiTime(new Date()); } } @@ -2446,7 +2464,7 @@ // param.setLocType1(locTypeDto.getLocType1()); String response = new HttpHandler.Builder() .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v1") + .setPath("/rpc/pakin/loc/v2") .setJson(JSON.toJSONString(param)) .build() .doPost(); @@ -2470,7 +2488,7 @@ MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg)); } } - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); } } catch (Exception e) { e.printStackTrace(); @@ -2615,9 +2633,10 @@ } if (wrkMast.getInvWh() == null) { - wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔� - if (wrkMastMapper.updateById(wrkMast) > 0) { - RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetls.size(), "303"); + boolean result = RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetls.size(), "303"); + if (result) { + wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔� + wrkMastMapper.updateById(wrkMast); } } } @@ -2634,9 +2653,10 @@ continue; } if (wrkMast.getInvWh() == null) { - wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔� - if (wrkMastMapper.updateById(wrkMast) > 0) { - RobotUtils.sendTask(staProtocol317.getWorkNo().toString(), wrkDetls.size(), "317"); + boolean result = RobotUtils.sendTask(staProtocol317.getWorkNo().toString(), wrkDetls.size(), "317"); + if (result) { + wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔� + wrkMastMapper.updateById(wrkMast); } } } @@ -2719,13 +2739,38 @@ return false; } + //閫氱煡WMS褰撳墠鎷f枡绔欑偣淇℃伅 + private boolean agvCureentCall(String staNo, String barcode) { + try { + HashMap<String, Object> param = new HashMap<>(); + param.put("devNo", staNo); + param.put("containerCode", barcode); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/current/containerCode") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + News.info("鎮寕绾匡紝WMS杩斿洖缁撴灉锛�" + jsonObject); + Integer code = jsonObject.getInteger("code"); + if (code.equals(200)) {//鍛煎彨AGV + return true; + } + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + return false; + } + /** * AGV琛ヨ揣(鎮寕绾块�氱煡AGV鍙栬揣) */ public void agvRestockIntoByHangingWire() { try { //妫�娴�350鍜�351鎵爜鍣� - int[] barcodeStaNo = {11, 12};//11 => 350绔欐壂鐮佸櫒,12 => 351绔欐壂鐮佸櫒 + int[] barcodeStaNo = {11, 12,14,16,18,20};//11 => 350绔欐壂鐮佸櫒,12 => 351绔欐壂鐮佸櫒 for (int staNo : barcodeStaNo) { // 鑾峰彇鏉$爜鎵弿浠俊鎭� BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, staNo); @@ -2741,11 +2786,61 @@ String agvStaNo = null; if (staNo == 11) { agvStaNo = "303-1"; - } else { + } else if(staNo == 12){ agvStaNo = "304-1"; + } else if(staNo == 14){ + agvStaNo = "311-1"; + } else if(staNo == 16){ + agvStaNo = "313-1"; + } else if(staNo == 18){ + agvStaNo = "315-1"; + } else if(staNo == 20){ + agvStaNo = "317-1"; } //閫氱煡AGV鍙栬揣 boolean result = agvRestockCall(agvStaNo, barcode); + if (result) { + barcodeThread.setBarcode(""); + } + log.info(barcodeThread.getSlave().getId() + "鍙锋壂鐮佸櫒锛岄�氱煡AGV鍙栬揣锛屾潯鐮佸彿锛�" + barcode); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * AGV鎷f枡绔欑偣淇℃伅 + */ + public void agvCurrentContainerCodeInfoWire() { + try { + //妫�娴�350鍜�351鎵爜鍣� + int[] barcodeStaNo = {13, 15,17,19};//11 => 350绔欐壂鐮佸櫒,12 => 351绔欐壂鐮佸櫒 + for (int staNo : barcodeStaNo) { + // 鑾峰彇鏉$爜鎵弿浠俊鎭� + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, staNo); + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + if (!Cools.isEmpty(barcode)) { + if (barcode.contains("NoRead")) { + continue; + } + + String agvStaNo = null; + if (staNo == 13) { + agvStaNo = "CS-310"; + } else if(staNo == 15){ + agvStaNo = "CS-311"; + } else if(staNo == 17){ + agvStaNo = "CS-312"; + } else if(staNo == 19){ + agvStaNo = "CS-313"; + } + //閫氱煡WMS褰撳墠瀹瑰櫒鐮� + boolean result = agvCureentCall(agvStaNo, barcode); if (result) { barcodeThread.setBarcode(""); } @@ -2817,6 +2912,7 @@ List<LedCommand> commands = new ArrayList<>(); // 宸ヤ綔妗i泦鍚� List<WrkMast> wrkMasts = new ArrayList<>(); + List<WrkMastLog> wrkMastLogs = new ArrayList<>(); for (Integer staNo : led.getStaArr()) { // 鑾峰彇鍙夎溅绔欑偣 StaProtocol staProtocol = devpThread.getStation().get(staNo); @@ -2827,16 +2923,41 @@ } // 鑾峰彇宸ヤ綔妗f暟鎹� WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); - if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { - continue; + Integer wrkNo = staProtocol.getWorkNo().intValue(); + Integer ioType = null; + String sourceLocNo = null; + String locNo = null; + Integer wrkStaNo = null; + String barcode = null; + if (wrkMast == null) { + //鏌ヨ鍘嗗彶妗� + WrkMastLog wrkMastLog = wrkMastLogMapper.selectLatestByWorkNo(staProtocol.getWorkNo().intValue()); + if (wrkMastLog == null) { + continue; + } + ioType = wrkMastLog.getIoType(); + sourceLocNo = wrkMastLog.getSourceLocNo(); + locNo = wrkMastLog.getLocNo(); + wrkStaNo = wrkMastLog.getStaNo(); + barcode = wrkMastLog.getBarcode(); + wrkMastLogs.add(wrkMastLog); + }else { + if (wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { + continue; + } + ioType = wrkMast.getIoType(); + sourceLocNo = wrkMast.getSourceLocNo(); + locNo = wrkMast.getLocNo(); + wrkStaNo = wrkMast.getStaNo(); + barcode = wrkMast.getBarcode(); + wrkMasts.add(wrkMast); } - wrkMasts.add(wrkMast); // 缁勮鍛戒护 LedCommand ledCommand = new LedCommand(); - ledCommand.setWorkNo(wrkMast.getWrkNo()); - ledCommand.setIoType(wrkMast.getIoType()); + ledCommand.setWorkNo(wrkNo); + ledCommand.setIoType(ioType); // 鍑哄簱妯″紡 - switch (wrkMast.getIoType()) { + switch (ioType) { case 101: ledCommand.setTitle("鍏ㄦ澘鍑哄簱"); break; @@ -2854,64 +2975,121 @@ ledCommand.setEmptyMk(true); break; default: - News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType()); + News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkNo, ioType); break; } - ledCommand.setSourceLocNo(wrkMast.getSourceLocNo()); - ledCommand.setLocNo(wrkMast.getLocNo()); - ledCommand.setStaNo(wrkMast.getStaNo()); - ledCommand.setBarcode(wrkMast.getBarcode()); - if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) { - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo())); - locDetls.forEach(locDetl -> { - Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkMast.getWrkNo()); - Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch()); - Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode()); - Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime()); - Utils.wapperSetCondition(wrapper, "supp_code", locDetl.getSuppCode());//鏂欑鐮� - List<WrkDetl> detl = wrkDetlService.selectList(wrapper); - if (Cools.isEmpty(detl)) { - String suppCode = ""; - if (locDetl.getSuppCode() != null) { - suppCode = locDetl.getSuppCode(); - } - ledCommand.getMatDtos().add(new MatDto(locDetl.getMatnr(), locDetl.getMaktx(), 0D, locDetl.getAnfme(), locDetl.getSpecs(), suppCode)); - } else { - //鍑哄簱鏁伴噺绱 - Double conut = 0.0; - for (WrkDetl wrkDetl : detl) { - conut = conut + wrkDetl.getAnfme(); - } - - for (WrkDetl wrkDetl : detl) { - String suppCode = ""; - if (wrkDetl.getSuppCode() != null) { - suppCode = wrkDetl.getSuppCode(); - } - ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), (locDetl.getAnfme() - conut), wrkDetl.getSpecs(), suppCode, wrkDetl.getOrderNo())); - } - } - + ledCommand.setSourceLocNo(sourceLocNo); + ledCommand.setLocNo(locNo); + ledCommand.setStaNo(wrkStaNo); + ledCommand.setBarcode(barcode); + if (ioType != 110 && ioType != 10) { + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo)); + wrkDetls.forEach(wrkDetl -> { + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getStock(), wrkDetl.getSpecs(), wrkDetl.getSuppCode())); }); - if (locDetls.isEmpty()) { - List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); - wrkDetls.forEach(wrkDetl -> { - ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode())); - }); - - if (wrkDetls.isEmpty()) {//浠庡巻鍙叉。鏌ヨ - List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkMast.getWrkNo()); - wrkDetlLogs.forEach(wrkDetl -> { - ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode())); - }); - } - } +// List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); +// if (ioType == 101) { +// List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo)); +// wrkDetls.forEach(wrkDetl -> { +// ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), 0D, wrkDetl.getSpecs(), wrkDetl.getSuppCode())); +// }); +//// locDetls.forEach(locDetl -> { +//// Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkNo); +//// Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch()); +//// Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode()); +//// Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime()); +//// Utils.wapperSetCondition(wrapper, "supp_code", locDetl.getSuppCode());//鏂欑鐮� +//// List<WrkDetl> detl = wrkDetlService.selectList(wrapper); +//// if (Cools.isEmpty(detl)) { +//// String suppCode = ""; +//// if (locDetl.getSuppCode() != null) { +//// suppCode = locDetl.getSuppCode(); +//// } +//// ledCommand.getMatDtos().add(new MatDto(locDetl.getMatnr(), locDetl.getMaktx(), 0D, locDetl.getAnfme(), locDetl.getSpecs(), suppCode)); +//// } else { +//// //鍑哄簱鏁伴噺绱 +//// Double conut = 0.0; +//// for (WrkDetl wrkDetl : detl) { +//// conut = conut + wrkDetl.getAnfme(); +//// } +//// +//// for (WrkDetl wrkDetl : detl) { +//// String suppCode = ""; +//// if (wrkDetl.getSuppCode() != null) { +//// suppCode = wrkDetl.getSuppCode(); +//// } +//// ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), (locDetl.getAnfme() - conut), wrkDetl.getSpecs(), suppCode, wrkDetl.getOrderNo())); +//// } +//// } +//// +//// }); +// } else { +// locDetls.forEach(locDetl -> { +// Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkNo); +// Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch()); +// Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode()); +// Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime()); +// Utils.wapperSetCondition(wrapper, "supp_code", locDetl.getSuppCode());//鏂欑鐮� +// List<WrkDetl> detl = wrkDetlService.selectList(wrapper); +// if (Cools.isEmpty(detl)) { +// String suppCode = ""; +// if (locDetl.getSuppCode() != null) { +// suppCode = locDetl.getSuppCode(); +// } +// ledCommand.getMatDtos().add(new MatDto(locDetl.getMatnr(), locDetl.getMaktx(), 0D, locDetl.getAnfme(), locDetl.getSpecs(), suppCode)); +// } else { +// //鍑哄簱鏁伴噺绱 +// Double conut = 0.0; +// for (WrkDetl wrkDetl : detl) { +// conut = conut + wrkDetl.getAnfme(); +// } +// +// for (WrkDetl wrkDetl : detl) { +// String suppCode = ""; +// if (wrkDetl.getSuppCode() != null) { +// suppCode = wrkDetl.getSuppCode(); +// } +// ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), (wrkDetl.getStock() - conut), wrkDetl.getSpecs(), suppCode, wrkDetl.getOrderNo())); +// } +// } +// +// }); +// } +// +// +// if (ioType == 107) { +// locDetls = new ArrayList<>(); +// ledCommand.setMatDtos(new ArrayList<>()); +// } +// +// if (locDetls.isEmpty() && ioType != 101) { +// List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo)); +// wrkDetls.forEach(wrkDetl -> { +// if (wrkDetl.getAnfme() > 0D) { +// ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode())); +// } +// }); +// +// if (wrkDetls.isEmpty()) {//浠庡巻鍙叉。鏌ヨ +// List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkNo, barcode); +// for (WrkDetlLog wrkDetlLog : wrkDetlLogs) { +// if (wrkDetlLog.getAnfme() > 0D) { +// ledCommand.getMatDtos().add(new MatDto(wrkDetlLog.getMatnr(), wrkDetlLog.getMaktx(), wrkDetlLog.getAnfme(), wrkDetlLog.getAnfme(), wrkDetlLog.getSpecs(), wrkDetlLog.getSuppCode())); +// } +// } +// } +// } } commands.add(ledCommand); } - Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet()); + Set<Integer> workNos = null; + if (!wrkMasts.isEmpty()) { + workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet()); + }else { + workNos = wrkMastLogs.stream().map(WrkMastLog::getWrkNo).collect(Collectors.toSet()); + } // 鑾峰彇LED绾跨▼ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护 @@ -3341,7 +3519,7 @@ return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢� } //灏濊瘯閿佸畾鐩爣绔欒矾寰� - boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo().intValue(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� if (!result2) { News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false;//璺緞閿佸畾澶辫触 @@ -3350,6 +3528,17 @@ //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id); + if (result == null) { + //璺緞鑾峰彇澶辫触锛岄渶瑕佽В閿佷笂闈㈤攣瀹氱殑璺緞 + //灏濊瘯瑙i攣鐩爣绔欒矾寰� + boolean result3 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo().intValue(), targetNodes, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿� + if (!result3) { + News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮В閿佸け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + return false;//璺緞瑙i攣澶辫触 + } + News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + return false;//璺緞瑙i攣澶辫触 + } List<NyShuttleHttpCommand> commands = result.getCommands(); ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); @@ -3466,8 +3655,12 @@ //鑾峰彇鎻愬崌鏈哄懡浠わ紝璋冨害鎻愬崌鏈哄埌婧愮珯浣嶇疆 NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), sourceLiftSta.getStaNo(), wrkMast.getWrkNo()); - Random random = new Random(); - int deviceWrk = Math.abs((liftCommand.getTaskNo().intValue() + random.nextInt(9999)));//鑾峰彇璁惧宸ヤ綔鍙� + int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿 + BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(String.valueOf(deviceWrk), liftThread.getSlave().getId()); + if (basLiftOpt != null) { + News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛岃澶囧伐浣滃彿鍑虹幇閲嶅鎯呭喌锛岃鑱旂郴鎶�鏈汉鍛樻敮鎸併��", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + return false; + } liftCommand.setTaskNo((short) deviceWrk);//鏇存崲闅忔満浠诲姟鍙� ArrayList<NyLiftCommand> commands = new ArrayList<>(); @@ -3828,7 +4021,7 @@ if (wrkMast.getWrkSts() == 111) { // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) { + if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); } // 鍒犻櫎宸ヤ綔涓绘。 -- Gitblit v1.9.1