From a6ddc35c9f177ec73abef648fed0ac6de16d856f Mon Sep 17 00:00:00 2001 From: pjb <pjb123456> Date: 星期六, 26 七月 2025 16:18:07 +0800 Subject: [PATCH] rgv调动分配优化:判断当前任务取货站点后续小车任务放货完后能不能取当前任务 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 52 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 43 insertions(+), 9 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 d7d80bb..2185d01 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -379,7 +379,7 @@ for (WrkMast wrkMast : wrkMasts) { Integer rgvSstaNo = wrkMast.getRgvSstaNo(); // 1090锛�1089,1086,1083 鎸�1083绔欑偣浣嶇疆璁$畻锛岃兘鍙�1083锛屽氨鑳藉彇1090锛�1089锛�1086锛岄伩鍏嶄换鍔″欢杩熶笅鍙戞柟妗堜竴鐩寸粰1083鍙� - if (rgvSstaNo == 1090 || rgvSstaNo == 1089 || rgvSstaNo == 1086) { + if (rgvSstaNo == 1090 || rgvSstaNo == 1089 || rgvSstaNo == 1086 || rgvSstaNo == 1105) { rgvSstaNo = 1083; } BasDevpPosition basDevpPositions = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", rgvSstaNo)); // 绔欑偣 @@ -407,13 +407,14 @@ // log.info("鍙栬揣绔欑偣锛歿}锛屽悗闈㈡渶杩戝皬杞︼細{},鐘舵��:{}", basDevpPositions.getDevNo(), rgvProtocol.getRgvNo(), rgvProtocol.getStatusType().desc); int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("rgv_no", rgvProtocol.getRgvNo()).eq("wrk_sts", 10)); if(wrkMast.getIoType() == 10 || wrkMast.getIoType() == 110 || wrkMast.getSourceStaNo() == 1034) { - if (count != 0) { - continue; - } if (rgvProtocol.modeType == RgvModeType.AUTO && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM) && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getAlarm() == 0) { + if (count != 0) { + log.error("{}鍛煎彨灏忚溅锛歿}鍙峰皬杞︾┖闂诧紝浣嗗伐浣滄。鏄剧ず璇ュ皬杞︽湁浠诲姟",wrkMast.getWrkNo(),rgvProtocol.getRgvNo()); + break ; + } RgvCommand rgvCommand = new RgvCommand(); rgvCommand.setRgvNo(rgvProtocol.getRgvNo()); rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� @@ -433,15 +434,33 @@ wrkMast.setRgvCreateTime(now); wrkMastService.updateById(wrkMast); break runRgv; + } else if(rgvProtocol.modeType == RgvModeType.AUTO + && rgvProtocol.getTaskNo1() != 0){ // 褰撳墠灏忚溅鏀捐揣鐩爣浣嶇疆鍦ㄥ綋鍓嶄换鍔″彇璐х偣涔嬪悗锛岃烦杩囦换鍔″垎閰嶏紝涓嶅啀鍒欏垽鏂笅涓皬杞︾洰鏍囦綅缃� + WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", rgvProtocol.getTaskNo1())); // 褰撳墠rgv浠诲姟 + if(wrkMast1!= null && !Cools.isEmpty(wrkMast1.getRgvDstaNo())) { + // 褰撳墠rgv浠诲姟鐩爣绔欑偣 + BasDevpPosition rgvDstaNoDevPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast1.getRgvDstaNo())); + long rgvDstaNoPosition = rgvDstaNoDevPosition.getPlcPosition(); // 褰撳墠rgv浠诲姟鐩爣绔欑偣浣嶇疆 + if(rgvProtocol.getRgvPos() < rgvDstaNoPosition) { // 灏忚溅褰撳墠浣嶇疆 < rgv鐩爣浣嶇疆 + if(!(rgvProtocol.getRgvPos() < position && position < rgvDstaNoPosition)) { // 杩欎釜浠诲姟浣嶇疆鏄湪褰撳墠rgv浣嶇疆鍓嶉潰骞朵笖杩欎釜浠诲姟璧风偣鍦ㄥ綋鍓峳gv鐩爣绔欑偣涔嬪悗 + break; // 褰撳墠rgv鏀捐揣瀹屾垚鍚庯紝鍙互鍙栧綋鍓嶄换鍔� + } + } else { + if(!(rgvProtocol.getRgvPos() < position || position < rgvDstaNoPosition)) { + break; + } + } + } } } else { - if (count != 0) { - break; - } if (rgvProtocol.modeType == RgvModeType.AUTO && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM) && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getAlarm() == 0) { + if (count != 0) { + log.error("{}鍛煎彨灏忚溅锛歿}鍙峰皬杞︾┖闂诧紝浣嗗伐浣滄。鏄剧ず璇ュ皬杞︽湁浠诲姟",wrkMast.getWrkNo(),rgvProtocol.getRgvNo()); + break; + } RgvCommand rgvCommand = new RgvCommand(); rgvCommand.setRgvNo(rgvProtocol.getRgvNo()); rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� @@ -461,8 +480,23 @@ wrkMast.setRgvCreateTime(now); wrkMastService.updateById(wrkMast); break runRgv; - } else { - break ; // 鍙湅鏈�杩戠殑绗竴涓皬杞� + } else if(rgvProtocol.modeType == RgvModeType.AUTO + && rgvProtocol.getTaskNo1() != 0){ // 褰撳墠灏忚溅鏀捐揣鐩爣浣嶇疆鍦ㄥ綋鍓嶄换鍔″彇璐х偣涔嬪悗锛岃烦杩囦换鍔″垎閰嶏紝涓嶅啀鍒欏垽鏂笅涓皬杞︾洰鏍囦綅缃� + WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", rgvProtocol.getTaskNo1())); // 褰撳墠rgv浠诲姟 + if(wrkMast1!= null && !Cools.isEmpty(wrkMast1.getRgvDstaNo())) { + // 褰撳墠rgv浠诲姟鐩爣绔欑偣 + BasDevpPosition rgvDstaNoDevPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast1.getRgvDstaNo())); + long rgvDstaNoPosition = rgvDstaNoDevPosition.getPlcPosition(); // 褰撳墠rgv浠诲姟鐩爣绔欑偣浣嶇疆 + if(rgvProtocol.getRgvPos() < rgvDstaNoPosition) { // 灏忚溅褰撳墠浣嶇疆 < rgv鐩爣浣嶇疆 + if(!(rgvProtocol.getRgvPos() < position && position < rgvDstaNoPosition)) { // 杩欎釜浠诲姟浣嶇疆鏄湪褰撳墠rgv浣嶇疆鍓嶉潰骞朵笖杩欎釜浠诲姟璧风偣鍦ㄥ綋鍓峳gv鐩爣绔欑偣涔嬪悗 + break; // 褰撳墠rgv鏀捐揣瀹屾垚鍚庯紝鍙互鍙栧綋鍓嶄换鍔� + } + } else { + if(!(rgvProtocol.getRgvPos() < position || position < rgvDstaNoPosition)) { + break; + } + } + } } } } -- Gitblit v1.9.1