自动化立体仓库 - WMS系统
#
Administrator
2023-06-20 86edadcbd751392f00fc585bfc8e03f0f31fb10c
#
5个文件已修改
100 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -479,7 +479,7 @@
                    if (!locDetl.getMatnr().equals(matnr)) {
                        flag = true;
                        break;
                    }else if (ioWorkType.equals(IoWorkType.CHECK_OUT)){
                    }else if (!Cools.isEmpty(ioWorkType) && ioWorkType.equals(IoWorkType.CHECK_OUT)){
                        flag = true;
                        break;
                    }
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -71,11 +71,11 @@
                    if (!Cools.isEmpty(wrkMast.getBarcode())) {
                        // 保存入库通知档历史档
                        if (!waitPakinLogService.save(wrkMast.getBarcode())) {
                            exceptionHandle("保存入库通知档历史档[workNo={0}]失败", wrkMast.getWrkNo());
//                            exceptionHandle("保存入库通知档历史档[workNo={0}]失败", wrkMast.getWrkNo());
                        }
                        // 删除入库通知档
                        if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) {
                            exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo());
//                            exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo());
                        }
                    }
                    // 手动入库生成单据 【 上报三方平台 】
src/main/java/com/zy/asrs/utils/Utils.java
@@ -426,13 +426,13 @@
                }};
            case 7:
                return new ArrayList<String>() {{
                    add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
                    add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
                    add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
                }};
            case 8:
                return new ArrayList<String>() {{
                    add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
                    add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
                    add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
                }};
            case 9:
                return new ArrayList<String>() {{
@@ -450,8 +450,8 @@
                }};
            case 15:
                return new ArrayList<String>() {{
                    add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
                    add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
                    add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
                }};
            case 16:
                return new ArrayList<String>() {{
@@ -711,6 +711,27 @@
    }
    /**
     * 检测当前库位内侧其他库位是否为D、F、X
     * 返回true表示内侧库位不是DFX,返回false表示内侧库位是DFX
     */
    public static boolean checkInsideLocIsDFX2(String locNo) {
        LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
        List<String> insideLoc = Utils.getGroupInsideLoc(locNo);
        if (insideLoc.size() > 0) {
            List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc);
            for (LocMast mast : insideLocMast) {
                if (!mast.getLocSts().equals("D")
                        && !mast.getLocSts().equals("F")
                        && !mast.getLocSts().equals("X")) {
                    //D、F、X(不能选定这个外侧库位)
                    return true;
                }
            }
        }
        return false;
    }
    /**
     * 检测当前库位内侧其他库位是否为D、F、X、S
     * 返回true表示内侧库位不是DFX,返回false表示内侧库位是DFX
     */
src/main/java/com/zy/common/service/CommonService.java
@@ -17,6 +17,7 @@
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
@@ -125,7 +126,7 @@
                //103站分配1,2堆垛机
                crnNos.add(1);
                crnNos.add(2);
//                crnNos.add(2);
                //分配1,7,8,14排
                rows.add(1);
@@ -170,7 +171,7 @@
        }
        //3号可以入库前必须打开控制
        if (!Cools.isEmpty(matNos) && crnNo==3) {
        if (!Cools.isEmpty(matNos) && crnNo != 2) {
            for (String matNo : matNos) {
                Mat mat = matService.selectByMatnr(matNo);
                if (matType == null) {
@@ -222,28 +223,28 @@
        if (!sign){
            //----------------2023.06.02兼容代码,后期库位规则符合要求后可删除------------------------
            //如果以上都找不到库位,则强制搜索2堆垛机空库位进行入库,保障3号堆垛机库位都是符合要求的
            EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
            wrapper.eq("loc_type1", locTypeDto.getLocType1());
            wrapper.in("crn_no", "2");
            wrapper.eq("loc_sts", "O");
            List<LocMast> locMasts = locMastService.selectList(wrapper);
            for (LocMast mast : locMasts) {
                //检测当前库位内侧其他库位是否为D、F、X
                if (Utils.checkInsideLocIsDFX(mast.getLocNo())) {
                    //内侧其他库位不是D、F、X。不能选取该库位
                    continue;
                }
                if(sourceStaNo==103 && mast.getRow1()>14) continue;
                if(sourceStaNo==103 && mast.getRow1()<8) continue;
                if(sourceStaNo==203 && mast.getRow1()<15) continue;
                //找到库位,返回dto
                locMast=mast;
                sign = true;
            }
        }
//        if (!sign){
//            //----------------2023.06.02兼容代码,后期库位规则符合要求后可删除------------------------
//            //如果以上都找不到库位,则强制搜索2堆垛机空库位进行入库,保障3号堆垛机库位都是符合要求的
//            EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
//            wrapper.eq("loc_type1", locTypeDto.getLocType1());
//            wrapper.in("crn_no", "2");
//            wrapper.eq("loc_sts", "O");
//            List<LocMast> locMasts = locMastService.selectList(wrapper);
//            for (LocMast mast : locMasts) {
//                //检测当前库位内侧其他库位是否为D、F、X
//                if (Utils.checkInsideLocIsDFX(mast.getLocNo())) {
//                    //内侧其他库位不是D、F、X。不能选取该库位
//                    continue;
//                }
//                if(sourceStaNo==103 && mast.getRow1()>14) continue;
//                if(sourceStaNo==103 && mast.getRow1()<8) continue;
//                if(sourceStaNo==203 && mast.getRow1()<15) continue;
//                //找到库位,返回dto
//                locMast=mast;
//                sign = true;
//            }
//        }
        if (sign){
            return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//返回dto
@@ -332,7 +333,7 @@
                        // 浅库位对应堆垛机必须可用且无异常
                        if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
                            // 因库位移转、需预留空库位
                            if (locMastService.checkEmptyCount(locMast0, 10) && locMast0.getCrnNo()>=3) {
                            if (locMastService.checkEmptyCount(locMast0, 10) && locMast0.getCrnNo()!=2) {
                                locMast = locMast0;
                                break;
                            }
@@ -359,7 +360,7 @@
                    // 浅库位对应堆垛机必须可用且无异常
                    if (basCrnpService.checkSiteError(locMast0.getCrnNo(), true)) {
                        // 因库位移转、需预留空库位
                        if (locMastService.checkEmptyCount(locMast0, 10) && locMast0.getCrnNo()>=3) {
                        if (locMastService.checkEmptyCount(locMast0, 10) && locMast0.getCrnNo()!=2) {
                            locMast = locMast0;
                            break;
                        }
@@ -417,7 +418,7 @@
        List<LocMast> locMasts = locMastService.findEmptyLowFrequencyLocMast(locTypeDto.getLocType1(), randomCrnNo);
        for (LocMast locMast0 : locMasts) {
            //检测当前库位内侧其他库位是否为D、F、X
            if (Utils.checkInsideLocIsDFX(locMast0.getLocNo())) {
            if (Utils.checkInsideLocIsDFX2(locMast0.getLocNo())) {
                //内侧其他库位不是D、F、X。不能选取该库位
                continue;
            }
@@ -464,8 +465,14 @@
        StaDesc staDesc = staDescService.selectOne(wrapper);
        if (Cools.isEmpty(staDesc)) {
            log.error("入库路径不存在, staDescId={}, sourceStaNo={}, crnNo={}", staDescId, sourceStaNo, locMast.getCrnNo());
            if (sourceStaNo==103 &&  locMast.getCrnNo()==3){
                throw new CoolException("请放到203入库口");
            }else if (sourceStaNo==203 &&  locMast.getCrnNo()==1){
                throw new CoolException("请放到103入库口");
            }else {
            throw new CoolException("入库路径不存在");
        }
        }
        // 检测目标站
        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
  port: 8081
  port: 8080
  servlet:
    context-path: /@pom.build.finalName@
  compression:
@@ -13,8 +13,8 @@
    enabled: false
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
#    url: jdbc:sqlserver://10.10.10.100:1433;databasename=bfasrs
    url: jdbc:sqlserver://192.168.4.15:1433;databasename=bfasrs
    url: jdbc:sqlserver://10.10.10.100:1433;databasename=bfasrs
#    url: jdbc:sqlserver://192.168.4.15:1433;databasename=bfasrs
    username: sa
#    password: Zoneyung@zy56$
    password: sa@123