自动化立体仓库 - WMS系统
18516761980
2021-12-09 2d9ee3c33e909a14f3a6729cacc114335e8023c8
src/main/java/com/zy/common/service/CommonService.java
@@ -49,7 +49,7 @@
    /**
     * 生成工作号
     * @param wrkMk 0:入出库 ; 1:其他
     * @param wrkMk 0:入库 ; 1:出库;2拣选
     * @return workNo(工作号)
     */
    public int getWorkNo(Integer wrkMk) {
@@ -59,7 +59,7 @@
        }
        int workNo = 0;
        // 入出库类型
        if (wrkLastno.getWrkMk() == 0) {
        if (wrkLastno.getWrkMk() == 0 || wrkLastno.getWrkMk() == 1 || wrkLastno.getWrkMk() == 2) {
            workNo = wrkLastno.getWrkNo();
            int sNo = wrkLastno.getSNo();
            int eNo = wrkLastno.getENo();
@@ -105,11 +105,15 @@
    public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, boolean emptyMk, List<String> matNos, LocTypeDto locTypeDto, LocTypeDto oldLocType, int times) {
        StartupDto startupDto = new StartupDto();
        // 生成工作号
        if (sourceStaNo == 103) {
        int crnNo = 0;
        if (sourceStaNo < 200) {
            whsType = 1;
        } else if (sourceStaNo == 203) {
            crnNo=1;
        } else if (sourceStaNo >= 200) {
            whsType = 2;
            crnNo=2;
        }
        int workNo = getWorkNo(0);
        RowLastno rowLastno = rowLastnoService.selectById(whsType);
        if (Cools.isEmpty(rowLastno)) {
@@ -121,12 +125,12 @@
        int crn_qty = rowLastno.getCrnQty();     // 堆垛机数量(巷道数量)
        int rowCount = eRow - sRow + 1;          // 库排总数
        // 目标堆垛机号
        int crnNo = 0;
//        int crnNo = 0;
        // 目标库位
        LocMast locMast = null;
        // 靠近摆放规则 --- 同天同规格物料
        if (!Cools.isEmpty(matNos)) {
        if (!Cools.isEmpty(matNos) && sourceStaNo < 200) {
            List<String> locNos = locDetlService.getSameDetlToday(matNos.get(0), sRow, eRow);
            for (String locNo : locNos) {
                if (Utils.isShallowLoc(slaveProperties, locNo)) {
@@ -153,7 +157,14 @@
        }
        // 靠近摆放规则 --- 空托
        if (emptyMk) {
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
//            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
            List<LocMast> locMasts = null;
            if(crnNo==1) {
                locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("row1", 1));
            } else {
                locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
            }
            if (locMasts.size() > 0) {
                for (LocMast loc : locMasts) {
                    if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) {
@@ -181,20 +192,26 @@
        if (null == locMast) {
            Shelves shelves = new Shelves(rowCount, crn_qty);
            if (whsType == 1) {
                for (int i = 0; i < shelves.group; i ++) {
                    curRow = shelves.start(curRow);
                    if (curRow < 0) {
                        throw new CoolException("检索库位失败,请联系管理员");
                    }
                    Integer crnNo1 = shelves.getCrnNo(curRow);
                    if (basCrnpService.checkSiteError(crnNo1, true)) {
                        crnNo = crnNo1;
                        if (curRow == 3 || curRow == 4) {
                            curRow = 3;
                        }
                        break;
                    }
                curRow = curRow + 1;
                if (curRow > eRow) {
                    curRow = sRow;
                }
                crnNo = whsType;
                basCrnpService.checkSiteStatus(crnNo, true);
//                for (int i = 0; i < shelves.group; i ++) {
//                    curRow = shelves.start(curRow);
//                    if (curRow < 0) {
//                        throw new CoolException("检索库位失败,请联系管理员");
//                    }
//                    Integer crnNo1 = shelves.getCrnNo(curRow);
//                    if (basCrnpService.checkSiteError(crnNo1, true)) {
//                        crnNo = crnNo1;
//                        if (curRow == 3 || curRow == 4) {
//                            curRow = 3;
//                        }
//                        break;
//                    }
//                }
            } else if (whsType == 2) {
                if (curRow == sRow) {
                    curRow = eRow;
@@ -235,15 +252,38 @@
        // 1.当检索库排为浅库位排时,优先寻找当前库排的深库位排
        if (locMast == null) {
            if (Utils.isShallowLoc(slaveProperties, curRow)) {
                Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
                locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                Integer deepRow = 0;
                if(curRow == 2) {
                    deepRow = Utils.getDeepRow(slaveProperties, curRow);
                } else {
                    deepRow = curRow;
                }
                if(emptyMk){
                    locMast = locMastService.queryFreeLocMastIncludeFirst(deepRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                    if (Cools.isEmpty(locMast)){
                        locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                    }
                } else {
                    locMast = locMastService.queryFreeLocMastExceptFirst(deepRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                }
//                locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                // 因库位移转、需预留空库位
                if (!locMastService.checkEmptyCount(locMast)) {
                    locMast = null;
                }
            }
            if (Cools.isEmpty(locMast)) {
                locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                if(emptyMk){
                    locMast = locMastService.queryFreeLocMastIncludeFirst(curRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                    if (Cools.isEmpty(locMast)){
                        locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                    }
                } else {
                    locMast = locMastService.queryFreeLocMastExceptFirst(curRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                }
//                locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1(), locTypeDto.getLocType2(), locTypeDto.getLocType3());
                // 因库位移转、需预留空库位
                if (!locMastService.checkEmptyCount(locMast)) {
                    locMast = null;
@@ -420,6 +460,7 @@
//        startupDto.setLocNo(locNo);
//        return startupDto;
//    }
//出深库位托盘
    public static void main(String[] args) {
        System.out.println(Arith.remainder(1, 4));