From 20a1449f65a9d577c2c9c0af62f3c4af3dd8d172 Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期一, 04 十二月 2023 15:02:10 +0800 Subject: [PATCH] 库位规则、库位编码规则bug修改 --- src/main/java/com/zy/common/service/CommonService.java | 125 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 117 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index 6419cc6..1388298 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -144,6 +144,13 @@ return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto } + //瀛樿揣鍒嗙被缂栫爜瑙勫垯 + locMast = getLocNoCodeStepRule(matNos, locTypeDto); + if (locMast != null) { + //鎵惧埌搴撲綅锛岃繑鍥瀌to + return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto + } + // 闈犺繎鎽嗘斁瑙勫垯 --- 鐩稿悓璁㈠崟鍙�, 鍚屽ぉ鍚岃鏍肩墿鏂� locMast = getLocNoStep3(staDescId, matNos, locTypeDto); if (locMast != null) { @@ -195,12 +202,8 @@ } List<LocMast> locMasts = locMastService.queryFreeLocMast2(locTypeDto.getLocType1(), locRule.getRowBeg(), locRule.getRowEnd(), locRule.getBayBeg(), locRule.getBayEnd(), locRule.getLevBeg(), locRule.getLevEnd()); - for (LocMast locMast0 : locMasts) { - //棰勭暀绌哄簱浣� - if (locMastService.checkEmptyCount(locMast0, 10)) { - return locMast0; - } - } + locMast = locFilter(locMasts, matNos,locTypeDto); + } if (locRules.get(0).getKeepGo() == 0) { @@ -209,6 +212,46 @@ throw new CoolException("瑙勫垯鍖哄煙娌℃湁绌哄簱浣�"); } } + + return locMast; + } + + /** + * 搴撲綅缂栫爜瑙勫垯 + */ + private LocMast getLocNoCodeStepRule(List<String> matNos, LocTypeDto locTypeDto) { + LocMast locMast = null; + + //搴撲綅缂栫爜瑙勫垯鍙兘鍦ㄧ浉鍚岀紪鐮佽揣鐗╀腑鐢熸晥 + String matnr = ""; + for(String matNo : matNos){ + if("".equals(matnr)){ + matnr = matNo.substring(0, 4); + } + if(!matnr.equals(matNo.substring(0, 4))){ + return null; + } + } + + // 搴撳尯閿佸畾 + List<LocRule> locRules = locRuleService.findCode(Cools.isEmpty(matNos) ? null : matNos.get(0),null); + if (locRules == null || locRules.isEmpty()) { + return null;//娌℃湁搴撲綅瑙勫垯锛岃烦鍑哄綋鍓嶄换鍔� + } + + for (LocRule locRule : locRules) { + if (locRule == null) { + continue; + } + List<LocMast> locMasts = locMastService.queryFreeLocMast2(locTypeDto.getLocType1(), locRule.getRowBeg(), locRule.getRowEnd(), locRule.getBayBeg(), locRule.getBayEnd(), locRule.getLevBeg(), locRule.getLevEnd()); + locMast = locFilter(locMasts, matNos,locTypeDto); + } + +// if (locRules.get(0).getKeepGo() == 0) { +// //鎵句笉鍒扮┖搴撲綅锛屼笖绂佹缁х画瀵绘壘鍏朵粬闈炴贩杞藉尯鍩熷簱浣� +// //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父 +// throw new CoolException("瑙勫垯鍖哄煙娌℃湁绌哄簱浣�"); +// } return locMast; } @@ -232,7 +275,7 @@ //鍐嶅垽鏂簱瀛樻槑缁嗘。锛屾枡鍙风浉鍚岀殑鏄庣粏搴撲綅 List<String> locNos = locDetlService.getSameDetl(matNos.get(0)); for (String locNo : locNos) { - LocMast locMast0 = locMastService.findNearloc(locNo); + LocMast locMast0 = locMastService.findInnerLoc(locNo); if (null != locMast0) { // 娴呭簱浣嶇鍚堝昂瀵告娴� if (VersionUtils.checkLocType(locMast0, locTypeDto)) { @@ -347,13 +390,79 @@ if (locMast == null) { //鍗曞搧鎵句笉鍒板簱浣嶏紝鍏佽灏濊瘯浠庢贩鏀惧尯鍩熶腑杩涜鎼滅储 - locMast = getLocNoStepMixed(matNos, locTypeDto, 1); + List<LocMast> locMasts2 = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), 1);//鎼滅储鍗曞搧搴撲綅 + //娣锋斁鍖哄煙鐩存帴鍙栫涓�涓嵆鍙� + for (LocMast mast : locMasts2) { + //棰勭暀绌哄簱浣� + if (locMastService.checkEmptyCount(mast, 10)) { + locMast = mast; + break; + } + } } } return locMast; } + /* + 搴撳瓨瑙勫垯鎼滅储鍒扮殑搴撲綅纭 + */ + private LocMast locFilter(List<LocMast> locMasts,List<String> matNos,LocTypeDto locTypeDto){ + for (LocMast locMast0 : locMasts) { + if(!VersionUtils.checkLocType(locMast0,locTypeDto)){ + continue; + } + if (matNos.size() == 1) { + //鍗曞搧鐗╂枡 + if(Cools.isEmpty(Utils.getGroupDeepLoc(locMast0.getLocNo()))){ + return locMast0; + }else{ + List<String> groupInnerLoc = Utils.getGroupInnerLoc(locMast0.getLocNo()); + if (Cools.isEmpty(groupInnerLoc)) { + return locMast0; + }else { + //鑾峰彇鏈�娣辩殑搴撲綅 + String loc = groupInnerLoc.get(groupInnerLoc.size() - 1); + LocMast locMast1 = locMastService.selectByLoc(loc); + if("O".equals(locMast1.getLocSts())){ + return locMast1; + }else { + if(!"F".equals(locMast1.getLocSts())){ + continue; + } + List<LocDetl> locDetls = locDetlService.selectByLocNo(loc); + if(!Cools.eq(locDetls.get(0).getMatnr(),matNos.get(0))){ + continue; + } + for (int i=groupInnerLoc.size()-1; i>=0 ;i--){ + LocMast locMast2 = locMastService.selectByLoc(groupInnerLoc.get(i)); + if("O".equals(locMast2.getLocSts())){ + return locMast2; + }else if("F".equals(locMast2.getLocSts())){ + if(i==0){ + return locMast1; + }else { + continue; + } + }else { + break; + } + } + } + + } + } + }else { + if(Cools.isEmpty(Utils.getGroupDeepLoc(locMast0.getLocNo()))){ + return locMast0; + } + } + + } + return null; + } + //杩斿洖dto private StartupDto getLocNoStep6(Integer staDescId, Integer sourceStaNo, LocMast locMast) { StartupDto startupDto = new StartupDto(); -- Gitblit v1.9.1