| | |
| | | return workNo; |
| | | } |
| | | |
| | | 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 matNos 物料号集合 |
| | | * @return locNo 检索到的库位号 |
| | | */ |
| | | public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, Integer matTypeIn) { |
| | | 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;//物料类型 |
| | |
| | | |
| | | 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); |
| | | } |
| | | //找到库位,返回dto |
| | | 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); |
| | | } |
| | | //找到库位,返回dto |
| | | 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); |
| | | } |
| | | //找到库位,返回dto |
| | | 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); |
| | | } |
| | | //找到库位,返回dto |
| | | sign=true; |
| | | } |
| | |
| | | |
| | | if (sign){ |
| | | return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//返回dto |
| | | } |
| | | if (!locMastList.isEmpty()){ |
| | | return getLocNoFinalStep(staDescId, sourceStaNo, locMastList.get(0));//返回dto |
| | | } |
| | | //----------------2023.06.02兼容代码end--------------------- |
| | | |
| | |
| | | } |
| | | |
| | | //单品类型入库 |
| | | 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; |
| | | //先找工作档 |
| | | |
| | |
| | | //随机可用堆垛机号 |
| | | 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) { |
| | |
| | | if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { |
| | | // 因库位移转、需预留空库位 |
| | | if (locMastService.checkEmptyCount(locMast0, 5)) { |
| | | if (!locMastList.contains(locMast0)){ |
| | | locMast = locMast0; |
| | | break; |
| | | break loc; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | //找内侧空库位(非最外侧库位) |
| | | 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); |
| | |
| | | if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { |
| | | // 因库位移转、需预留空库位 |
| | | if (locMastService.checkEmptyCount(locMast0, 5)) { |
| | | if (!locMastList.contains(locMast0)){ |
| | | locMast = locMast0; |
| | | break; |
| | | break loc; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { |
| | | // 因库位移转、需预留空库位 |
| | | if (locMastService.checkEmptyCount(locMast0, 5)) { |
| | | if (!locMastList.contains(locMast0)){ |
| | | locMast = locMast0; |
| | | flag = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { |
| | | // 因库位移转、需预留空库位 |
| | | if (locMastService.checkEmptyCount(locMast0, 5)) { |
| | | if (!locMastList.contains(locMast0)){ |
| | | locMast = locMast0; |
| | | flag = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | //高频类型入最外侧库位 |
| | | private LocMast getLocNoStep3(LocTypeDto locTypeDto, List<Integer> crnNos) { |
| | | private LocMast getLocNoStep3(LocTypeDto locTypeDto, List<Integer> crnNos,List<LocMast> locMastList) { |
| | | LocMast locMast = null; |
| | | |
| | | //随机可用堆垛机号 |
| | |
| | | if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) { |
| | | // 因库位移转、需预留空库位 |
| | | if (locMastService.checkEmptyCount(locMast0, 5)) { |
| | | if (!locMastList.contains(locMast0)){ |
| | | locMast = locMast0; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | crns.add(crnNo); |
| | | } |
| | | if (!crns.isEmpty()) { |
| | | return getLocNoStep3(locTypeDto, crns); |
| | | return getLocNoStep3(locTypeDto, crns,locMastList); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | //低频类型,直接找混放区域 |
| | | private LocMast getLocNoStep4(LocTypeDto locTypeDto, List<Integer> crnNos) { |
| | | private LocMast getLocNoStep4(LocTypeDto locTypeDto, List<Integer> crnNos,List<LocMast> locMastList) { |
| | | LocMast locMast = null; |
| | | |
| | | //随机可用堆垛机号 |
| | |
| | | if (!locMast1.getLocSts().equals("O") && !locMast0.getRow1().equals(outermostRow)){ |
| | | // 因库位移转、需预留空库位 |
| | | if (locMastService.checkEmptyCount0(locMast0, 5)) { |
| | | if (!locMastList.contains(locMast0)){ |
| | | locMast = locMast0; |
| | | break; |
| | | } |
| | | } |
| | | }else { |
| | | if (!locMastList.contains(locMast0)){ |
| | | locMast = locMast0; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | crns.add(crnNo); |
| | | } |
| | | if (!crns.isEmpty()) { |
| | | return getLocNoStep4(locTypeDto, crns); |
| | | return getLocNoStep4(locTypeDto, crns,locMastList); |
| | | } |
| | | } |
| | | |