自动化立体仓库 - WMS系统
#
yxFwq
2025-01-07 5c5e89db4fd219d3d685b2473465f522204235b6
#
2个文件已修改
74 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -19,6 +19,7 @@
import com.zy.asrs.utils.CodeDetectionUtil;
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.PostMesDataUtils;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.DetlDto;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.StartupDto;
@@ -1314,12 +1315,45 @@
        if (locDetlArrayList.size()<batchNum){
            throw new CoolException("库存数量:"+locDetlArrayList.size()+";小于需求数量:"+param.getBatchNum());
        }
        ArrayList<String> locS = new ArrayList<>();
        ArrayList<LocDetl> locDetlArrayAnd = new ArrayList<>();
        for (LocDetl locDetl : locDetlArrayList){
            if (!locS.contains(locDetl.getLocNo())){
                locDetlArrayAnd.add(locDetl);
                locS.add(locDetl.getLocNo());
                if (crnList.contains(1) || crnList.contains(2)){
                    String singleLoc = Utils.singleLoc(locDetl.getLocNo());
                    if (Cools.isEmpty(singleLoc)){
                        log.error("异常库位号:"+singleLoc+";输入库位号:"+locDetl.getLocNo());
                        continue;
                    }
                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", singleLoc));
                    if (locMast.getLocSts().equals("F")){
                        LocDetl locDetl1 = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", singleLoc));
                        if (!locS.contains(locDetl1.getLocNo())){
                            if (locDetl1.getMatnr().equals(locDetl.getMatnr())){
                                locDetlArrayAnd.add(locDetl1);
                                locS.add(locDetl1.getLocNo());
                            }
                        }
                    }
                }
            }
        }
        if (locDetlArrayAnd.isEmpty()){
            throw new CoolException("未找到符合条件的物料明细:品号==》matnr:"+param.getMatnr()+";重量==》wright:"+param.getWeight());
        }
        if (locDetlArrayAnd.size()<batchNum){
            throw new CoolException("库存数量:"+locDetlArrayAnd.size()+";小于需求数量:"+param.getBatchNum());
        }
        ArrayList<LocDetl> locDetlArraySou = new ArrayList<>();
        for (LocDetl locDetl : locDetlArrayList){
        for (LocDetl locDetl : locDetlArrayAnd){
            if (batchNum <= 0){
                return;
                break;
            }
            locDetlArraySou.add(locDetl);
            batchNum --;
src/main/java/com/zy/asrs/utils/Utils.java
@@ -247,7 +247,43 @@
        boolean deepLocLeft = isDeepLocLeft(slaveProperties, shallowRow-1);//判断是否为左浅库位
        return deepLocLeft? (shallowRow - 1) : (shallowRow + 1);
    }
    /**
     * 获取 小料库位对应的深获浅库位
     */
    public static String singleLoc(String locNo) {
        int row = getRow(locNo);
        int rowOther = 0;
        switch (row){
            case 1:
                rowOther = 2;
                break;
            case 2:
                rowOther = 1;
                break;
            case 3:
                rowOther = 4;
                break;
            case 4:
                rowOther = 3;
                break;
            case 5:
                rowOther = 6;
                break;
            case 6:
                rowOther = 5;
                break;
            case 7:
                rowOther = 8;
                break;
            case 8:
                rowOther = 7;
                break;
            default:
                return null;
        }
        return zerofill(String.valueOf(rowOther), 2) + locNo.substring(2);
    }
    /**
     * 通过库位号获取 排
     */