自动化立体仓库 - WMS系统
#
Junjie
2023-09-09 3ada754b60571bfa156c2e61df8ddea7ccc496fb
#
5个文件已修改
192 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -15,6 +15,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -70,7 +71,28 @@
    @Override
    public Boolean isOutMost(String locNo, Boolean pakin) {
        return Integer.parseInt(locNo.substring(0, 2)) == Utils.getOutLayerRow(locNo, pakin);
        int row = Utils.getRow(locNo);
        int bay = Utils.getBay(locNo);
        ArrayList<Integer> list = new ArrayList<Integer>(){{
            add(1);add(3);add(4);add(6);
            add(8);add(10);add(11);
        }};
        if (list.contains(row)) {
            return true;//最外侧库位
        }
        if (row == 13 && (bay >= 59 && bay <= 61)) {
            return true;//最外侧库位
        }
        if (bay < 59) {
            if (row == 13 || row == 14 || row == 16) {
                return true;//最外侧库位
            }
        }
        return false;//不是最外侧库位
    }
    public static void main(String[] args) {
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -190,9 +190,9 @@
                }
            }
            List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo);
            if (!Cools.isEmpty(groupInsideLoc)) {
                for (String insideLoc : groupInsideLoc) {
            List<String> groupInnerLoc = Utils.getGroupInnerLoc(locNo);
            if (!Cools.isEmpty(groupInnerLoc)) {
                for (String insideLoc : groupInnerLoc) {
                    if (locNos.contains(insideLoc)){
                        continue;
                    }
@@ -554,9 +554,9 @@
            if (sign){
                break;
            }
            List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo);
            if (!Cools.isEmpty(groupInsideLoc)) {
                for (String insideLoc : groupInsideLoc) {
            List<String> groupInnerLoc = Utils.getGroupInnerLoc(locNo);
            if (!Cools.isEmpty(groupInnerLoc)) {
                for (String insideLoc : groupInnerLoc) {
                    if (locNos.contains(insideLoc)){
                        continue;
                    }
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -49,55 +49,29 @@
        if (ioType != 11) {
            // 入库
            if (ioType < 100) {
                List<String> groupOuterLoc = Utils.getGroupOuterLocIoPri(locNo);
                if (!Cools.isEmpty(groupOuterLoc)) {
                    for (String outerLoc : groupOuterLoc) {
                        WrkMast wrkMast = this.baseMapper.selectByLocNoOfPakin(outerLoc);
                List<String> groupInnerLoc = Utils.getGroupInnerLoc(locNo);
                if (!Cools.isEmpty(groupInnerLoc)) {
                    for (String innerLoc : groupInnerLoc) {
                        WrkMast wrkMast = this.baseMapper.selectByLocNoOfPakin(innerLoc);
                        if (wrkMast != null) {
                            defaultIoPri = wrkMast.getIoPri() - 2;
//                            defaultIoPri = defaultIoPri == null ? wrkMast.getIoPri() - 2 : defaultIoPri - 2;
                        }
                    }
                }
                List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo);
                if (!Cools.isEmpty(groupInsideLoc)) {
                    for (String insideLoc : groupInsideLoc) {
                        WrkMast wrkMast = this.baseMapper.selectByLocNoOfPakin(insideLoc);
                        if (wrkMast != null) {
                            defaultIoPri = wrkMast.getIoPri() + 2;
//                            defaultIoPri = defaultIoPri == null ? wrkMast.getIoPri() + 2 : defaultIoPri + 2;
                        }
                    }
                }
            // 出库
            } else {
                List<String> groupOuterLoc = Utils.getGroupInsideLoc(locNo);
                List<String> groupOuterLoc = Utils.getGroupOuterLoc(locNo);
                if (!Cools.isEmpty(groupOuterLoc)) {
                    for (String outerLoc : groupOuterLoc) {
                        WrkMast wrkMast = this.baseMapper.selectBySourceLocNoOfPakout(outerLoc);
                        if (wrkMast != null) {
                            defaultIoPri = wrkMast.getIoPri() - 2;
                            break;
//                            defaultIoPri = defaultIoPri == null ? wrkMast.getIoPri() - 2 : defaultIoPri - 2;
                        }
                    }
                }
                List<String> groupInsideLoc = Utils.getGroupOuterLocIoPri(locNo);
                if (!Cools.isEmpty(groupInsideLoc)) {
                    for (String insideLoc : groupInsideLoc) {
                        WrkMast wrkMast = this.baseMapper.selectBySourceLocNoOfPakout(insideLoc);
                        if (wrkMast != null) {
                            defaultIoPri = wrkMast.getIoPri() + 2;
//                            defaultIoPri = defaultIoPri == null ? wrkMast.getIoPri() + 2 : defaultIoPri + 2;
                        }
                    }
                }
            }
        // 移库
        } else {
//            @Deprecated
        }
        return defaultIoPri == null ? 300.0D : defaultIoPri;
        return defaultIoPri == null ? 100.0D : defaultIoPri;
    }
    @Override
src/main/java/com/zy/asrs/utils/Utils.java
@@ -181,17 +181,6 @@
        return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2);
    }
    public static Integer getOutLayerRow(String locNo, Boolean pakin){
        int row = getRow(locNo);
        if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
            return 4;
        } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {
            return 5;
        } else {
            return -1;
        }
    }
    /**
     * 获取库位组
     * @param locNo 库位号
@@ -259,7 +248,7 @@
    }
    public static void main(String[] args) {
        System.out.println(JSON.toJSONString(getGroupInnerLoc("1605909")));
        System.out.println(JSON.toJSONString(getGroupLoc("0703409")));
    }
    /**
@@ -358,105 +347,6 @@
            return new ArrayList<>();
        }
        throw new RuntimeException("库位解析异常");
    }
    // 外侧方向的货位  优先入库方向/优先出库方向
    public static List<String> getGroupOuterLocIoPri(String locNo){
//        int row = getRow(locNo);
//        List<String> result = new ArrayList<>();
//        if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
//            for (Integer integer : CommonService.FIRST_GROUP_ROW_LIST) {
//                if (integer < row) {
//                    result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
//                } else {
//                    break;
//                }
//            }
//        } else if (CommonService.FIRST_GROUP_ROW_LIST_SHORT.contains(row)){
//            for (Integer integer : CommonService.FIRST_GROUP_ROW_LIST_SHORT) {
//                if (integer < row) {
//                    result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
//                } else {
//                    break;
//                }
//            }
//        } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)){
//            for (Integer integer : CommonService.SECOND_GROUP_ROW_LIST) {
//                if (integer < row) {
//                    result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
//                } else {
//                    break;
//                }
//            }
//        } else if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)){
//            List<Integer> clone = Arrays.asList(new Integer[CommonService.THIRD_GROUP_ROW_LIST.size()]);
//            Collections.copy(clone, CommonService.THIRD_GROUP_ROW_LIST);
//            Collections.reverse(clone);
//            for (Integer integer : clone) {
//                if (integer > row) {
//                    result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
//                } else {
//                    break;
//                }
//            }
//        }
//        return result;
        return null;
    }
    // 内侧方向的货位  优先入库方向/优先出库方向 ===>> 反之
    public static List<String> getGroupInsideLoc(String locNo){
//        int row = getRow(locNo);
//        List<String> result = new ArrayList<>();
//        if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
//            List<Integer> clone = Arrays.asList(new Integer[CommonService.FIRST_GROUP_ROW_LIST.size()]);
//            Collections.copy(clone, CommonService.FIRST_GROUP_ROW_LIST);
//            Collections.reverse(clone);
//            for (Integer integer : clone) {
//                if (integer > row) {
//                    result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
//                } else {
//                    break;
//                }
//            }
//        } else if (CommonService.FIRST_GROUP_ROW_LIST_SHORT.contains(row)) {
//            List<Integer> clone = Arrays.asList(new Integer[CommonService.FIRST_GROUP_ROW_LIST_SHORT.size()]);
//            Collections.copy(clone, CommonService.FIRST_GROUP_ROW_LIST_SHORT);
//            Collections.reverse(clone);
//            for (Integer integer : clone) {
//                if (integer > row) {
//                    result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
//                } else {
//                    break;
//                }
//            }
//        } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {
//            List<Integer> clone = Arrays.asList(new Integer[CommonService.SECOND_GROUP_ROW_LIST.size()]);
//            Collections.copy(clone, CommonService.SECOND_GROUP_ROW_LIST);
//            Collections.reverse(clone);
//            for (Integer integer : clone) {
//                if (integer > row) {
//                    result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
//                } else {
//                    break;
//                }
//            }
//        } else if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) {
//            for (Integer integer : CommonService.THIRD_GROUP_ROW_LIST) {
//                if (integer < row) {
//                    result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
//                } else {
//                    break;
//                }
//            }
//        } else {
////            throw new RuntimeException("库位解析异常");
//        }
//        if (!Cools.isEmpty(result)) {
//            Collections.reverse(result);
//        }
//        return result;
        return null;
    }
}
src/main/java/com/zy/common/service/CommonService.java
@@ -344,9 +344,9 @@
        // 1.当检索库排为浅库位排时,优先寻找当前库排的深库位排
        List<LocMast> peakLocs = locMastService.selectAllPeakLoc();
        for (LocMast peakLoc : peakLocs) {
            List<String> groupInsideLoc = Utils.getGroupInsideLoc(peakLoc.getLocNo());
            if (!Cools.isEmpty(groupInsideLoc)) {
                if (!locMastService.checkAllLocEmpty(groupInsideLoc)) continue;
            List<String> groupInnerLoc = Utils.getGroupInnerLoc(peakLoc.getLocNo());
            if (!Cools.isEmpty(groupInnerLoc)) {
                if (!locMastService.checkAllLocEmpty(groupInnerLoc)) continue;
                locMast = peakLoc;
                break;
            } else {