自动化立体仓库 - WMS系统
skyouc
6 小时以前 f6e687c194354f1c0b883b5ac56da3a8e70db471
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -56,6 +56,8 @@
    private TaskDetlService taskDetlService;
    @Autowired
    private BasStationServiceImpl basStationService;
    @Autowired
    private WorkService workService;
    public ReturnT<String> start(WrkMast wrkMast) {
        // 4.入库完成
@@ -387,41 +389,42 @@
                    break;
                // 库位移转
                case 11:
                    // 默认目标库位是空板
                    String locSts = "D";
                    // 库位移转判断是否为空板移转
                    if (wrkMast.getEmptyMk().equals("N")) {
                        locSts = "F";
                        // 转移库存明细数据: 库存号 由工作档源库位变为目标库位
                        if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) {
//                            exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[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();
                            return FAIL.setMsg("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                        }
                    }
                    // 修改目标库位状态 ==> .locSts
                    locMast.setLocSts(locSts);
                    locMast.setBarcode(wrkMast.getBarcode());
                    locMast.setIoTime(now);
                    locMast.setModiTime(now);
                    if (!locMastService.updateById(locMast)) {
//                        exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                    }
//                    // 默认目标库位是空板
//                    String locSts = "D";
//                    // 库位移转判断是否为空板移转
//                    if (wrkMast.getEmptyMk().equals("N")) {
//                        locSts = "F";
//                        // 转移库存明细数据: 库存号 由工作档源库位变为目标库位
//                        if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) {
////                            exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
//                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                            return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[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();
//                            return FAIL.setMsg("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
//                        }
//                    }
//                    // 修改目标库位状态 ==> .locSts
//                    locMast.setLocSts(locSts);
//                    locMast.setBarcode(wrkMast.getBarcode());
//                    locMast.setIoTime(now);
//                    locMast.setModiTime(now);
//                    if (!locMastService.updateById(locMast)) {
////                        exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                        return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
//                    }
                    movLoc(wrkMast);
                    break;
                default:
                    break;
@@ -444,6 +447,48 @@
        return SUCCESS;
    }
    public void movLoc(WrkMast wrkMast) {
        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
        Date now = new Date();
        // 默认目标库位是空板
        String locSts = "D";
        // 库位移转判断是否为空板移转
        if (wrkMast.getEmptyMk().equals("N")) {
            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() + "]");
            }
        }
        // 修改源库位状态 ==> 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() + "]");
            }
        }
        // 修改目标库位状态 ==> .locSts
        locMast.setLocSts(locSts);
        locMast.setBarcode(wrkMast.getBarcode());
        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() + "]");
        }
    }
    private ReturnT<String> doOut(WrkMast wrkMast) {
        Date now = new Date();
        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
@@ -457,6 +502,13 @@
            switch (wrkMast.getIoType()) {
                // 全板出库
                case 101:
                    //如果wrkCode不为空,表示是工作台叫货,如果不为空走移库逻辑
                    //todo 判断如果库位所属不是同一个堆垛机号,需再生成一个新的入库任务
                    if (!Objects.isNull(wrkMast.getWrkCode())) {
                        //TODO 移库
//                        workService.locMove(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), wrkMast.getAppeUser());
                        movLoc(wrkMast);
                    } else {
//                    // 出库确认信号位
//                    if (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) {
//                        return SUCCESS;
@@ -505,6 +557,7 @@
                            return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                        }
                    }
                    }
                    break;
                // 并板途中捡料
                case 108: