自动化立体仓库 - WMS系统
#
lsh
2023-05-20 17485bf8af53591618ca052dfb76559b8e67ce51
#
9个文件已修改
271 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/MoveLocHandler.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/StandingHandler.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/WcsController.java 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/param/SearchLocParam.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -216,16 +216,16 @@
    }
    @PostMapping("/rpc/pakIn/auth/v1")
    @AppAuth(memo = "入库通知单接口调用")
    @AppAuth(memo = "PACK信息下发")
    public synchronized R combPack(@RequestHeader(required = false) String appkey,
                                   @RequestBody(required = false) CombParam param,
                                   HttpServletRequest request) {
        log.info("入库通知单接口调用"+appkey+param);
        log.info("PACK信息下发接口调用"+appkey+param);
        auth(appkey, param, request);
        if (Cools.isEmpty(param)) {
            return R.parse(BaseRes.PARAM);
        }
        //生成入库通知档
        //生成商品档案
        openService.combPACK(param);
//        Map<String, Boolean> map = new HashMap<>();
//        map.put("isComplete", true);
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -672,7 +672,7 @@
        }
        //3.开始测试上报
        CombParam combParam = new CombParam();
        combParam.setPackNo(locMast.getBarcode());
        combParam.setPackNo(testMast.getBarcode());
        combParam.setLocNo(locMast.getLocNo());
        combParam.setPackSts(0);
        combParam.setStepSts(3);
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -573,65 +573,65 @@
            throw new CoolException("缺少参数:packNo");
        }else if (Cools.isEmpty(param.getPackName())){
            throw new CoolException("缺少参数:packName");
//        }else if (Cools.isEmpty(param.getSettingTimes())){
//            throw new CoolException("缺少参数:settingTimes");
        }else if (Cools.isEmpty(param.getRequestTime())){
            throw new CoolException("缺少参数:requestTime");
            throw new CoolException("缺少参数:requestTime");//此参数填入生产日期一栏  不用可关闭
        }
        if (Cools.isEmpty(param.getPackNo())) {
            throw new CoolException(BaseRes.PARAM);
        }
        // 判断是否有相同Pack码的数据
        if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
                eq("zpallet", param.getPackNo()).eq("io_status", "N")) > 0) {
            throw new CoolException(param.getPackNo() + "数据正在进行入库");
        }
//        // 判断是否有相同Pack码的数据
//        if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
//                eq("zpallet", param.getPackNo()).eq("io_status", "N")) > 0) {
//            throw new CoolException(param.getPackNo() + "数据正在进行入库");
//        }
        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getPackNo()));
        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getPackNo()));
        int countPakin = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getPackNo()));
        if (countLoc > 0 || countWrk > 0) {
            throw new CoolException("工作档/库存条码数据已存在===>>" + param.getPackNo());
        }else if (countPakin>0){
            throw new CoolException("重复申请" + param.getPackNo());
        }
//        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getPackNo()));
//        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getPackNo()));
//        int countPakin = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getPackNo()));
//        if (countLoc > 0 || countWrk > 0) {
//            throw new CoolException("工作档/库存条码数据已存在===>>" + param.getPackNo());
//        }else if (countPakin>0){
//            throw new CoolException("重复申请" + param.getPackNo());
//        }
//         生成入库通知档
        Mat mat = matService.selectByMatnr(param.getPackName());
        Mat mat = matService.selectByMatnr(param.getPackNo());
        Date now = new Date();
        if (Cools.isEmpty(mat)) {
            Tag tag = tagService.selectByName("全部", 1);
            Mat matNew = new Mat();
            matNew.setTagId(tag.getId());
            matNew.setMatnr(param.getPackName());
            matNew.setMatnr(param.getPackNo());
            matNew.setMaktx(param.getPackName());
            mat.setManuDate(param.getRequestTime());
            matNew.setDeadWarn(480);//8小时  480分钟
            matNew.setCreateBy(9999L);//9999表示erp下发
            matNew.setCreateTime(new Date());
            matNew.setCreateTime(now);
            matNew.setUpdateBy(9999L);//9999表示erp下发
            matNew.setUpdateTime(new Date());
            matNew.setUpdateTime(now);
            if (!matService.insert(matNew)){
                throw new CoolException(param.getPackName() + "商品档案自动生成失败");
            }
            mat=matNew;
//            mat=matNew;
//            throw new CoolException(param.getPackName() + "商品档案不存在");
        }
        WaitPakin waitPakin = new WaitPakin();
//        waitPakin.sync(mat);
        waitPakin.setMatnr(param.getPackName());
        waitPakin.setMaktx(param.getPackName());
        waitPakin.setZpallet(param.getPackNo());   // Pack码
        waitPakin.setIoStatus("N");     // 入出状态
        waitPakin.setAnfme(1.0);  // 数量
        waitPakin.setStatus("Y");    // 状态
        waitPakin.setManuDate(param.getRequestTime());
        waitPakin.setAppeUser(null);
        waitPakin.setAppeTime(new Date());
        waitPakin.setModiUser(null);
        waitPakin.setModiTime(new Date());
        waitPakin.setDeadWarn(mat.getDeadWarn());
        if (!waitPakinService.insert(waitPakin)) {
            throw new CoolException("保存入库通知档失败");
        }
//        WaitPakin waitPakin = new WaitPakin();
////        waitPakin.sync(mat);
//        waitPakin.setMatnr(param.getPackName());
//        waitPakin.setMaktx(param.getPackName());
//        waitPakin.setZpallet(param.getPackNo());   // Pack码
//        waitPakin.setIoStatus("N");     // 入出状态
//        waitPakin.setAnfme(1.0);  // 数量
//        waitPakin.setStatus("Y");    // 状态
//        waitPakin.setManuDate(param.getRequestTime());
//        waitPakin.setAppeUser(null);
//        waitPakin.setAppeTime(new Date());
//        waitPakin.setModiUser(null);
//        waitPakin.setModiTime(new Date());
//        waitPakin.setDeadWarn(mat.getDeadWarn());
//        if (!waitPakinService.insert(waitPakin)) {
//            throw new CoolException("保存入库通知档失败");
//        }
    }
    @Override
    @Transactional
src/main/java/com/zy/asrs/task/handler/MoveLocHandler.java
@@ -68,9 +68,10 @@
            );
            if (!Cools.isEmpty(locMasts)){
                for (LocMast locMast:locMasts){
                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
                    TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>()
                            .eq("loc_no",locMast.getLocNo())
                            .eq("barcode",locMast.getBarcode())
                            .eq("barcode",locDetl.getMatnr())
                            .eq("status",4)
                    );
                    if (!Cools.isEmpty(testMast)){
@@ -84,7 +85,7 @@
                                workService.locMove(locMast.getLocNo(),targetLocNo.getLocNo(),(long)Integer.parseInt(testMast.getUserId()));
                                //4.测试完成上报
                                CombParam combParam = new CombParam();
                                combParam.setPackNo(locMast.getBarcode());
                                combParam.setPackNo(locDetl.getMatnr());
                                combParam.setLocNo(locMast.getLocNo());
                                combParam.setPackSts(2);
                                combParam.setStepSts(4);
@@ -119,11 +120,13 @@
            );
            if (!Cools.isEmpty(locMasts2)){
                for (LocMast locMast:locMasts2){
                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
                    TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>()
                            .eq("loc_no",locMast.getLocNo())
                            .eq("barcode",locMast.getBarcode())
                            .eq("barcode",locDetl.getMatnr())
                            .eq("status",4)
                    );
                    boolean sign=false;
                    if (!Cools.isEmpty(testMast)){
                        if (testMast.getStatus()==4){
                            //移库开始,查询目标库位
@@ -134,15 +137,7 @@
                            if (targetLocNo != null){
                                //生成出库任务
                                if (outLoc(locMast)){
                                    //4.测试完成上报
                                    CombParam combParam = new CombParam();
                                    combParam.setPackNo(locMast.getBarcode());
                                    combParam.setLocNo(locMast.getLocNo());
                                    combParam.setPackSts(1);
                                    combParam.setStepSts(4);
                                    combParam.setRequestTime(DateUtils.convert(new Date()));
                                    new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam);
                                    return SUCCESS;
                                    sign=true;
                                }
                            }else {
                                //3\4排满  向2排移库,查询目标库位
@@ -152,15 +147,7 @@
                                }
                                if (targetLocNo != null){
                                    workService.locMove(locMast.getLocNo(),targetLocNo.getLocNo(),(long)Integer.parseInt(testMast.getUserId()));
                                    //4.测试完成上报
                                    CombParam combParam = new CombParam();
                                    combParam.setPackNo(locMast.getBarcode());
                                    combParam.setLocNo(locMast.getLocNo());
                                    combParam.setPackSts(1);
                                    combParam.setStepSts(4);
                                    combParam.setRequestTime(DateUtils.convert(new Date()));
                                    new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam);
                                    return SUCCESS;
                                    sign=true;
                                }else {
                                    log.error("测试完成自动移库--->没有空库位!");
                                }
@@ -168,9 +155,21 @@
                        }else if (testMast.getStatus()!=4) {
                            log.error("测试状态异常,库位号为:" + testMast.getLocNo());
                        }
                    }else {
                        log.error("测试库位:"+locMast.getLocNo()+"所属测试档为空或者不状态为4");
                    }
                    if (sign){
                        //4.测试完成上报
                        CombParam combParam = new CombParam();
                        combParam.setPackNo(locDetl.getMatnr());
                        combParam.setLocNo(locMast.getLocNo());
                        combParam.setPackSts(1);
                        combParam.setStepSts(4);
                        combParam.setRequestTime(DateUtils.convert(new Date()));
                        new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam);
                        return SUCCESS;
                    }
                }
            }
        } catch (Exception e) {
src/main/java/com/zy/asrs/task/handler/StandingHandler.java
@@ -70,18 +70,18 @@
            //静置完成出库站104
            for(LocMast locMast : locMasts){
                LocDetl locDetl=locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no",locMast.getLocNo()));
                Mat mat = matService.selectByMatnr(locDetl.getMatnr());
                if (Cools.isEmpty(locDetl)){
                if (Cools.isEmpty(locDetl) || Cools.isEmpty(locDetl.getMatnr())){
                    log.error("库位:"+locMast.getLocNo()+"没有明细");
                } else if (Cools.isEmpty(locDetl.getDeadWarn())){
                    log.error("库位:"+locMast.getLocNo()+"没有静置时间");
                    continue;
                }
                Mat mat = matService.selectByMatnr(locDetl.getMatnr());
                if (Cools.isEmpty(mat)){
                    log.error("库位:"+locMast.getLocNo()+"商品所属商品档案为空");
                }else if (Cools.isEmpty(mat.getDeadWarn())){
                    log.error("pack:"+mat.getMatnr()+"没有静置时间");
                } else if (Cools.isEmpty(locMast.getModiTime())){
                    log.error("库位:"+locMast.getLocNo()+"modiTime为空");
                } else if (Cools.isEmpty(locMast.getBarcode())){
                    log.error("库位:"+locMast.getLocNo()+"Pack码为空");
                } else if (Cools.isEmpty(mat)){
                    log.error("库位:"+locMast.getLocNo()+"商品所属商品档案为空");
                } else if (now.getTime()-locMast.getModiTime().getTime() >= mat.getDeadWarn()*60*1000){
                }else if (now.getTime()-locMast.getModiTime().getTime() >= mat.getDeadWarn()*60*1000){
                    // 生成工作号
                    int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
                    // 生成工作档
@@ -128,7 +128,7 @@
                        locMast.setPackStatus(6); //6:静置完成
                        CombParam combParam = new CombParam();
                        combParam.setPackNo(locMast.getBarcode());
                        combParam.setPackNo(mat.getMatnr());
                        combParam.setLocNo(locMast.getLocNo());
                        combParam.setPackSts(6);
                        combParam.setStepSts(1);
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -64,13 +64,13 @@
            WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
            if (wrkMast.getWrkSts() == 5 && wrkMast.getIoType() == 1) {
                if(wrkDetl != null){
                    CombParam combParam = new CombParam();
                    combParam.setPackNo(wrkDetl.getZpallet());
//                    combParam.setPackName(wrkDetl.getMatnr());
                    combParam.setLocNo(wrkMast.getLocNo());
                    combParam.setPackSts(1);
                    combParam.setRequestTime(DateUtils.convert(new Date()));
                    result = new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam);
//                    CombParam combParam = new CombParam();
//                    combParam.setPackNo(wrkDetl.getMatnr());
////                    combParam.setPackName(wrkDetl.getMaktx());
//                    combParam.setLocNo(wrkMast.getLocNo());
//                    combParam.setPackSts(1);
//                    combParam.setRequestTime(DateUtils.convert(new Date()));
//                    result = new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam);
                    // 保存入库通知档历史档
                    WaitPakin pakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
                    if (pakin!=null){
@@ -84,19 +84,19 @@
                    }
                }
            } else if (wrkMast.getWrkSts() == 15 && wrkMast.getIoType() == 101){
                if(wrkDetl != null){
                    CombParam combParam = new CombParam();
                    combParam.setPackNo(wrkDetl.getZpallet());
//                    combParam.setPackName(wrkDetl.getMatnr());
                    combParam.setLocNo(wrkMast.getSourceLocNo());
//                    combParam.setPackSts(0);
                    combParam.setRequestTime(DateUtils.convert(new Date()));
                    result = new PostMesDataUtils().postMesData("MES系统",mesUrl,outPath,combParam);
                }
//                if(wrkDetl != null){
//                    CombParam combParam = new CombParam();
//                    combParam.setPackNo(wrkDetl.getMatnr());
////                    combParam.setPackName(wrkDetl.getMatnr());
//                    combParam.setLocNo(wrkMast.getSourceLocNo());
////                    combParam.setPackSts(0);
//                    combParam.setRequestTime(DateUtils.convert(new Date()));
//                    result = new PostMesDataUtils().postMesData("MES系统",mesUrl,outPath,combParam);
//                }
            }
            if(null != result && !result.isSuccess()){
                return result;
            }
//            if(null != result && !result.isSuccess()){
//                return result;
//            }
            /*...........................赣州新增..............以上.............赣州新增...........................*/
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -174,7 +174,7 @@
                        }
                        //2.入库完成上报
                        CombParam combParam = new CombParam();
                        combParam.setPackNo(wrkMast.getBarcode());
                        combParam.setPackNo(wrkDetls.get(0).getMatnr());
                        combParam.setLocNo(wrkMast.getLocNo());
                        if (locMast.getCrnNo()==1){
                            combParam.setPackSts(0);
@@ -346,6 +346,8 @@
                    locMast.setIoTime(now);
                    locMast.setModiTime(now);
                    locMast.setFireStatus(0);
                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
                    boolean sign =false;
                    if (locMast.getLocType1().equals(sourceLoc.getLocType1())){
@@ -377,10 +379,11 @@
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                    }
                    if (locMast.getCrnNo()==1 && sign){
                        //5.静置库位入库完成上报
                        CombParam combParam = new CombParam();
                        combParam.setPackNo(wrkMast.getBarcode());
                        combParam.setPackNo(locDetl.getMatnr());
                        combParam.setLocNo(wrkMast.getLocNo());
                        if (locMast.getPackStatus()==4){
                            combParam.setPackSts(2);
src/main/java/com/zy/common/web/WcsController.java
@@ -49,6 +49,8 @@
    private  LocDetlService locDetlService;
    @Autowired
    private  TestMastService testMastService;
    @Autowired
    private  MatService matService;
    @Value("mes.url")
    private String mesUrl;
@@ -66,16 +68,47 @@
        if (Cools.isEmpty(param.getSourceStaNo())) {
            return R.error("源站编号不能为空");
        }
        if (Cools.isEmpty(param.getPackNo())) {
            return R.error("packNo不能为空");
        }
        Date now = new Date();
        if (param.getSourceStaNo()==109){
            try{
                Mat mat = matService.selectByMatnr(param.getPackNo());
                if (Cools.isEmpty(mat)){
                    return R.error("商品信息档案未查询到pack信息"+param.getPackNo());
                }
                WaitPakin waitPakin = new WaitPakin();
                waitPakin.setMatnr(mat.getMatnr());// Pack码
                waitPakin.setMaktx(mat.getMaktx());
                waitPakin.setZpallet(param.getBarcode());   //托盘码
                waitPakin.setIoStatus("N");     // 入出状态
                waitPakin.setAnfme(1.0);  // 数量
                waitPakin.setStatus("Y");    // 状态
                waitPakin.setManuDate(mat.getManuDate());
                waitPakin.setAppeUser(null);
                waitPakin.setAppeTime(now);
                waitPakin.setModiUser(null);
                waitPakin.setModiTime(now);
                waitPakin.setDeadWarn(mat.getDeadWarn());
                if (!waitPakinService.insert(waitPakin)) {
                    throw new CoolException("保存入库通知档失败");
                }
            }catch (Exception e){
            }
        }
        List<WaitPakin> waitPakins = null;
        if (param.getIoType() == 1) {
            if (Cools.isEmpty(param.getBarcode())) {
                return R.error("条码不能为空");
            }
            waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
            if (Cools.isEmpty(waitPakins)) {
            if (Cools.isEmpty(waitPakins) || waitPakins.size()!=1) {
                WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode());
                if (wrkMast != null && wrkMast.getIoType() == 103) {
                    return R.parse(CodeRes.PICK_600);
                if (wrkMast != null || waitPakins.size()!=1) {
                    return R.parse("600-重复组托");
                }
                return R.parse(CodeRes.NO_COMB_700);
            }
@@ -152,6 +185,9 @@
        if (!res) {
            throw new CoolException("保存工作档失败");
        }
        // 目标库位
        LocMast locMast = locMastService.selectById(dto.getLocNo());
        // 生成工作档明细
        waitPakins.forEach(waitPakin -> {
            WrkDetl wrkDetl = new WrkDetl();
@@ -163,6 +199,24 @@
            wrkDetl.setDeadWarn(waitPakin.getDeadWarn());
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作明细失败");
            }
            TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>().eq("barcode", wrkMast.getBarcode()));
            if (Cools.isEmpty(testMast)){
                //生成测试档
                testMast=new TestMast();
                testMast.setChannel(locMast.getChannel());
                testMast.setUserId(locMast.getLocNo());
                testMast.setStatus(1);
                testMast.setBarcode(wrkDetl.getMatnr());
                testMast.setLocNo(locMast.getLocNo());
                testMast.setModiTime(now);
                testMast.setAppeTime(now);
                if (!testMastService.insert(testMast)){
                    throw new CoolException(wrkDetl.getMatnr()+"生成测试档失败");
                }
            }else {
                throw new CoolException(wrkDetl.getMatnr()+"已存在测试档");
            }
        });
        // 更新入库通知档 ioStatus ===>> Y
@@ -182,7 +236,6 @@
            throw new CoolException("更新源站失败");
        }
        // 更新目标库位状态
        LocMast locMast = locMastService.selectById(dto.getLocNo());
        if (locMast.getLocSts().equals("O")){
            locMast.setLocSts("S"); // S.入库预约
            locMast.setModiTime(now);
@@ -202,24 +255,6 @@
            }
        } else {
            throw new CoolException(dto.getLocNo()+"目标库位已被占用");
        }
        TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>().eq("barcode", wrkMast.getBarcode()));
        if (Cools.isEmpty(testMast)){
            //生成测试档
            testMast=new TestMast();
            testMast.setChannel(locMast.getChannel());
            testMast.setUserId(locMast.getLocNo());
            testMast.setStatus(1);
            testMast.setBarcode(wrkMast.getBarcode());
            testMast.setLocNo(locMast.getLocNo());
            testMast.setModiTime(now);
            testMast.setAppeTime(now);
            if (!testMastService.insert(testMast)){
                throw new CoolException(wrkMast.getBarcode()+"生成测试档失败");
            }
        }else {
            throw new CoolException(wrkMast.getBarcode()+"已存在测试档");
        }
        return dto;
src/main/java/com/zy/common/web/param/SearchLocParam.java
@@ -14,6 +14,8 @@
    private String barcode;
    private String packNo;
    // 库位规格( 0:未知, 1:低库位, 2:高库位)
    private Short locType1;