自动化立体仓库 - WMS系统
#
zjj
2025-01-27 1d471a9b8269525a8f95dc51f587aa6c3a3bda2f
#
1个文件已修改
87 ■■■■ 已修改文件
src/main/java/com/zy/common/service/CommonService.java 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java
@@ -50,6 +50,7 @@
    /**
     * 生成工作号
     *
     * @param wrkMk
     * @return workNo(工作号)
     */
@@ -62,17 +63,17 @@
        int workNo = wrkLastno.getWrkNo();
        int sNo = wrkLastno.getSNo();
        int eNo = wrkLastno.getENo();
        workNo = workNo>=eNo ? sNo : workNo+1;
        workNo = workNo >= eNo ? sNo : workNo + 1;
        while (true) {
            WrkMast wrkMast = wrkMastService.selectById(workNo);
            if (null != wrkMast) {
                workNo = workNo>=eNo ? sNo : workNo+1;
                workNo = workNo >= eNo ? sNo : workNo + 1;
            } else {
                break;
            }
        }
        // 修改序号记录
        if (workNo > 0){
        if (workNo > 0) {
            wrkLastno.setWrkNo(workNo);
            wrkLastnoService.updateById(wrkLastno);
        }
@@ -80,7 +81,7 @@
        if (workNo == 0) {
            throw new CoolException("生成工作号失败,请联系管理员");
        } else {
            if (wrkMastService.selectById(workNo)!=null) {
            if (wrkMastService.selectById(workNo) != null) {
                throw new CoolException("生成工作号" + workNo + "在工作档中已存在");
            }
        }
@@ -89,10 +90,10 @@
    /**
     * 检索库位号
     * @param whsType 类型 1:双深式货架
     * @param staDescId 路径工作类型
     *
     * @param whsType     类型 1:双深式货架
     * @param staDescId   路径工作类型
     * @param sourceStaNo 源站
     * @return locNo 检索到的库位号
     */
    @Transactional
@@ -115,7 +116,7 @@
//        }
        // 靠近摆放规则 --- 相同订单号, 同天同规格物料
        locMast = getLocNoStep3(staDescId, matnr, batch, grade, locTypeDto,sourceStaNo);
        locMast = getLocNoStep3(staDescId, matnr, batch, grade, locTypeDto, sourceStaNo);
        if (locMast != null) {
            //找到库位,返回dto
            return getLocNoStep6(staDescId, sourceStaNo, locMast);//返回dto
@@ -134,43 +135,49 @@
    }
    // 搜索单品(整个库位组)
    private LocMast getLocNoStepSingle(LocTypeDto locTypeDto,Integer sourceStaNo) {
    private LocMast getLocNoStepSingle(LocTypeDto locTypeDto, Integer sourceStaNo) {
        LocMast locMast = null;
        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", 1).eq("stn_no", sourceStaNo));
        //单品
        List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(),staDesc.getCrnNo());//搜索货物
        List<StaDesc> staDescs = staDescService.selectList(new EntityWrapper<StaDesc>().eq("type_no", 1).eq("stn_no", sourceStaNo));
        for (LocMast mast : locMasts) {
            LocMast tmp = null;
            boolean groupLoc = Utils.isShallowLoc(slaveProperties,mast.getLocNo());
            if (groupLoc) {
                String shallowLoc = Utils.getDeepLoc(slaveProperties, mast.getLocNo());
                LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
                        .eq("loc_no", shallowLoc));
                if (!Cools.isEmpty(locMast2)) {
                    if (locMast2.getLocSts().equals("F") || locMast2.getLocSts().equals("D")){
                        tmp = mast;
        for (StaDesc staDesc : staDescs) {
            //单品
            List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), staDesc.getCrnNo());//搜索货物
            for (LocMast mast : locMasts) {
                LocMast tmp = null;
                boolean groupLoc = Utils.isShallowLoc(slaveProperties, mast.getLocNo());
                if (groupLoc) {
                    String shallowLoc = Utils.getDeepLoc(slaveProperties, mast.getLocNo());
                    LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>()
                            .eq("loc_no", shallowLoc));
                    if (!Cools.isEmpty(locMast2)) {
                        if (locMast2.getLocSts().equals("F") || locMast2.getLocSts().equals("D")) {
                            tmp = mast;
                            if (!Cools.isEmpty(mast)) {
                                if (mast.getLocSts().equals("O")) {
                                    tmp = mast;
                                }
                            }
                        }
                        //预留空库位
                        if (tmp != null && locMastService.checkEmptyCount(mast, 10)) {
                            locMast = tmp;
                            break;
                        }
                    }
                }
            }else {
                if (!Cools.isEmpty(mast)) {
                    if (mast.getLocSts().equals("O")){
                        tmp = mast;
                    }
                }
            }
            //预留空库位
            if (tmp != null && locMastService.checkEmptyCount(mast, 10)) {
                locMast = tmp;
                break;
                return locMast;
            }
        }
        return locMast;
    }
    // 靠近摆放规则 --- 相同订单号, 同天同规格物料
    private LocMast getLocNoStep3(Integer staDescId, String matnr, String batch, String grade, LocTypeDto locTypeDto,Integer sourceStaNo) {
    private LocMast getLocNoStep3(Integer staDescId, String matnr, String batch, String grade, LocTypeDto
            locTypeDto, Integer sourceStaNo) {
        LocMast locMast = null;
        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", 1).eq("stn_no", sourceStaNo));
        if (staDescId == 1) {
@@ -179,7 +186,7 @@
            for (WrkMast wrkMast : wrkMasts) {
                LocMast locMast0 = locMastService.findNearloc(wrkMast.getLocNo());
                if (null != locMast0) {
                    if (!staDesc.getCrnNo().equals(locMast0.getCrnNo())){
                    if (!staDesc.getCrnNo().equals(locMast0.getCrnNo())) {
                        continue;
                    }
                    // 浅库位符合尺寸检测
@@ -194,7 +201,7 @@
                for (String locNo : locNos) {
                    LocMast locMast0 = locMastService.findNearloc(locNo);
                    if (null != locMast0) {
                        if (!staDesc.getCrnNo().equals(locMast0.getCrnNo())){
                        if (!staDesc.getCrnNo().equals(locMast0.getCrnNo())) {
                            continue;
                        }
                        // 浅库位符合尺寸检测
@@ -218,7 +225,7 @@
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", staDescId)
                .eq("stn_no", sourceStaNo)
                .eq("crn_no",locMast.getCrnNo());
                .eq("crn_no", locMast.getCrnNo());
        StaDesc staDesc = staDescService.selectOne(wrapper);
        if (Cools.isEmpty(staDesc)) {
            log.error("入库路径不存在, staDescId={}, sourceStaNo={}", staDescId, sourceStaNo);
@@ -259,7 +266,7 @@
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                    .eq("loc_sts", "O")
                    .eq("crn_no", staDesc.getCrnNo())
                    .eq("loc_type1",locTypeDto.getLocType1())
                    .eq("loc_type1", locTypeDto.getLocType1())
                    .orderBy("lev1,bay1,row1"));
            if (!locMasts.isEmpty()) {
                for (LocMast loc : locMasts) {
@@ -287,7 +294,7 @@
            return msg.substring(0, 16);
        } else {
            StringBuilder msgBuilder = new StringBuilder(msg);
            for(int i = 0; i < count - msg.length(); ++i) {
            for (int i = 0; i < count - msg.length(); ++i) {
                msgBuilder.insert(0, "0");
            }
            return msgBuilder.toString();