自动化立体仓库 - WMS系统
#
whycq
2023-06-28 8f49410c2b06a387e4e9a7ee17fd1fa9928e9479
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -162,14 +162,18 @@
    @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()) {
            List<String> outerSingleLoc = Utils.getGroupOuterSingleLoc(locDetl.getLocNo());
            outerSingleLoc.add(locDetl.getLocNo());
            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 +181,9 @@
                    }
                    double lastCount = locDetl.getCount() - useCount;//剩余所需数量
                    double realCount = 0;//实际提供数量
                    if (lastCount==0){
                        continue;
                    }
                    if (locDetl0.getAnfme() >= lastCount) {//实际数量大于所需数量,按所需数量提供
                        realCount = lastCount;
                    } else {
@@ -198,6 +205,14 @@
                locDetls.add(locDetl);
            }
        }
        for(StockOutParam.LocDetl one : param.getLocDetls()){
            List<String> outerSingleLoc = Utils.getGroupOuterSingleLoc(one.getLocNo());
            for (String s : outerSingleLoc) {
                if (!locs.contains(s)) {
                    throw new CoolException("浅库位有相同物料不支持出库");
                }
            }
        }
//        ArrayList<String> locNos = new ArrayList<>();
@@ -471,7 +486,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;
                    }