自动化立体仓库 - WMS系统
pang.jiabao
8 天以前 8407e277e156a55fee38e7bb7b8930ec16a15f0e
src/main/java/com/zy/common/service/CommonService.java
@@ -1030,7 +1030,7 @@
    @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;
@@ -1057,14 +1057,18 @@
                        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()
@@ -1078,7 +1082,7 @@
        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)));
@@ -1098,8 +1102,8 @@
                    // 获取浅库位
                    String shallowLoc = Utils.getShallowLoc(slaveProperties, locNo);
                    LocMast shallow = locNoMap.get(shallowLoc);
                    // 浅库位无货
                    if (shallow == null) {
                    // 浅库位是空库位,放深库位
                    if (shallow != null) {
                        locMast = locMast1;
                        break;
                    }
@@ -1124,7 +1128,7 @@
        if (locMast == null) {
            if (locType >= 3) return null;
            return getLocNoNew(ioType, sourceStaNo, locType + 1, rows);
            return getLocNoNew(ioType, sourceStaNo, locType + 1, rows, sortRole);
        }
        // 根据入库类型和源站点获取工作路径