自动化立体仓库 - WMS系统
#
1
2 天以前 293c2a7cc9d8648a9fbee2332f93b755156fdbf7
src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
@@ -24,6 +24,8 @@
    @Autowired
    private BasAgvMastService basAgvMastService;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private BasAgvLocDetlService basAgvLocDetlService;
    @Autowired
    private BasAgvWrkDetlService basAgvWrkDetlService;
@@ -35,13 +37,17 @@
    private OpenService openService;
    public ReturnT<String> start(BasAgvMast basAgvMast) {
    public ReturnT<String>                           start(BasAgvMast basAgvMast) {
        try {
            Date now = new Date();
            switch (basAgvMast.getIoType()){
                case 0:
                    LocMast sourceLoc0 = locMastService.selectById(basAgvMast.getSourceLocNo());
                    locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc0.getLocNo()));
                    if(basAgvMast.getFloorNo() == 4){
                        basAgvMast.setBarcode(sourceLoc0.getBarcode());
                        basAgvMastService.updateById(basAgvMast);
                    }
                    sourceLoc0.setLocSts("O");
                    sourceLoc0.setBarcode("");
                    sourceLoc0.setModiTime(now);
@@ -51,34 +57,22 @@
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("出库 ===>> 修改源库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getSourceLocNo() + "]");
                    }
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                    basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                    basAgvMast.setStatus(3);
                    basAgvMastService.updateById(basAgvMast);
                    // ✅ 事务提交后执行
                    TransactionSynchronizationManager.registerSynchronization(
                            new TransactionSynchronizationAdapter() {
                                @Override
                                public void afterCommit() {
                                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                                }
                            }
                    );
                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                    break;
                case 1:
                    LocMast sourceLoc1 = locMastService.selectById(basAgvMast.getSourceLocNo());
                    LocMast locMast1 = locMastService.selectById(basAgvMast.getLocNo());
                    List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    List<BasAgvLocDetl> locDetls1 = basAgvLocDetlService.selectList(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    if (!locDetls1.isEmpty()) {
                        locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                        basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    }
                    // 修改目标库位状态 ==> .locSts
                    locMast1.setLocSts("F");
                    locMast1.setBarcode(sourceLoc1.getBarcode());
                    locMast1.setIoTime(now);
                    locMast1.setModiTime(now);
                    if (!locMastService.updateById(locMast1)) {
@@ -86,21 +80,12 @@
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
                    }
                    try{
                        // 转移库存明细数据: 库存号 由工作档源库位变为目标库位
                        locDetlService.updateLocNo(basAgvMast.getLocNo(), basAgvMast.getSourceLocNo());
//                        if (!) {
//                            exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
//                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                            return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
//                        }
                        basAgvLocDetlService.updateLocNo(basAgvMast.getLocNo(), basAgvMast.getSourceLocNo());
                    } catch (Exception e) {
                        return FAIL.setMsg(e.getMessage());
                    }
                    if (null != sourceLoc1) {
                        sourceLoc1.setBarcode("");
                        sourceLoc1.setLocSts("O");
@@ -115,14 +100,15 @@
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                    basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    basAgvMast.setStatus(3);
//                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    basAgvMast.setStatus(4);
                    basAgvMastService.updateById(basAgvMast);
//                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                    break;
                case 2:
                    List<LocDetl> locDetls2 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    List<BasAgvLocDetl> locDetls2 = basAgvLocDetlService.selectList(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    if (!locDetls2.isEmpty()) {
                        locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                        basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    }
                    LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo());
@@ -139,18 +125,11 @@
                        return FAIL.setMsg("库位状态异常");
                    }
                    List<LocDetl> locDetlList1 = new ArrayList<>();
                    List<LocDetl> locDetlList2 = new ArrayList<>();
                    List<BasAgvLocDetl> basAgvLocDetlList = basAgvLocDetlService.selectList(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                    List<BasAgvLocDetl> locDetlList2 = new ArrayList<>();
                    List<BasAgvWrkDetl> basAgvWrkDetlList = basAgvWrkDetlService.selectList(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                    if (!basAgvLocDetlList.isEmpty()) {
                        for (BasAgvLocDetl basAgvLocDetl : basAgvLocDetlList){
                            LocDetl locDetl = new LocDetl();
                            locDetl.sync(basAgvLocDetl);
                            locDetlList1.add(locDetl);
                        }
                    } else if (!basAgvWrkDetlList.isEmpty()){
                    if (!basAgvWrkDetlList.isEmpty()){
                        for (BasAgvWrkDetl wrkDetl : basAgvWrkDetlList){
                            LocDetl locDetl = new LocDetl();
                            BasAgvLocDetl locDetl = new BasAgvLocDetl();
                            locDetl.sync(wrkDetl);
                            locDetl.setLocNo(basAgvMast.getLocNo()); // 库位号
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
@@ -164,47 +143,37 @@
                    } else {
                        locMast2.setLocSts("D");
                    }
                    if (!locMastService.updateById(locMast2)) {
                        return FAIL;
                    }
                    if (!locDetlList1.isEmpty()){
                        for (LocDetl locDetlold : locDetlList1) {
                            LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand()
                                    ,locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3(),locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3());
                            if (null != locDetl) {
                                if (!locDetlService.updateAnfme(locDetlold.getAnfme(), basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand(),locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3()
                                        ,locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3())) {
                                }
                            } else {
                                if (!locDetlService.insert(locDetlold)) {
                                }
                            }
                        }
                    }
                    if (!locDetlList2.isEmpty()){
                        for (LocDetl locDetlold : locDetlList2) {
                            LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand()
                        for (BasAgvLocDetl locDetlold : locDetlList2) {
                            BasAgvLocDetl locDetl = basAgvLocDetlService.selectItem(basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand()
                                    ,locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3(),locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3());
                            if (null != locDetl) {
                                if (!locDetlService.updateAnfme(locDetlold.getAnfme(), basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand(),locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3()
                                if (!basAgvLocDetlService.updateAnfme(locDetlold.getAnfme(), basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand(),locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3()
                                        ,locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3())) {
                                }
                            } else {
                                if (!locDetlService.insert(locDetlold)) {
                                if (!basAgvLocDetlService.insert(locDetlold)) {
                                }
                            }
                        }
                    }
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
//                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                    basAgvMast.setStatus(3);
                    if(basAgvMast.getFloorNo() == 2 || basAgvMast.getFloorNo() == 3){
                        basAgvMast.setStatus(4);
                    }
                    basAgvMastService.updateById(basAgvMast);
                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                    break;
                case 3:
                    basAgvMast.setStatus(3);
                    basAgvMastService.updateById(basAgvMast);
                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                    break;
                default:
                    return FAIL.setMsg("暂不支持该类型");