自动化立体仓库 - WMS系统
#
whycq
2024-06-21 333b34d51a442e75bd6f1c9dfde2aa99069a1480
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -119,11 +119,30 @@
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
                    break;
                case 57:
                    Date now = new Date();
                    // 更新库存明细
                    List<AgvWrkDetl> wrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
                    wrkDetlList.forEach(agvWrkDetl -> {
                        AgvLocDetl agvLocDetl = new AgvLocDetl();
                        agvLocDetl.setLocNo(agvWrkMast.getLocNo());
                        agvLocDetl.sync(agvWrkDetl);
                        agvLocDetl.setModiTime(now);
                        agvLocDetl.setAppeTime(now);
                        if (!agvLocDetlService.insert(agvLocDetl)) {
                            throw new CoolException("保存工作明细失败");
                        }
                    });
                    // 更新站点 + 库位状态     源库位是站点
                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    break;
                case 58:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
                    break;
                case 108:
                case 114:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    //更新库存明细
                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
@@ -163,48 +182,23 @@
                    } else {
                        //修改源库位状态为O
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
                        //更新目标库位明细 101.出库 删除源库位库存明细
                        agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
                    }
                    break;
                case 113:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    // 接驳位 -- 库位
                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
                    }
                    break;
                case 1:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    //更新目标库位明细
                    log.info("更新目标库位明细 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo);
                    agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
                    //生成入库通知历史档
                    boolean save = agvWaitPakinLogService.save(barcode);
                    //删除入库通知档
                    log.info("删除入库通知档 supp_code: " + barcode);
                    agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",barcode));
                    break;
                case 11:
                case 12:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    //更新库存明细
                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
                    //修改源库位状态为O
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
                    break;
                case 108:
                case 121:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    //更新库存明细
                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
                    //修改源库位状态为O
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
                    break;
                case 112:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
                    for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
                        AgvLocDetl locDetl = new AgvLocDetl();
                        locDetl.setLocNo(agvWrkMast.getLocNo());
                        locDetl.sync(agvWrkDetl);
                        locDetl.setModiTime(new Date());
                        agvLocDetlService.insert(locDetl);
                    }
                    // 接驳位 -- 库位
                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
                        // 库位 -- 接驳位 / 库位
                    } else {
                        //修改源库位状态为O
@@ -218,11 +212,13 @@
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
                    }
                    break;
                case 121:
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
                    //更新库存明细
                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
                    //修改源库位状态为O
                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
                    break;
                default:
                    return null;
@@ -256,26 +252,29 @@
    @Transactional
    public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) {
        try{
            Date now = new Date();
            int wrkNo = agvWrkMast.getWrkNo();
            String orderNo = getOrderNoByWrkNo(wrkNo);
            //修改工作档状态为207.库存更新完成
            agvWrkMast.setWrkSts(207L);
            agvWrkMastService.updateById(agvWrkMast);
            //修改源库位状态为O
            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
            if (agvWrkMast.getIoType() == 110) {
                agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
            }
            if(agvWrkMast.getIoType() == 101){
                //更新目标库位明细 101.出库 删除源库位库存明细
                agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
                //生成空板入库任务
                Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2));
                try {
                    //agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true);
//                    agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true);
                    AgvWrkMast wrkMast = new AgvWrkMast();
                    //工作状态
                    wrkMast.setWrkSts(201L);
                    //入出库类型
                    wrkMast.setIoType(10);
                    wrkMast.setIoTime(new Date());
                    wrkMast.setIoTime(now);
                    //优先级
                    wrkMast.setIoPri(300.0);
                    //源站点
@@ -288,14 +287,22 @@
                    wrkMast.setWhsType(Integer.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
                    wrkMast.setAppeUser(9527L);
                    wrkMast.setAppeTime(new Date());
                    wrkMast.setAppeTime(now);
                    wrkMast.setModiUser(9527L);
                    wrkMast.setModiTime(new Date());
                    wrkMast.setModiTime(now);
                    if (!agvWrkMastService.insertByIncrease(wrkMast)) {
                        throw new CoolException("保存工作档失败");
                    }
                    AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo());
                    agvLocMast.setLocSts("S");
                    agvLocMast.setModiTime(now);
                    agvLocMastService.updateById(agvLocMast);
                    AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getLocNo());
                    agvBasDevp.setLocSts("R");
                    agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
                    agvBasDevpService.updateById(agvBasDevp);
                }catch (Exception e){
                    e.printStackTrace();
                    log.error(e.getMessage());