From d8282bc83c48030c3338ce014a88574d1bbfe895 Mon Sep 17 00:00:00 2001 From: bfwms <1> Date: 星期六, 29 三月 2025 16:50:59 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/common/service/CommonService.java | 125 +++++++++++++++++++++++++++++++---------- 1 files changed, 93 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index 003f292..39dc42f 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -110,15 +110,18 @@ return workNo; } - /** - * 妫�绱㈠簱浣嶅彿 - * @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋� - * @param staDescId 璺緞ID - * @param sourceStaNo 婧愮珯 - * @param matNos 鐗╂枡鍙烽泦鍚� - * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿 - */ public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, Integer matTypeIn) { + return getLocNo(whsType,staDescId,sourceStaNo,matNos,locTypeDto,matTypeIn,new ArrayList<>()); + } + /** + * 妫�绱㈠簱浣嶅彿 + * @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋� + * @param staDescId 璺緞ID + * @param sourceStaNo 婧愮珯 + * @param matNos 鐗╂枡鍙烽泦鍚� + * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿 + */ + public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, Integer matTypeIn,List<LocMast> locMastList) { int start; int end; Integer matType = null;//鐗╂枡绫诲瀷 @@ -206,31 +209,67 @@ if (!sign && matType != null) { if (matType == 1) {//鍗曞搧绫诲瀷鍏ュ簱 - locMast = getLocNoStep2(locTypeDto, matNos, rows, crnNos); + locMast = getLocNoStep2(locTypeDto, matNos, rows, crnNos,locMastList); if (locMast != null) { + locMastList.add(locMast); + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", staDescId) + .eq("stn_no", sourceStaNo) + .eq("crn_no", locMast.getCrnNo()); + StaDesc staDesc = staDescService.selectOne(wrapper); + if (Cools.isEmpty(staDesc)) { + return getLocNo(whsType,staDescId,sourceStaNo,matNos,locTypeDto,matTypeIn,locMastList); + } //鎵惧埌搴撲綅锛岃繑鍥瀌to sign=true; } else { //鍗曞搧娌℃湁鎵惧埌搴撲綅锛屾壘楂橀娣锋斁鍖哄煙搴撲綅 - locMast = getLocNoStep3(locTypeDto, crnNos); + locMast = getLocNoStep3(locTypeDto, crnNos,locMastList); if (locMast != null) { + locMastList.add(locMast); + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", staDescId) + .eq("stn_no", sourceStaNo) + .eq("crn_no", locMast.getCrnNo()); + StaDesc staDesc = staDescService.selectOne(wrapper); + if (Cools.isEmpty(staDesc)) { + return getLocNo(whsType,staDescId,sourceStaNo,matNos,locTypeDto,matTypeIn,locMastList); + } //鎵惧埌搴撲綅锛岃繑鍥瀌to sign=true; } } } else if (matType == 2) {//楂橀绫诲瀷鍏ユ渶澶栦晶搴撲綅 - locMast = getLocNoStep3(locTypeDto, crnNos); + locMast = getLocNoStep3(locTypeDto, crnNos,locMastList); if (locMast == null) { //楂橀娌℃湁鎵惧埌搴撲綅锛屾壘浣庨娣锋斁鍖哄煙搴撲綅 - locMast = getLocNoStep4(locTypeDto, crnNos); + locMast = getLocNoStep4(locTypeDto, crnNos,locMastList); } if (locMast != null) { + locMastList.add(locMast); + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", staDescId) + .eq("stn_no", sourceStaNo) + .eq("crn_no", locMast.getCrnNo()); + StaDesc staDesc = staDescService.selectOne(wrapper); + if (Cools.isEmpty(staDesc)) { + return getLocNo(whsType,staDescId,sourceStaNo,matNos,locTypeDto,matTypeIn,locMastList); + } //鎵惧埌搴撲綅锛岃繑鍥瀌to sign=true; } } else if (matType == 3) {//浣庨娣锋斁绫诲瀷 - locMast = getLocNoStep4(locTypeDto, crnNos); + locMast = getLocNoStep4(locTypeDto, crnNos,locMastList); if (locMast != null) { + locMastList.add(locMast); + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", staDescId) + .eq("stn_no", sourceStaNo) + .eq("crn_no", locMast.getCrnNo()); + StaDesc staDesc = staDescService.selectOne(wrapper); + if (Cools.isEmpty(staDesc)) { + return getLocNo(whsType,staDescId,sourceStaNo,matNos,locTypeDto,matTypeIn,locMastList); + } //鎵惧埌搴撲綅锛岃繑鍥瀌to sign=true; } @@ -265,9 +304,12 @@ if (sign){ return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//杩斿洖dto } + if (!locMastList.isEmpty()){ + return getLocNoFinalStep(staDescId, sourceStaNo, locMastList.get(0));//杩斿洖dto + } //----------------2023.06.02鍏煎浠g爜end--------------------- - throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); + throw new CoolException("800妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); } // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭 @@ -301,7 +343,7 @@ } //鍗曞搧绫诲瀷鍏ュ簱 - private LocMast getLocNoStep2(LocTypeDto locTypeDto, List<String> matNos, List<Integer> rows, List<Integer> crnNos) { + private LocMast getLocNoStep2(LocTypeDto locTypeDto, List<String> matNos, List<Integer> rows, List<Integer> crnNos,List<LocMast> locMastList) { LocMast locMast = null; //鍏堟壘宸ヤ綔妗� @@ -311,6 +353,7 @@ //闅忔満鍙敤鍫嗗灈鏈哄彿 Integer randomCrnNo = Utils.getRandomCrnNo(crnNos, locTypeDto.getLocType1()); Collections.shuffle(crnNos); + loc: for (Integer crnNo : crnNos) { List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc, crnNo); for (LocMast locMast0 : locMasts) { @@ -326,8 +369,10 @@ if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� if (locMastService.checkEmptyCount(locMast0, 5)) { - locMast = locMast0; - break; + if (!locMastList.contains(locMast0)){ + locMast = locMast0; + break loc; + } } } } @@ -339,6 +384,7 @@ //鎵惧唴渚х┖搴撲綅(闈炴渶澶栦晶搴撲綅) if (locMast == null) { List<String> locNos = locDetlService.getSameDetl(matNos.get(0)); + loc: for (String locNo : locNos) { List<String> groupLoc = Utils.getGroupLoc(locNo); List<LocMast> locMasts = locMastService.findEmptyLocMastByLocNos(locTypeDto.getLocType1(), groupLoc, null); @@ -355,8 +401,10 @@ if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� if (locMastService.checkEmptyCount(locMast0, 5)) { - locMast = locMast0; - break; + if (!locMastList.contains(locMast0)){ + locMast = locMast0; + break loc; + } } } } @@ -390,9 +438,11 @@ if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� if (locMastService.checkEmptyCount(locMast0, 5)) { - locMast = locMast0; - flag = true; - break; + if (!locMastList.contains(locMast0)){ + locMast = locMast0; + flag = true; + break; + } } } } @@ -407,9 +457,11 @@ if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� if (locMastService.checkEmptyCount(locMast0, 5)) { - locMast = locMast0; - flag = true; - break; + if (!locMastList.contains(locMast0)){ + locMast = locMast0; + flag = true; + break; + } } } } @@ -425,7 +477,7 @@ } //楂橀绫诲瀷鍏ユ渶澶栦晶搴撲綅 - private LocMast getLocNoStep3(LocTypeDto locTypeDto, List<Integer> crnNos) { + private LocMast getLocNoStep3(LocTypeDto locTypeDto, List<Integer> crnNos,List<LocMast> locMastList) { LocMast locMast = null; //闅忔満鍙敤鍫嗗灈鏈哄彿 @@ -451,7 +503,10 @@ if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� if (locMastService.checkEmptyCount(locMast0, 5)) { - locMast = locMast0; + if (!locMastList.contains(locMast0)){ + locMast = locMast0; + break; + } } } } @@ -467,7 +522,7 @@ crns.add(crnNo); } if (!crns.isEmpty()) { - return getLocNoStep3(locTypeDto, crns); + return getLocNoStep3(locTypeDto, crns,locMastList); } } @@ -475,7 +530,7 @@ } //浣庨绫诲瀷锛岀洿鎺ユ壘娣锋斁鍖哄煙 - private LocMast getLocNoStep4(LocTypeDto locTypeDto, List<Integer> crnNos) { + private LocMast getLocNoStep4(LocTypeDto locTypeDto, List<Integer> crnNos,List<LocMast> locMastList) { LocMast locMast = null; //闅忔満鍙敤鍫嗗灈鏈哄彿 @@ -515,10 +570,16 @@ if (!locMast1.getLocSts().equals("O") && !locMast0.getRow1().equals(outermostRow)){ // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� if (locMastService.checkEmptyCount0(locMast0, 5)) { - locMast = locMast0; + if (!locMastList.contains(locMast0)){ + locMast = locMast0; + break; + } } }else { - locMast = locMast0; + if (!locMastList.contains(locMast0)){ + locMast = locMast0; + break; + } } } @@ -535,7 +596,7 @@ crns.add(crnNo); } if (!crns.isEmpty()) { - return getLocNoStep4(locTypeDto, crns); + return getLocNoStep4(locTypeDto, crns,locMastList); } } -- Gitblit v1.9.1