自动化立体仓库 - WMS系统
#
1
3 天以前 b43bef45af4d88d4b71c27e6c167010e65b6a040
src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
@@ -10,6 +10,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import java.util.ArrayList;
import java.util.Date;
@@ -29,6 +31,8 @@
    private LocMastService locMastService;
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
    private OpenService openService;
    public ReturnT<String> start(BasAgvMast basAgvMast) {
@@ -52,6 +56,15 @@
                    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()));
                                }
                            }
                    );
                    break;
                case 1:
                    LocMast sourceLoc1 = locMastService.selectById(basAgvMast.getSourceLocNo());
@@ -111,6 +124,20 @@
                    if (!locDetls2.isEmpty()) {
                        locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    }
                    LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo());
                    // 修改库位状态 S ====>> F
                    if (locMast2.getLocSts().equals("S") ) {
                        locMast2.setLocSts("F");
                        locMast2.setIoTime(now);
                        locMast2.setModiTime(now);
                    } else if(basAgvMast.getTaskNo()>10000){
                        locMast2.setLocSts("D");
                        locMast2.setIoTime(now);
                        locMast2.setModiTime(now);
                    } else {
                        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()));
@@ -123,59 +150,50 @@
                        }
                    } else if (!basAgvWrkDetlList.isEmpty()){
                        for (BasAgvWrkDetl wrkDetl : basAgvWrkDetlList){
                            LocDetl locDetl = new LocDetl();
                            locDetl.sync(wrkDetl);
                            locDetl.setLocNo(basAgvMast.getLocNo()); // 库位号
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
                            locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
                            locDetl.setModiTime(now);
                            locDetl.setAppeTime(now);
                            locDetl.setOrigin("在库");
                            locDetlList2.add(locDetl);
                            LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand()
                                    ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
                        }
                    } 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(wrkDetl.getAnfme(), basAgvMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3()
                                        ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) {
//                                exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
                                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 {
                                locDetl = new LocDetl();
                                locDetl.sync(wrkDetl);
                                locDetl.setLocNo(basAgvMast.getLocNo()); // 库位号
                                locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
                                locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
                                locDetl.setModiTime(now);
                                locDetl.setAppeTime(now);
                                locDetl.setOrigin("在库");
                                if (!locDetlService.insert(locDetl)) {
//                                exceptionHandle("全板入库 ===>> 添加库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("入库 ===>> 添加库存明细失败; [workNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
                                if (!locDetlService.insert(locDetlold)) {
                                }
                            }
                        }
                    }
                    LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo());
                    // 修改库位状态 S ====>> F
                    if (locMast2.getLocSts().equals("S")) {
                        locMast2.setLocSts("F");
                        locMast2.setIoTime(now);
                        locMast2.setModiTime(now);
                        if (!locMastService.updateById(locMast2)) {
//                            exceptionHandle("全板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return FAIL.setMsg("全入库 ===>> 修改库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
                        }
                    }
                    if (!locDetlList1.isEmpty()){
                        for (LocDetl locDetl : locDetlList1) {
                            locDetlService.insert(locDetl);
                        }
                    }
                    if (!locDetlList2.isEmpty()){
                        for (LocDetl locDetl : locDetlList2) {
                            locDetlService.insert(locDetl);
                        for (LocDetl locDetlold : locDetlList2) {
                            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)) {
                                }
                            }
                        }
                    }