From 2dc3f0507d6e883d16b1c3c095ca06455a6fa1a7 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期一, 25 十二月 2023 09:21:20 +0800 Subject: [PATCH] #提升机设备工作号优化 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 162 ++++++++++++++++++++++++++++++++---------------------- 1 files changed, 96 insertions(+), 66 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 ebea0fe..1d32a45 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -5,6 +5,7 @@ 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.*; @@ -238,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(); @@ -277,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绔欏洖閫�淇″彿 @@ -467,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());//婧愬簱浣� @@ -480,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) @@ -492,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(); @@ -616,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 { @@ -630,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) @@ -642,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(); @@ -1609,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<>(); @@ -1773,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(); + } } //灏嗕换鍔℃。鏍囪涓哄畬鎴� @@ -1801,6 +1811,7 @@ wrkMast.setWrkSts(29L); wrkMast.setShuttleNo(null);//閲婃斁灏忚溅 wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� + wrkMast.setModiTime(new Date()); } } @@ -2453,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(); @@ -2477,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(); @@ -2897,7 +2908,7 @@ if (ioType != 110 && ioType != 10) { List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); locDetls.forEach(locDetl -> { - Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkMast.getWrkNo()); + 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()); @@ -2927,6 +2938,11 @@ }); + if (ioType == 107) { + locDetls = new ArrayList<>(); + ledCommand.setMatDtos(new ArrayList<>()); + } + if (locDetls.isEmpty()) { List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo)); wrkDetls.forEach(wrkDetl -> { @@ -2934,11 +2950,10 @@ }); if (wrkDetls.isEmpty()) {//浠庡巻鍙叉。鏌ヨ - List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkNo); + List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkNo, barcode); for (WrkDetlLog wrkDetlLog : wrkDetlLogs) { ledCommand.getMatDtos().add(new MatDto(wrkDetlLog.getMatnr(), wrkDetlLog.getMaktx(), wrkDetlLog.getAnfme(), wrkDetlLog.getAnfme(), wrkDetlLog.getSpecs(), wrkDetlLog.getSuppCode())); } - } } } @@ -3389,6 +3404,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()), 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(); @@ -3505,8 +3531,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<>(); -- Gitblit v1.9.1