自动化立体仓库 - WMS系统
dubin
17 小时以前 e86267955cdfb66abd8e807f0a9cd76d61680a84
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;
@@ -22,6 +24,8 @@
    @Autowired
    private BasAgvMastService basAgvMastService;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private BasAgvLocDetlService basAgvLocDetlService;
    @Autowired
    private BasAgvWrkDetlService basAgvWrkDetlService;
@@ -29,15 +33,21 @@
    private LocMastService locMastService;
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
    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);
@@ -47,25 +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);
                    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()));
                    if (!locDetls1.isEmpty()) {
                        locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    }
                    // 修改目标库位状态 ==> .locSts
                    locMast1.setLocSts("F");
                    locMast1.setBarcode(sourceLoc1.getBarcode());
                    locMast1.setIoTime(now);
                    locMast1.setModiTime(now);
                    if (!locMastService.updateById(locMast1)) {
@@ -73,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() + "]");
//                        }
                    } catch (Exception e) {
                        return FAIL.setMsg(e.getMessage());
                    }
                    if (null != sourceLoc1) {
                        sourceLoc1.setBarcode("");
                        sourceLoc1.setLocSts("O");
@@ -103,8 +101,9 @@
                    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);
                    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()));
@@ -114,8 +113,12 @@
                    LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo());
                    // 修改库位状态 S ====>> F
                    if (locMast2.getLocSts().equals("S")) {
                    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 {
@@ -183,11 +186,16 @@
                    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("暂不支持该类型");