自动化立体仓库 - WMS系统
野心家
2023-06-20 5ce6bfb2e237b9fbf092a03cf80e86d928ac7ca6
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -132,19 +132,19 @@
                            }
                        }
                        // 更新订单完成数量
                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        try {
                            if(!Cools.isEmpty(orderDetl)){
                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        wrkDetl.getBatch(),wrkDetl.getAnfme())){
//                                    exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                }
                            }
                        } catch (Exception ignore){}
//                        // 更新订单完成数量
//                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
//                        try {
//                            if(!Cools.isEmpty(orderDetl)){
//                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
//                                        wrkDetl.getBatch(),wrkDetl.getAnfme())){
////                                    exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
////                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
//                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                                    return FAIL.setMsg("全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
//                                }
//                            }
//                        } catch (Exception ignore){}
                    }
                    // 修改库位状态 S ====>> F
@@ -154,7 +154,40 @@
                        locMast.setIoTime(now);
                        locMast.setModiTime(now);
                        locMast.setFireStatus(0);
                        locMast.setPackStatus(1);
                        if (locMast.getCrnNo()==1){
                            if (locMast.getLocType1()==1){
                                locMast.setPackStatus(1);
                            }else {
                                locMast.setPackStatus(0);
                            }
                        }else {
                            WrkDetl wrkDetl1 = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("zpallet",locMast.getBarcode()));
                            locMast.setPackStatus(5);
                            TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>()
                                    .eq("barcode",wrkDetl1.getMatnr())
                                    .eq("status",4)
                            );
                            testMast.setStatus(5);
                            testMast.setModiTime(new Date());
                            if (!testMastService.update(testMast,new EntityWrapper<TestMast>().eq("barcode",wrkDetl1.getMatnr()).eq("status",4))){
                                throw new CoolException("更改测试状态失败");
                            }
                        }
                        //2.入库完成上报
                        CombParam combParam = new CombParam();
                        combParam.setPackNo(wrkDetls.get(0).getMatnr());
                        combParam.setLocNo(wrkMast.getLocNo());
                        combParam.setBarcode(wrkMast.getBarcode());
                        if (locMast.getCrnNo()==1){
                            combParam.setPackSts(0);
                            combParam.setStepSts(2);
                        }else{
                            combParam.setPackSts(1);
                            combParam.setStepSts(5);
                        }
                        combParam.setRequestTime(DateUtils.convert(now));
                        new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam);
                        if (!locMastService.updateById(locMast)) {
//                            exceptionHandle("全板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -301,7 +334,6 @@
                        sourceLoc.setLocSts("O");
                        sourceLoc.setModiTime(now);
                        sourceLoc.setIoTime(now);
                        sourceLoc.setFireStatus(0);
                        sourceLoc.setPackStatus(0);
                        if (!locMastService.updateById(sourceLoc)) {
//                            exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
@@ -314,34 +346,81 @@
                    locMast.setBarcode(wrkMast.getBarcode());
                    locMast.setIoTime(now);
                    locMast.setModiTime(now);
                    locMast.setFireStatus(0);
                    if (locMast.getLocType1()==sourceLoc.getLocType1()){
                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
                    boolean sign =false;
                    if (locMast.getLocType1().equals(sourceLoc.getLocType1())){
                        locMast.setPackStatus(packStatus);
                        //待测库位转测试库位
                    }else if (locMast.getLocType1().equals((short)1) && sourceLoc.getLocType1().equals((short)3)){
                        locMast.setPackStatus(1);
                        TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>()
                                .eq("loc_no",sourceLoc.getLocNo())
                                .eq("user_id",locMast.getBarcode())
                                .eq("barcode",locDetl.getMatnr())
                        );
                        if(!Cools.isEmpty(testMast)){
                            testMast.setChannel(locMast.getChannel());
                            testMast.setLocNo(wrkMast.getLocNo());
                            testMast.setModiTime(new Date());
                            testMast.setBarcode(locDetl.getMatnr());
                            if (!testMastService.update(testMast,new EntityWrapper<TestMast>()
                                    .eq("loc_no",sourceLoc.getLocNo())
                                    .eq("user_id",locMast.getBarcode())
                                    .eq("barcode",locDetl.getMatnr()))){
                                throw new CoolException("更改测试状态失败");
                            }
                        }else {
                            throw new CoolException("待测库位无物");
                        }
                    }else {
                        locMast.setPackStatus(5); //5:静置中
                        if (locMast.getLocType1()==1 && sourceLoc.getLocType1()==2){
                        //测试库位转静置库位和NG库位
                        if (locMast.getLocType1().equals((short)4)){
                            locMast.setPackStatus(4); //4:NG
                        }else {
                            locMast.setPackStatus(5); //5:静置中
                        }
                        sign=true;
                            TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>()
                                    .eq("loc_no",sourceLoc.getLocNo())
                                    .eq("barcode",locMast.getBarcode())
                                    .eq("barcode",locDetl.getMatnr())
                                    .eq("status",4)
                            );
                            testMast.setStatus(5);
                            testMast.setLocNo(locMast.getLocNo());
                            testMast.setModiTime(new Date());
                            if (!testMastService.update(testMast,new EntityWrapper<TestMast>().eq("loc_no",sourceLoc.getLocNo()).eq("barcode",locMast.getBarcode()).eq("status",4))){
                            if (!testMastService.update(testMast,new EntityWrapper<TestMast>()
                                    .eq("loc_no",sourceLoc.getLocNo())
                                    .eq("barcode",locDetl.getMatnr())
                                    .eq("status",4))){
                                throw new CoolException("更改测试状态失败");
                            }
                        }
                        CombParam combParam = new CombParam();
                        combParam.setPackNo(locMast.getBarcode());
                        combParam.setLocNo(locMast.getLocNo());
                        combParam.setPackSts(5);
                        combParam.setRequestTime(DateUtils.convert(new Date()));
                        new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam);
                    }
                    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() + "]");
                    }
                    if (locMast.getCrnNo()==1 && sign){
                        //5.静置库位入库完成上报
                        CombParam combParam = new CombParam();
                        combParam.setPackNo(locDetl.getMatnr());
                        combParam.setLocNo(wrkMast.getLocNo());
                        if (locMast.getPackStatus()==4){
                            combParam.setPackSts(2);
                        }else if (locMast.getPackStatus()==5){
                            combParam.setPackSts(1);
                        }else {
                            combParam.setPackSts(0);
                        }
                        combParam.setStepSts(5);
                        combParam.setRequestTime(DateUtils.convert(now));
                        new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam);
                    }
                    break;
                default:
@@ -388,38 +467,21 @@
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                    }
                    for (WrkDetl wrkDetl : wrkDetls101) {
                        Date date = new Date();
                        WaitPakin waitPakin = new WaitPakin();
                        waitPakin.setMatnr(wrkDetl.getMatnr());
                        waitPakin.setMaktx(wrkDetl.getMaktx());
                        waitPakin.setZpallet(wrkDetl.getZpallet());   // Pack码
                        waitPakin.setIoStatus("N");     // 入出状态
                        waitPakin.setAnfme(1.0);  // 数量
                        waitPakin.setStatus("Y");    // 状态
                        waitPakin.setManuDate(date.toString());
                        waitPakin.setAppeUser(null);
                        waitPakin.setAppeTime(date);
                        waitPakin.setModiUser(null);
                        waitPakin.setModiTime(date);
//                        waitPakin.setDeadWarn(wrkDetl.getSettingTimes());
                        if (!waitPakinService.insert(waitPakin)) {
                            throw new CoolException("保存入库通知档失败");
                        }
                        // 更新订单完成数量
                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        try {
                            if(!Cools.isEmpty(orderDetl)){
                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        wrkDetl.getBatch(),wrkDetl.getAnfme())){
//                                    exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                                }
                            }
                        } catch (Exception ignore){}
                    }
//                    for (WrkDetl wrkDetl : wrkDetls101) {
//                        // 更新订单完成数量
//                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
//                        try {
//                            if(!Cools.isEmpty(orderDetl)){
//                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
//                                        wrkDetl.getBatch(),wrkDetl.getAnfme())){
////                                    exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
////                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
//                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                                    return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
//                                }
//                            }
//                        } catch (Exception ignore){}
//                    }
                    // 删除工作档源库位的库存明细
                    if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) {
//                        exceptionHandle("全板出库 ===>> 删除库存明细失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
@@ -432,12 +494,41 @@
                        locMast.setBarcode("");
                        locMast.setModiTime(now);
                        locMast.setIoTime(now);
                        locMast.setFireStatus(0);
                        locMast.setPackStatus(0);
                        if (!locMastService.updateById(locMast)) {
//                            exceptionHandle("全板出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                        }else{
                            //2.出库完成上报
                           CombParam combParam = new CombParam();
                            combParam.setPackNo(wrkDetls101.get(0).getMatnr());
                            combParam.setLocNo(wrkMast.getLocNo());
                            combParam.setBarcode(wrkMast.getBarcode());
                            //目标站206出库
                            if(wrkMast.getStaNo()==206){
                                combParam.setPackSts(1);//OK
                                combParam.setStepSts(7);//测试库出库完成
                            }else if(wrkMast.getStaNo()==204){//NG 出库
                                //NG出库修改测试档的状态为5.已移库
                                TestMast testMast=testMastService.selectOne(new EntityWrapper<TestMast>()
                                        .eq("user_id",wrkMast.getBarcode())
                                        .eq("barcode",wrkDetls101.get(0).getMatnr()));
                                combParam.setPackSts(2);//NG
                                combParam.setStepSts(8);//NG出库完成
                                testMast.setStatus(5);
                                if(!testMastService.update(testMast,new EntityWrapper<TestMast>()
                                        .eq("user_id",wrkMast.getBarcode())
                                        .eq("barcode",wrkDetls101.get(0).getMatnr()))){
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("全板出库 ===>> 修改测试表状态为5失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                                }
                            }else if(wrkMast.getStaNo()==103){//目标站103出库
                                combParam.setPackSts(1);//OK
                                combParam.setStepSts(6);//静置库出库完成
                            }
                            combParam.setRequestTime(DateUtils.convert(now));
                            new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam);
                        }
                    }
                    break;
@@ -449,6 +540,7 @@
                        locMast.setBarcode("");
                        locMast.setModiTime(now);
                        locMast.setIoTime(now);
                        locMast.setPackStatus(0);
                        if (!locMastService.updateById(locMast)) {
//                            exceptionHandle("空板出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();