自动化立体仓库 - WMS系统
whycq
2024-11-04 d84ed060312f3e7fd5f53dd47d3a1729706a880b
#优化
7个文件已修改
106 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/AgvMobileController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OrderController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OrderDetlController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -631,6 +631,7 @@
        Date now = new Date();
        List<HashMap<String,String>> dbList = (List<HashMap<String, String>>) params.get("dbList");
        params.get("dbList");
        String orderNo = params.get("orderNo").toString();
        for (HashMap<String, String> map : dbList) {
            String locNo = map.get("locNo");
            String barcode = map.get("suppCode");
@@ -661,11 +662,19 @@
                // 更新订单
                // 先查询库订单明细 所属的订单
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("source",36).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no",orderNo).eq("source",17).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
                orderDetl.setQty(orderDetl.getQty() + agvLocDetl.getAnfme());
                if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("source",36).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
                if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no",orderNo).eq("source",17).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
                    throw new CoolException("修改订单明细失败,请联系管理员"+agvLocDetl.getOrderNo()+agvLocDetl.getMatnr());
                }
                // 更新订单状态
                Order order = orderService.selectByNo(orderNo);
                Long settle = order.getSettle();
                if (settle == 1L) {
                    if (!orderService.updateSettle(order.getId(),2L,getUserId())) {
                        throw new CoolException("订单号:{"+order.getOrderNo()+"}更新订单状态:1-->2 失败!(半成品调拨单任务)" );
                    }
                }
            }
            // 更新源库位
            AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo));
src/main/java/com/zy/asrs/controller/OrderController.java
@@ -337,7 +337,7 @@
        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
        List<Long> docIds = new ArrayList<>();
        for (DocType pakin : pakins) {
            if (pakin.getDocId() == 36) {
            if (pakin.getDocId() == 17) {
                docIds.add(pakin.getDocId());
            }
        }
src/main/java/com/zy/asrs/controller/OrderDetlController.java
@@ -169,11 +169,11 @@
        List<DocType> pakins = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakout", 1));
        List<Long> docIds = new ArrayList<>();
        for (DocType pakin : pakins) {
            if (pakin.getDocId() != 33 && pakin.getDocId() != 34 && pakin.getDocId() != 35) {
            if (pakin.getDocId() != 17 && pakin.getDocId() != 33 && pakin.getDocId() != 34 && pakin.getDocId() != 35) {
                docIds.add(pakin.getDocId());
            }
        }
        wrapper.ne("source",19);
        wrapper.in("source",docIds);
        Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(curr, limit), wrapper);
        for (OrderDetl record : page.getRecords()) {
            Double sumAnfme = agvLocDetlService.getSumAnfme(record.getMatnr(), record.getThreeCode());
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -422,6 +422,8 @@
            if (agvLocMast.getFloor() != floor) {
                if (agvLocMast.getFloor() == 1 && (floor == 2 || floor == 3)) {
                    throw new CoolException("当前库位请选择调拨单调拨!");
                } else if  ((agvLocMast.getFloor() == 2 || agvLocMast.getFloor() == 3) && (floor == 1 || floor == 4)) {
                    throw new CoolException("当前库位请选择调拨回流单回退!");
                } else {
                    ioType = 12;
                }
@@ -512,29 +514,29 @@
            });
        }
        // 如果当前任务是箱壳二三楼回退一楼的 回滚调拨单
        if (ioType == 12 && locMast.getFloor() == 1 && floor != 4 && agvLocMast.getFloor() != 1) {
            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
            for (AgvLocDetl agvLocDetl : agvLocDetls) {
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("source", 33));
                if (Cools.isEmpty(orderDetl)) {
                    throw new CoolException("当前物料的调拨单不存在!");
                }
                Order order = orderService.selectByNo(orderDetl.getOrderNo());
                if (Cools.isEmpty(order)) {
                    throw new CoolException("当前物料的调拨单不存在!");
                }
                if (order.getSettle() == 4L) {
                    if (!orderService.updateSettle(order.getId(),2L,userId)) {
                        throw new CoolException("调拨单回滚异常!");
                    }
                }
                orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
                if (!orderDetlService.updateById(orderDetl)) {
                    throw new CoolException("保存工作明细失败");
                }
            }
        }
//        // 如果当前任务是箱壳二三楼回退一楼的 回滚调拨单
//        if (ioType == 12 && locMast.getFloor() == 1 && floor != 4 && agvLocMast.getFloor() != 1) {
//            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
//            for (AgvLocDetl agvLocDetl : agvLocDetls) {
//                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("source", 33));
//                if (Cools.isEmpty(orderDetl)) {
//                    throw new CoolException("当前物料的调拨单不存在!");
//                }
//                Order order = orderService.selectByNo(orderDetl.getOrderNo());
//                if (Cools.isEmpty(order)) {
//                    throw new CoolException("当前物料的调拨单不存在!");
//                }
//                if (order.getSettle() == 4L) {
//                    if (!orderService.updateSettle(order.getId(),2L,userId)) {
//                        throw new CoolException("调拨单回滚异常!");
//                    }
//                }
//                orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
//                if (!orderDetlService.updateById(orderDetl)) {
//                    throw new CoolException("保存工作明细失败");
//                }
//            }
//        }
        //更新目标库位状态
        updateAgvLocMast(agvLocMast,"P");
        updateAgvLocMast(locMast,"Q");
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -1008,15 +1008,15 @@
                String locNo = wrkMast.getSourceLocNo();
                // 目标库位
                String targetLocNo = wrkMast.getLocNo();
                agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo),"",(short)0);
                agvLocMastService.updateLocStsByLocNo(locNo, "F", wrkMast.getBarcode(), (short) getContainerTypeByloc(locNo), "", (short) 0);
                if (wrkMast.getIoType() == 108) {
                    if (wrkMast.getWrkSts() != 22) {
                        agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
                        agvLocMastService.updateLocStsByLocNo(targetLocNo, "O", "", null);
                    }
                } else {
                    if (wrkMast.getWrkSts() != 207L && wrkMast.getWrkSts() != 205L) {
                        if (wrkMast.getWrkSts() != 22) {
                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(targetLocNo,"O","",wrkMast.getWhsType().shortValue());
                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(targetLocNo, "O", "", wrkMast.getWhsType().shortValue());
                        }
                    } else {
                        throw new CoolException("当前作业不能取消!");
@@ -1028,10 +1028,10 @@
                List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
                // 更新订单
                for (AgvLocDetl agvLocDetl : agvLocDetls) {
                    OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()));
                    OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()));
                    orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
                    if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no","DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code",agvLocDetl.getThreeCode()))){
                        throw new CoolException("修改订单明细失败,请联系管理员"+agvLocDetl.getOrderNo()+agvLocDetl.getMatnr());
                    if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) {
                        throw new CoolException("修改订单明细失败,请联系管理员" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr());
                    }
//                    FlowLog flowLog = new FlowLog();
//                    flowLog.setFid(String.valueOf(flowId));
@@ -1060,6 +1060,27 @@
//                    if (!flowLogService.insert(flowLog)) {
//                        throw new CoolException("同步半成品调拨单流水记录失败");
//                    }
                }
                // 回流单取消
            } else if (wrkMast.getIoType() == 114) {
                //源库位
                String locNo = wrkMast.getSourceLocNo();
                // 目标库位
                String targetLocNo = wrkMast.getLocNo();
                agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
                agvLocMastService.updateLocStsByLocNo(targetLocNo,"O","",null);
                // 源库位 库位主档
                AgvLocMast sourceLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo));
                AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", targetLocNo));
                // 当前任务是跨层移库  且目标楼层是1楼的 回滚调拨单
                List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
                for (AgvLocDetl agvLocDetl : agvLocDetls) {
                    OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("source", 17));
                    orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
                    if (!orderDetlService.updateById(orderDetl)) {
                        throw new CoolException("更新订单明细失败");
                    }
                }
                //出库取消
            } else {
@@ -1104,7 +1125,7 @@
            }
            if(wrkMast.getIoType() != 1 && wrkMast.getIoType() != 10 && wrkMast.getIoType()!=111 && wrkMast.getIoType()!=108 && wrkMast.getIoType() != 12 && wrkMast.getIoType() != 11){
            if(wrkMast.getIoType() != 114 && wrkMast.getIoType() != 1 && wrkMast.getIoType() != 10 && wrkMast.getIoType()!=111 && wrkMast.getIoType()!=108 && wrkMast.getIoType() != 12 && wrkMast.getIoType() != 11){
                //订单回滚
                //List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
                List<AgvWrkDetl> agvWrkDetlList1 = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -225,6 +225,7 @@
        }
        agvTaskCreateParam.setTaskCode(agvWrkMast.getWrkNo().toString());
        switch (agvWrkMast.getIoType()) {
            case 114:
            case 108:
            case 12:
                agvTaskCreateParam.setTaskTyp("F06");
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
@@ -135,7 +135,8 @@
                .or().eq("io_type", 108)
                .or().eq("io_type", 111)
                .or().eq("io_type", 112)
                .or().eq("io_type", 113)).getRecords();
                .or().eq("io_type", 113)
                .or().eq("io_type", 114)).getRecords();
        if(!Cools.isEmpty(agvWrkMastList)){
            agvWrkMastList.forEach(agvWrkMast -> {