自动化立体仓库 - WMS系统
zyx
2023-11-24 c37ae85eab15d2c7566677bfb26920c31da879fe
agv拣货流程更改
8个文件已修改
100 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/AgvOpenController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/AgvOpenController.java
@@ -78,7 +78,10 @@
        }
        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo));
        if(Cools.isEmpty(agvWrkMast)){
            return R.error("任务编号错误");
            agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode",param.getContainerCode()));
            if (Cools.isEmpty(agvWrkMast)){
                return R.error("任务编号错误");
            }
        }
        AgvTask agvTask = AgvTask.valueOf(param.getEventType());
@@ -115,7 +118,10 @@
        @Transactional
        public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
            //修改AGV工作档的工作状态为205.工作完成
            agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),205);
            agvWrkMast.setWrkSts(205L);
            agvWrkMast.setLocNo(param.getLocationCode());
            agvWrkMastService.updateById(agvWrkMast);
            //agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),205);
            //出库任务 101.出库 || 103.拣料出库 || 107.盘点出库
            if(agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103 || agvWrkMast.getIoType() == 107){
@@ -200,7 +206,11 @@
        @Transactional
        public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
            //修改工作档状态为204.放货完成
            agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),204);
            agvWrkMast.setWrkSts(204L);
            agvWrkMast.setLocNo(param.getLocationCode());
            agvWrkMastService.updateById(agvWrkMast);
            //agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),204);
        }
        public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -506,7 +506,9 @@
        if (Cools.isEmpty(wrkMast)){
            throw new CoolException(workNo+"工作档不存在");
        }
        if(!wrkMast.getLocNo().contains("@") || !wrkMast.getSourceLocNo().contains("@")){
            throw new CoolException("目标库位或者源库位暂未分配,无法取消");
        }
        //修改AGV工作档的工作状态为205.工作完成
        agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205);
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -45,9 +45,6 @@
    @Value("${agv.containerArrivedPath}")
    private String containerArrivedPath;
    @Value("${agvBasDev.maxWorkNum}")
    private int maxWrokNum;
    @Autowired
    AgvWrkMastMapper agvWrkMastMapper;
    @Autowired
@@ -182,7 +179,12 @@
            if(agvWrkMast.getSourceLocNo().contains("CS") || agvWrkMast.getSourceLocNo().contains("SK")){
                agvTaskkDescribeParam.setFromLocationCode(agvWrkMast.getSourceLocNo());
            }
            agvTaskkDescribeParam.setToLocationCode(agvWrkMast.getLocNo());
            if(agvWrkMast.getLocNo().contains("SK")){
                agvTaskkDescribeParam.setToLocationCode(agvWrkMast.getLocNo());
            }else {
                agvTaskkDescribeParam.setToStationCode(agvWrkMast.getLocNo());
            }
            agvTaskkDescribeParam.setContainerCode(agvWrkMast.getBarcode());
            return agvTaskParam;
        }).collect(Collectors.toList());
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -100,39 +100,15 @@
            }
        }
        // 如果 作业数量等于单据总数量 && 工作明细档中无该单据的数据 && AGV工作明细档中无该单据的数据
        int count = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo));
        boolean wrkDeltExist = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo)) < 1;
        boolean agvWrkDetlExist = agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().eq("order_no",orderNo)) < 1;
        boolean waitPakinExist = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("order_no",orderNo)) < 1;
        ManPakOut manPakOut = manPakOutService.selectByOrderWithName(orderNo);
        boolean manPakoutExist = Cools.isEmpty(manPakOut) || manPakOut.getPayment() == 1;
        boolean manPakoutExist = Cools.isEmpty(manPakOut) ||  (manPakOut.getPayment() != null && manPakOut.getPayment() == 1);
        if (complete && wrkDeltExist && agvWrkDetlExist && waitPakinExist && manPakoutExist) {
            // 出库订单重新整理明细
//            DocType docType = docTypeService.selectById(order.getDocType());
//            if (null != docType && docType.getPakout() == 1) {
//                // 重组明细
//                if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) {
//                    throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败");
//                }
//                List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo);
//                for (WrkDetl wrkDetl : wrkDetls) {
//                    OrderDetl orderDetl = new OrderDetl();
//                    orderDetl.sync(wrkDetl);
//                    orderDetl.setQty(orderDetl.getAnfme());
//                    orderDetl.setOrderId(order.getId());
//                    orderDetl.setOrderNo(orderNo);
//                    orderDetl.setStatus(1);
//                    orderDetl.setCreateTime(order.getCreateTime());
//                    orderDetl.setCreateBy(order.getCreateBy());
//                    orderDetl.setUpdateTime(order.getUpdateTime());
//                    orderDetl.setUpdateBy(order.getUpdateBy());
//                    if (!orderDetlService.insert(orderDetl)) {
//                        throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败");
//                    }
//                }
//            }
            if (!this.updateSettle(order.getId(), 4L, null)) {
                throw new CoolException("修改订单【orderNo = " + order.getOrderNo() + "】状态为已完成失败");
            }
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
@@ -103,7 +103,7 @@
        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectPage(new Page<>(1, 50)
                ,new EntityWrapper<AgvWrkMast>()
                        .eq("wrk_sts", 21)
                        .like("loc_no","@")
                        //.like("loc_no","@")
                        .andNew().eq("io_type", 101)
                        .or().eq("io_type", 103)
                        .or().eq("io_type", 11)
@@ -122,7 +122,7 @@
    /*
    定时处理等待执行的任务 工作状态为21.生成出库任务 且目标库位中不含@字符
     */
    @Scheduled(cron = "0/10 * * * * ? ")
    //@Scheduled(cron = "0/10 * * * * ? ")
    public void dealWatiWrk(){
        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectReadyAgvWrkMast();
        if(!Cools.isEmpty(agvWrkMastList)){
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -1,5 +1,6 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.Order;
import com.zy.asrs.service.ApiLogService;
@@ -53,4 +54,15 @@
        }
    }
    /*
    定时查询状态为2.作业中的单据,检查是否完成
     */
    @Scheduled(cron = "0 */1 * * * ? ")
    public void completeOrder(){
        List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("settle", 2));
        orderList.forEach(order -> {
            orderService.checkComplete(order.getOrderNo());
        });
    }
}
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -182,11 +182,11 @@
    @Transactional
    public ReturnT<String> startCarryWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
        log.info(agvWrkMastList.toString());
        //log.info(agvWrkMastList.toString());
        //任务过滤,过滤掉已存在相同目标库位的工作档
        agvWrkMastList = filter(agvWrkMastList);
        //agvWrkMastList = filter(agvWrkMastList);
        int code = agvWrkMastService.startWrk(agvWrkMastList,"carry");
        log.info(agvWrkMastList.toString());
        //log.info(agvWrkMastList.toString());
        if (Cools.isEmpty(agvWrkMastList)){
            return SUCCESS;
        }
src/main/resources/application.yml
@@ -73,16 +73,16 @@
    password: Wlzh44338
agv:
  url: localhost:8080
  taskCreatePath: /agv/task/create
  containerMoveInPath: /agv/container/moveIn
  containerMoveOutPath: /agv/container/moveOut
  containerArrivedPath: /agv/containerArrived
#  url: 10.10.10.182:9046
#  taskCreatePath: /task/create
#  containerMoveInPath: /expand/api/moveIn/container
#  containerMoveOutPath: /expand/api/moveOut/container
#  containerArrivedPath: /conveyor/containerArrived
#  url: localhost:8080
#  taskCreatePath: /agv/task/create
#  containerMoveInPath: /agv/container/moveIn
#  containerMoveOutPath: /agv/container/moveOut
#  containerArrivedPath: /agv/containerArrived
  url: 10.10.10.182:9046
  taskCreatePath: /task/create
  containerMoveInPath: /expand/api/moveIn/container
  containerMoveOutPath: /expand/api/moveOut/container
  containerArrivedPath: /conveyor/containerArrived
u8:
  url: http://192.168.1.55:8010