自动化立体仓库 - WMS系统
#
Administrator
2023-06-20 86edadcbd751392f00fc585bfc8e03f0f31fb10c
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -162,6 +162,10 @@
    @Transactional
    public void startupFullTakeStore(StockOutParam param, Long userId) {
        List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
        List<String> locs = new ArrayList<>();
        for(StockOutParam.LocDetl one : param.getLocDetls()){
            locs.add(one.getLocNo());
        }
        //出库时,如果当前库位组有相同的物料,则先出外侧物料
        for (StockOutParam.LocDetl locDetl : param.getLocDetls()) {
@@ -170,6 +174,7 @@
            boolean flag = false;
            Double useCount = 0D;
            for (String locNo : outerSingleLoc) {
                if(locs.contains(locNo)) continue;
                for (LocDetl locDetl0 : locDetlService.selectByLocNo(locNo)) {
                    if (!locDetl0.getMatnr().equals(locDetl.getMatnr())) {
                        //不是相同物料
@@ -177,6 +182,9 @@
                    }
                    double lastCount = locDetl.getCount() - useCount;//剩余所需数量
                    double realCount = 0;//实际提供数量
                    if (lastCount==0){
                        continue;
                    }
                    if (locDetl0.getAnfme() >= lastCount) {//实际数量大于所需数量,按所需数量提供
                        realCount = lastCount;
                    } else {
@@ -471,13 +479,16 @@
                    if (!locDetl.getMatnr().equals(matnr)) {
                        flag = true;
                        break;
                    }else if (!Cools.isEmpty(ioWorkType) && ioWorkType.equals(IoWorkType.CHECK_OUT)){
                        flag = true;
                        break;
                    }
                }
                if (flag) {
                    //当前巷道存在不同规格的物料,需要进行101全板出库
                    // 获取路径
                    StaDesc staDesc = staDescService.queryCrnStn(101, locMast.getCrnNo(), staNo.getDevNo(), locMast.getRow1());
                    StaDesc staDesc = staDescService.queryCrnStn(101, locMast.getCrnNo(), locMast.getCrnNo()==1? 100:200 , locMast.getRow1());
                    if(staDesc == null){
                        throw new CoolException("出库路径不存在");
                    }
@@ -495,7 +506,7 @@
                    wrkMast.setOutMost(0);
                    wrkMast.setCrnNo(locMast.getCrnNo());
                    wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站
                    wrkMast.setStaNo(staDesc.getStnNo()); // 目标站
                    wrkMast.setStaNo(locMast.getCrnNo()==1? 100:200); // 目标站
                    wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位
                    wrkMast.setFullPlt("Y"); // 满板:Y
                    wrkMast.setPicking("N"); // 拣料
@@ -580,23 +591,22 @@
            assert ioType != null;
            // 获取库位
            LocMast locMast = locMastService.selectById(dto.getLocNo());
            Integer devNo = staNo.getDevNo();
            //-----------------2023.6.2出库兼容代码-----------------------6.3更新
            List<LocDetl> locDetls = locDetlService.selectByLocNo(locMast.getLocNo());
            if (locMast.getLocType2() == 1 && locDetls.size() > 1) {
                //单品区域出库物料大于1种,强制变成101全板出库
                ioType = 101;
                if (locMast.getCrnNo()==1){
                    devNo = 100;
                }else {
                    devNo = 200;
            //-----------------2023.6.2出库兼容代码-----------------------
            if (ioType!=107){
                List<LocDetl> locDetls = locDetlService.selectByLocNo(locMast.getLocNo());
                if (locMast.getLocType2() == 1 && locDetls.size() > 1) {
                    //单品区域出库物料大于1种,强制变成101全板出库
                    ioType = 101;
                    if (staNo.getDevNo()==300){
                        staNo.setDevNo(200);
                    }
                }
            }
            //-----------------2023.6.2出库兼容代码end-----------------------
            // 获取路径
            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), devNo, locMast.getRow1());
            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo(), locMast.getRow1());
            if(staDesc == null){
                throw new CoolException("出库路径不存在");
            }
@@ -614,7 +624,7 @@
            wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), false) ? 1 : 0);
            wrkMast.setCrnNo(locMast.getCrnNo());
            wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站
            wrkMast.setStaNo(devNo); // 目标站
            wrkMast.setStaNo(staDesc.getStnNo()); // 目标站
            wrkMast.setSourceLocNo(dto.getLocNo()); // 源库位
            wrkMast.setFullPlt("Y"); // 满板:Y
            wrkMast.setPicking("N"); // 拣料