自动化立体仓库 - WMS系统
#
LSH
2023-06-07 1af3b14449eb33792e606185c55643bca53efbb7
#
1个文件已修改
97 ■■■■■ 已修改文件
src/main/java/com/zy/common/service/CommonService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
@@ -156,37 +157,21 @@
        // 目标库位
        LocMast locMast = null;
        //3号可以入库前必须打开控制
//        if (!Cools.isEmpty(matNos)) {
//            for (String matNo : matNos) {
//                Mat mat = matService.selectByMatnr(matNo);
//                if (matType == null) {
//                    matType = mat.getMatType();
//                }
//                if (matType != mat.getMatType()) {
//                    throw new CoolException("混放物料类型不一致");
//                }
//            }
//
//            if (matNos.size() > 1 && matType == 1) {
//                //物料为单品类型,且物料种类超过1(实际为高频混放),则禁止入库
//                throw new CoolException("物料类型和实际种类不一致");
//            }
//        }
        boolean sign = false;
        // 靠近摆放规则 --- 空托
        locMast = getLocNoStep1(staDescId, locTypeDto, start, end);
        if (locMast != null) {
            //找到库位,返回dto
            return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//返回dto
            sign=true;
        }
        if (matType != null) {
        if (!sign && matType != null) {
            if (matType == 1) {//单品类型入库
                locMast = getLocNoStep2(locTypeDto, matNos, rows, crnNos);
                if (locMast != null) {
                    //找到库位,返回dto
                    return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//返回dto
                    sign=true;
                }
            } else if (matType == 2) {//高频类型入最外侧库位
                locMast = getLocNoStep3(locTypeDto, crnNos);
@@ -196,40 +181,66 @@
                }
                if (locMast != null) {
                    //找到库位,返回dto
                    return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//返回dto
                    sign=true;
                }
            } else if (matType == 3) {//低频混放类型
                locMast = getLocNoStep4(locTypeDto, crnNos);
                if (locMast != null) {
                    //找到库位,返回dto
                    return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//返回dto
                    sign=true;
                }
            }
        }
        //----------------2023.06.02兼容代码,后期库位规则符合要求后可删除------------------------
        //如果以上都找不到库位,则强制搜索1、2堆垛机空库位进行入库,保障3号堆垛机库位都是符合要求的
        EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
        wrapper.eq("loc_type1", locTypeDto.getLocType1());
        wrapper.in("crn_no", "1,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 (!sign){
            //----------------2023.06.02兼容代码,后期库位规则符合要求后可删除------------------------
            //如果以上都找不到库位,则强制搜索1、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()>7)
                {
                    continue;
                }
                if(sourceStaNo==203 && mast.getRow1()<8)
                {
                    continue;
                }
                //找到库位,返回dto
                locMast=mast;
                sign = true;
            }
            if(sourceStaNo==103 && mast.getRow1()>7)
            {
                continue;
        }
        if (sign){
            //3号可以入库前必须打开控制
            if (!Cools.isEmpty(matNos) && locMast.getCrnNo()==3) {
                for (String matNo : matNos) {
                    Mat mat = matService.selectByMatnr(matNo);
                    if (matType == null) {
                        matType = mat.getMatType();
                    }
                    if (!matType.equals(mat.getMatType())) {
                        throw new CoolException("混放物料类型不一致");
                    }
                }
                if (matNos.size() > 1 && matType == 1) {
                    //物料为单品类型,且物料种类超过1(实际为高频混放),则禁止入库
                    throw new CoolException("物料类型和实际种类不一致");
                }
            }
            if(sourceStaNo==203 && mast.getRow1()<8)
            {
                continue;
            }
            //找到库位,返回dto
            return getLocNoFinalStep(staDescId, sourceStaNo, mast);//返回dto
            return getLocNoFinalStep(staDescId, sourceStaNo, locMast);//返回dto
        }
        //----------------2023.06.02兼容代码end---------------------