| | |
| | | @Resource |
| | | private LocMastMapper locMastMapper; |
| | | |
| | | public StartupDto getLocNoNew(int ioType, Integer sourceStaNo, Integer locType, List<Integer> rows) { |
| | | public StartupDto getLocNoNew(int ioType, Integer sourceStaNo, Integer locType, List<Integer> rows, int sortRole) { |
| | | // 寻找到的库位 |
| | | LocMast locMast = null; |
| | | |
| | |
| | | m -> ((Number) m.get("cnt")).intValue() |
| | | )); |
| | | |
| | | // 所有满足条件的库位 |
| | | List<LocMast> allLocs = locMastMapper.selectList( |
| | | new EntityWrapper<LocMast>() |
| | | Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>() |
| | | .eq("loc_type1", locType) |
| | | .eq("loc_sts" ,'O') |
| | | .in("crn_no", basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList())) |
| | | .last("ORDER BY CASE WHEN row1 IN (1,4,5,8,9,12) THEN 0 ELSE 1 END, lev1, bay1, row1") |
| | | ); |
| | | .in("crn_no", basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList())); |
| | | if(sortRole == 0) { |
| | | wrapper.last("ORDER BY CASE WHEN row1 IN (1,4,5,8,9,12) THEN 0 ELSE 1 END, lev1, bay1, row1"); |
| | | } else { |
| | | wrapper.last("ORDER BY CASE WHEN row1 IN (1,4,5,8,9,12) THEN 0 ELSE 1 END, lev1, bay1 desc, row1"); |
| | | } |
| | | |
| | | // 所有满足条件的库位 |
| | | List<LocMast> allLocs = locMastMapper.selectList(wrapper); |
| | | |
| | | // 按堆垛机分组 |
| | | Map<Integer, List<LocMast>> locMap = allLocs.stream() |
| | |
| | | if (availableCrn.isEmpty()) { |
| | | // 递归兼容 |
| | | if (locType >= 3) return null; |
| | | return getLocNoNew(ioType, sourceStaNo, locType + 1, rows); |
| | | return getLocNoNew(ioType, sourceStaNo, locType + 1, rows, sortRole); |
| | | } |
| | | |
| | | availableCrn.sort(Comparator.comparing(c -> countMap.getOrDefault(c.getCrnNo(), 0))); |
| | |
| | | // 获取浅库位 |
| | | String shallowLoc = Utils.getShallowLoc(slaveProperties, locNo); |
| | | LocMast shallow = locNoMap.get(shallowLoc); |
| | | // 浅库位无货 |
| | | if (shallow == null) { |
| | | // 浅库位是空库位,放深库位 |
| | | if (shallow != null) { |
| | | locMast = locMast1; |
| | | break; |
| | | } |
| | |
| | | |
| | | if (locMast == null) { |
| | | if (locType >= 3) return null; |
| | | return getLocNoNew(ioType, sourceStaNo, locType + 1, rows); |
| | | return getLocNoNew(ioType, sourceStaNo, locType + 1, rows, sortRole); |
| | | } |
| | | |
| | | // 根据入库类型和源站点获取工作路径 |