自动化立体仓库 - WMS系统
Junjie
2023-06-02 6c9b9a96ef48600f2e9eb3fdaa5ed4f0659a6c59
//出库时,如果当前库位组有相同的物料,则先出外侧物料
1个文件已修改
51 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -160,12 +160,55 @@
    @Transactional
    public void startupFullTakeStore(StockOutParam param, Long userId) {
        ArrayList<String> locNos = new ArrayList<>();
        for (StockOutParam.LocDetl locDetl:param.getLocDetls()){
            if (!locNos.contains(locDetl.getLocNo())){
                locNos.add(locDetl.getLocNo());
        List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
        //出库时,如果当前库位组有相同的物料,则先出外侧物料
        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) {
                for (LocDetl locDetl0 : locDetlService.selectByLocNo(locNo)) {
                    if (!locDetl0.getMatnr().equals(locDetl.getMatnr())) {
                        //不是相同物料
                        continue;
                    }
                    double lastCount = locDetl.getCount() - useCount;//剩余所需数量
                    double realCount = 0;//实际提供数量
                    if (locDetl0.getAnfme() >= lastCount) {//实际数量大于所需数量,按所需数量提供
                        realCount = lastCount;
                    } else {
                        //实际小于所需数量,按实际数量提供
                        realCount = locDetl0.getAnfme();
                    }
                    useCount += realCount;//已使用的数量
                    locDetls.add(new StockOutParam.LocDetl(locDetl0.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), realCount));
                    flag = true;
                    if (useCount >= locDetl.getCount()) {
                        //找到的库存 >= 所需库存,满足条件
                        break;
                    }
                }
            }
            if (!flag) {
                locDetls.add(locDetl);
            }
        }
        List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
//        ArrayList<String> locNos = new ArrayList<>();
//        for (StockOutParam.LocDetl locDetl:param.getLocDetls()){
//            if (!locNos.contains(locDetl.getLocNo())){
//                locNos.add(locDetl.getLocNo());
//            }
//        }
//        List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
//        ArrayList<String> locNos = new ArrayList<>();
//        List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
//        ArrayList<String> matnrs = new ArrayList<>();//目的做数据去重