自动化立体仓库 - WMS系统
zwl
16 小时以前 57610f520d214c9b5797191f7dbc68c121c7f0c1
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -497,31 +497,65 @@
    public void movLoc(WrkMast wrkMast) {
        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
        if (Objects.isNull(locMast)) {
            throw new CoolException("目标库位不存在!!");
        }
        Date now = new Date();
        Long operatorUser = wrkMast.getModiUser();
        if (Objects.isNull(operatorUser)) {
            operatorUser = wrkMast.getAppeUser();
        }
        // 默认目标库位是空板
        String locSts = "D";
        // 库位移转判断是否为空板移转
        if (wrkMast.getEmptyMk().equals("N")) {
        if ("N".equals(wrkMast.getEmptyMk())) {
            locSts = "F";
            // 转移库存明细数据: 库存号 由工作档源库位变为目标库位
            if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) {
//                            exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                log.info("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
            List<LocDetl> sourceDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
            for (LocDetl sourceDetl : sourceDetls) {
                LocDetl targetDetl = locDetlService.selectItem(wrkMast.getLocNo(), sourceDetl.getMatnr(), sourceDetl.getBatch(), sourceDetl.getBrand(),
                        sourceDetl.getStandby1(), sourceDetl.getStandby2(), sourceDetl.getStandby3(), sourceDetl.getBoxType1(),
                        sourceDetl.getBoxType2(), sourceDetl.getBoxType3());
                if (null != targetDetl && !Objects.equals(targetDetl.getId(), sourceDetl.getId())) {
                    Double targetQty = targetDetl.getAnfme() == null ? 0D : targetDetl.getAnfme();
                    Double sourceQty = sourceDetl.getAnfme() == null ? 0D : sourceDetl.getAnfme();
                    targetDetl.setAnfme(Math.round((targetQty + sourceQty) * 10000) / 10000.0);
                    targetDetl.setAreaId(locMast.getAreaId());
                    targetDetl.setAreaName(locMast.getAreaName());
                    targetDetl.setModiTime(now);
                    if (!Objects.isNull(operatorUser)) {
                        targetDetl.setModiUser(operatorUser);
                    }
                    if (!locDetlService.updateById(targetDetl)) {
                        throw new CoolException("库位移转 ===>> 合并库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[sourceLoc=" + wrkMast.getSourceLocNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                    }
                    if (!locDetlService.deleteById(sourceDetl.getId())) {
                        throw new CoolException("库位移转 ===>> 删除源库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[sourceLoc=" + wrkMast.getSourceLocNo() + "]");
                    }
                } else {
                    sourceDetl.setLocNo(wrkMast.getLocNo());
                    sourceDetl.setAreaId(locMast.getAreaId());
                    sourceDetl.setAreaName(locMast.getAreaName());
                    sourceDetl.setModiTime(now);
                    if (!Objects.isNull(operatorUser)) {
                        sourceDetl.setModiUser(operatorUser);
                    }
                    if (!locDetlService.updateById(sourceDetl)) {
                        throw new CoolException("库位移转 ===>> 转移库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[sourceLoc=" + wrkMast.getSourceLocNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                    }
                }
            }
        }
        // 修改源库位状态 ==> O
        LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
        if (null != sourceLoc) {
            sourceLoc.setBarcode("");
            sourceLoc.setLocSts("O");
            sourceLoc.setModiTime(now);
            sourceLoc.setIoTime(now);
            if (!locMastService.updateById(sourceLoc)) {
//                            exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                log.info("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
            }
        if (null == sourceLoc) {
            throw new CoolException("源库位不存在!!");
        }
        sourceLoc.setBarcode("");
        sourceLoc.setLocSts("O");
        sourceLoc.setModiTime(now);
        sourceLoc.setIoTime(now);
        if (!locMastService.updateById(sourceLoc)) {
            throw new CoolException("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
        }
        // 修改目标库位状态 ==> .locSts
        locMast.setLocSts(locSts);
@@ -529,9 +563,7 @@
        locMast.setIoTime(now);
        locMast.setModiTime(now);
        if (!locMastService.updateById(locMast)) {
//                        exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
           log.info("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
            throw new CoolException("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
        }
    }