| | |
| | | package com.zy.common.service; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | StartupDto startupDto = null; |
| | | StringBuilder builder = new StringBuilder(); |
| | | try { |
| | | startupDto = searchLocNoByCrnNo(staDescId, sourceStaNo, findLocNoAttributeVo, locTypeDto); |
| | | startupDto = searchLocNoByCrnNo(staDescId, sourceStaNo, findLocNoAttributeVo, locTypeDto,barcode); |
| | | } catch (Exception e) { |
| | | builder.append(e.getMessage()).append(","); |
| | | } |
| | | |
| | | if(startupDto == null) { |
| | | builder.append("找不到空库位"); |
| | | builder.append("找不到空库位--->" + barcode); |
| | | throw new CoolException(builder.toString()); |
| | | } |
| | | |
| | |
| | | * @return locNo 检索到的库位号 |
| | | */ |
| | | @Transactional |
| | | public StartupDto searchLocNoByCrnNo(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto) { |
| | | public StartupDto searchLocNoByCrnNo(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, LocTypeDto locTypeDto,String barcode) { |
| | | LocMast locMast = null; |
| | | if (staDescId == 10) { |
| | | //搜索空托盘 |
| | | locMast = searchEmptyPallet(locTypeDto); |
| | | // locMast = searchEmptyPallet(locTypeDto); |
| | | locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","O").eq("barcode",barcode)); |
| | | |
| | | }else { |
| | | //满托盘 |
| | | locMast = searchMaxPallet(findLocNoAttributeVo, locTypeDto); |
| | | // locMast = searchMaxPallet(findLocNoAttributeVo, locTypeDto); |
| | | locMast = locMastService.selectOne(new EntityWrapper<LocMast>().in("loc_sts","O","P").eq("barcode",barcode)); |
| | | } |
| | | |
| | | if(locMast == null) { |
| | |
| | | |
| | | StartupDto startupDto = new StartupDto(); |
| | | |
| | | // // 获取目标站 |
| | | // 获取目标站 |
| | | // 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)) { |
| | |
| | | List<String> locNos = locDetlService.getSameDetlList(findLocNoAttributeVo.getMatnr()); |
| | | for (String locNo : locNos) { |
| | | //获取通道组 |
| | | List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(locNo)); |
| | | List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo); |
| | | for (Integer row : locRowGroupDesc) { |
| | | String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo)); |
| | | LocMast deepLoc = locMastService.selectById(deepLocNo); |
| | | if (deepLoc == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (deepLoc.getLocSts().equals("F")) { |
| | | continue; |
| | | } else if (deepLoc.getLocSts().equals("O")) { |
| | |
| | | |
| | | if(targetLocMast == null) { |
| | | //相近物料匹配失败,搜索可用空库位组 |
| | | List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("loc_sts", "O") |
| | | .orderBy("lev1", true) |
| | | .orderBy("bay1", true)); |
| | | for (LocMast locMast : locMasts) { |
| | | String locNo = locMast.getLocNo(); |
| | | //获取通道组 |
| | | List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(locNo)); |
| | | |
| | | boolean flag = true; |
| | | for (Integer row : locRowGroupDesc) { |
| | | String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo)); |
| | | LocMast deepLoc = locMastService.selectById(deepLocNo); |
| | | if (!deepLoc.getLocSts().equals("O")) { |
| | | flag = false; |
| | | //获取设备楼层 |
| | | List<Integer> levList = basCrnpService.getLevList(); |
| | | Collections.shuffle(levList); |
| | | |
| | | List<Integer> locLevList = locMastService.getLevList(); |
| | | levList.addAll(locLevList); |
| | | |
| | | for (Integer lev : levList) { |
| | | List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("loc_sts", "O") |
| | | .eq("lev1", lev) |
| | | .orderBy("bay1", true)); |
| | | for (LocMast locMast : locMasts) { |
| | | String locNo = locMast.getLocNo(); |
| | | //获取通道组 |
| | | List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo); |
| | | |
| | | boolean flag = true; |
| | | for (Integer row : locRowGroupDesc) { |
| | | String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo)); |
| | | LocMast deepLoc = locMastService.selectById(deepLocNo); |
| | | if (deepLoc == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (!deepLoc.getLocSts().equals("O")) { |
| | | flag = false; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (flag) { |
| | | for (Integer row : locRowGroupDesc) { |
| | | String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo)); |
| | | LocMast deepLoc = locMastService.selectById(deepLocNo); |
| | | if (deepLoc == null) { |
| | | continue; |
| | | } |
| | | |
| | | targetLocMast = deepLoc; |
| | | break; |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (flag) { |
| | | Integer firstRow = locRowGroupDesc.get(0); |
| | | String deepLocNo = Utils.getLocNo(firstRow, Utils.getBay(locNo), Utils.getLev(locNo)); |
| | | LocMast deepLoc = locMastService.selectById(deepLocNo); |
| | | targetLocMast = deepLoc; |
| | | if (targetLocMast != null) { |
| | | break; |
| | | } |
| | | } |
| | |
| | | for (LocMast locMast : locMastsD) { |
| | | String locNo = locMast.getLocNo(); |
| | | //获取通道组 |
| | | List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(locNo)); |
| | | List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo); |
| | | for (Integer row : locRowGroupDesc) { |
| | | String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo)); |
| | | LocMast deepLoc = locMastService.selectById(deepLocNo); |
| | | if (deepLoc == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (deepLoc.getLocSts().equals("F")) { |
| | | continue; |
| | | } else if (deepLoc.getLocSts().equals("O")) { |
| | |
| | | } |
| | | |
| | | if(targetLocMast == null) { |
| | | //相近物料匹配失败,搜索可用空库位组 |
| | | List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("loc_sts", "O") |
| | | .orderBy("lev1", true) |
| | | .orderBy("bay1", true)); |
| | | for (LocMast locMast : locMasts) { |
| | | String locNo = locMast.getLocNo(); |
| | | //获取通道组 |
| | | List<Integer> locRowGroupDesc = Utils.getLocRowGroupDesc(slaveProperties, Utils.getRow(locNo)); |
| | | |
| | | boolean flag = true; |
| | | for (Integer row : locRowGroupDesc) { |
| | | String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo)); |
| | | LocMast deepLoc = locMastService.selectById(deepLocNo); |
| | | if (!deepLoc.getLocSts().equals("O")) { |
| | | flag = false; |
| | | //获取设备楼层 |
| | | List<Integer> levList = basCrnpService.getLevList(); |
| | | Collections.shuffle(levList); |
| | | |
| | | List<Integer> locLevList = locMastService.getLevList(); |
| | | levList.addAll(locLevList); |
| | | |
| | | for (Integer lev : levList) { |
| | | //相近物料匹配失败,搜索可用空库位组 |
| | | List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("loc_sts", "O") |
| | | .eq("lev1", lev) |
| | | .orderBy("bay1", true)); |
| | | for (LocMast locMast : locMasts) { |
| | | String locNo = locMast.getLocNo(); |
| | | //获取通道组 |
| | | List<Integer> locRowGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo); |
| | | |
| | | boolean flag = true; |
| | | for (Integer row : locRowGroupDesc) { |
| | | String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo)); |
| | | LocMast deepLoc = locMastService.selectById(deepLocNo); |
| | | if (deepLoc == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (!deepLoc.getLocSts().equals("O")) { |
| | | flag = false; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (flag) { |
| | | for (Integer row : locRowGroupDesc) { |
| | | String deepLocNo = Utils.getLocNo(row, Utils.getBay(locNo), Utils.getLev(locNo)); |
| | | LocMast deepLoc = locMastService.selectById(deepLocNo); |
| | | if (deepLoc == null) { |
| | | continue; |
| | | } |
| | | |
| | | targetLocMast = deepLoc; |
| | | break; |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (flag) { |
| | | targetLocMast = locMast; |
| | | if (targetLocMast != null) { |
| | | break; |
| | | } |
| | | } |
| | | |
| | | } |
| | | return targetLocMast; |
| | | } |