自动化立体仓库 - WMS系统
whycq
2023-07-24 b7e08df5a07b3fa832a46ecc31983e16f2bccc8c
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -265,6 +265,9 @@
            // 生成工作档明细
            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();
@@ -278,13 +281,16 @@
                wrkDetl.setModiTime(new Date());
                wrkDetl.setModiUser(userId);
                wrkDetl.setMemo(detlDto.getLocDetl().getMemo());
                wrkDetl.setQtyBox(matCode.getStr6());
                wrkDetl.setWeight(matCode.getWeight());
                wrkDetl.setAllWeight(qty*matCode.getWeight()+30);
                wrkDetl.setAllQty(qty*matCode.getStr6());
                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("保存工作档明细失败");
                }
@@ -417,6 +423,15 @@
            // 获取工作号
            int workNo = commonService.getWorkNo(1);
            //2022-06-16 ADD, 出库库位如果是深库位1号货架,且对应浅库位也为D时,先出浅库位
            if(Utils.isDeepLoc(slaveProperties, locNo)){
                String shallow = Utils.getShallowLoc(slaveProperties,locNo);
                LocMast shallowLoc = locMastService.selectById(shallow);
                if(!Cools.isEmpty(shallowLoc) && shallowLoc.getLocSts().equals("D")){
                    locNo = shallowLoc.getLocNo();
                }
            }
            // 获取库位
            LocMast locMast = locMastService.selectById(locNo);
            if (Cools.isEmpty(locMast)) {
@@ -541,10 +556,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);
@@ -558,9 +574,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("保存工作档失败");
@@ -570,12 +586,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("保存工作档明细失败");
@@ -585,7 +601,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("更新源库位状态失败");
            }
@@ -595,7 +611,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("更新目标库位状态失败");
@@ -693,6 +709,9 @@
                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("保存库存明细失败");
                }
@@ -725,6 +744,9 @@
                        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())
@@ -793,7 +815,11 @@
                locSts = "D";
            // 库位转移 ===>> D.空桶/空栈板
            } else if (wrkMast.getIoType() == 11) {
                locSts = "F";
                if(wrkMast.getEmptyMk().equals("Y")){
                    locSts = "D";
                }else {
                    locSts = "F";
                }
                // 库位转移:目标库位
                LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
                if (Cools.isEmpty(locMast)) {
@@ -823,7 +849,7 @@
        if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
            // 保存工作明细档历史档
            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
            if (!wrkMast.getEmptyMk().equals("Y") && !wrkDetlLogService.save(wrkMast.getWrkNo())) {
                throw new CoolException("保存工作明细历史档失败, workNo = " + wrkMast.getWrkNo());
            }
            // 删除工作档明细