自动化立体仓库 - WMS系统
18516761980
2022-06-16 a0dc6d318064e45557bf2426a8f3064dbd23d93e
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -264,6 +264,10 @@
            }
            // 生成工作档明细
            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
                MatCode matCode = matCodeService.selectById(detlDto.getLocDetl().getMatNo());
                if(Cools.isEmpty(matCode)){
                    throw new CoolException("产品编码在基础数据中不存在,请确认");
                }
                // 出库时,数量为0的直接忽略
                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
                WrkDetl wrkDetl = new WrkDetl();
@@ -277,6 +281,16 @@
                wrkDetl.setModiTime(new Date());
                wrkDetl.setModiUser(userId);
                wrkDetl.setMemo(detlDto.getLocDetl().getMemo());
                wrkDetl.setQtyBox(matCode.getStr6()!=null ? matCode.getStr6() : 0);
                wrkDetl.setWeight(matCode.getWeight()!=null ? matCode.getWeight() : 0);
                wrkDetl.setAllWeight(matCode.getWeight()!=null ? qty*matCode.getWeight()+30 : 0);
                wrkDetl.setAllQty(matCode.getStr6()!=null ? qty*matCode.getStr6() : 0);
                wrkDetl.setVendor(detlDto.getLocDetl().getVendor());
                wrkDetl.setSource(detlDto.getLocDetl().getSource());
                wrkDetl.setSupplier(detlDto.getLocDetl().getSupplier());
                wrkDetl.setStr5(matCode.getStr5());
                wrkDetl.setStr4(matCode.getStr4());
                wrkDetl.setStr3(matCode.getStr3());
                if (!wrkDetlService.insert(wrkDetl)) {
                    throw new CoolException("保存工作档明细失败");
                }
@@ -491,6 +505,7 @@
                LocDetl sqlParam = new LocDetl();
                sqlParam.setLocNo(paramLocDetl.getLocNo());
                sqlParam.setMatNo(paramLocDetl.getMatNo());
                sqlParam.setSupplier(paramLocDetl.getSupplier());
                LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam));
                if (null != one) locDetlDtos.add(new LocDetlDto(one, one.getQty()));
            }
@@ -532,10 +547,11 @@
            }
        }
        Date now = new Date();
        // 保存工作档
        WrkMast wrkMast = new WrkMast();
        wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(new Date());
        wrkMast.setIoTime(now);
        wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID
        wrkMast.setIoType(11); // 入出库状态: 11.库格移载
        wrkMast.setIoPri(10D);
@@ -549,9 +565,9 @@
        wrkMast.setBarcode(sourceLoc.getBarcode()); // 托盘码
        wrkMast.setLinkMis("N");
        wrkMast.setAppeUser(userId);
        wrkMast.setAppeTime(new Date());
        wrkMast.setAppeTime(now);
        wrkMast.setModiUser(userId);
        wrkMast.setModiTime(new Date());
        wrkMast.setModiTime(now);
        boolean res = wrkMastService.insert(wrkMast);
        if (!res) {
            throw new CoolException("保存工作档失败");
@@ -561,12 +577,12 @@
        for (LocDetl locDetl : locDetls) {
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setIoTime(new Date());
            wrkDetl.setIoTime(now);
            wrkDetl.setQty(locDetl.getQty());
            VersionUtils.setWrkDetl(wrkDetl, locDetl); // 版本控制
            wrkDetl.setAppeTime(new Date());
            wrkDetl.setAppeTime(now);
            wrkDetl.setAppeUser(userId);
            wrkDetl.setModiTime(new Date());
            wrkDetl.setModiTime(now);
            wrkDetl.setModiUser(userId);
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作档明细失败");
@@ -576,7 +592,7 @@
        if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
            sourceLoc.setLocSts("R"); // R.出库预约
            sourceLoc.setModiUser(userId);
            sourceLoc.setModiTime(new Date());
            sourceLoc.setModiTime(now);
            if (!locMastService.updateById(sourceLoc)){
                throw new CoolException("更新源库位状态失败");
            }
@@ -586,7 +602,7 @@
        // 修改目标库位状态
        if (loc.getLocSts().equals("O")) {
            loc.setLocSts("S"); // S.入库预约
            loc.setModiTime(new Date());
            loc.setModiTime(now);
            loc.setModiUser(userId);
            if (!locMastService.updateById(loc)) {
                throw new CoolException("更新目标库位状态失败");
@@ -678,6 +694,15 @@
                locDetl.setAppeUser(userId);
                locDetl.setAppeTime(new Date());
                locDetl.setZpallet(param.getZpallet());//托盘号
                locDetl.setVendor(adjust.getVendor());
                locDetl.setSource(adjust.getSource());
                locDetl.setSupplier(adjust.getSupplier());
                locDetl.setQtyBox(matCode.getStr6());
                locDetl.setAllQty(matCode.getStr6()*adjust.getCount());
                locDetl.setAllWeight(matCode.getWeight()*adjust.getCount()+30);
                locDetl.setStr3(matCode.getStr3());
                locDetl.setStr4(matCode.getStr4());
                locDetl.setStr5(matCode.getStr5());
                if (!locDetlService.insert(locDetl)) {
                    throw new CoolException("保存库存明细失败");
                }
@@ -698,11 +723,21 @@
                            throw new CoolException("清除库存明细失败");
                        }
                    } else {
                        MatCode matCode = matCodeService.selectById(adjust.getMatNo());
                        LocDetl sqlParam1 = new LocDetl();
                        sqlParam1.setQty(adjust.getCount());
                        sqlParam1.setSupplier(adjust.getSupplier());
                        sqlParam1.setModiTime(new Date());
                        sqlParam1.setModiUser(userId);
                        sqlParam1.setVendor(adjust.getVendor());
                        sqlParam1.setSource(adjust.getSource());
                        sqlParam1.setSupplier(adjust.getSupplier());
                        sqlParam1.setQtyBox(matCode.getStr6());
                        sqlParam1.setAllQty(matCode.getStr6()*adjust.getCount());
                        sqlParam1.setAllWeight(matCode.getWeight()*adjust.getCount()+30);
                        sqlParam1.setStr5(matCode.getStr5());
                        sqlParam1.setStr4(matCode.getStr4());
                        sqlParam1.setStr3(matCode.getStr3());
                        if (!locDetlService.update(sqlParam1, new EntityWrapper<LocDetl>()
                                .eq("loc_no", locMast.getLocNo())
                                .eq("mat_no", adjust.getMatNo())