#
Junjie
2024-08-01 fd5b35e658ac8cd3d9658c5cc5e1219c9d13915c
#
2个文件已添加
3个文件已修改
230 ■■■■■ 已修改文件
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/OrderSettleType.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/OrderService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/OrderSettleType.java
New file
@@ -0,0 +1,41 @@
package com.zy.asrs.wms.asrs.entity.enums;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.SpringUtils;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.LocSts;
import com.zy.asrs.wms.asrs.entity.OrderSettle;
import com.zy.asrs.wms.asrs.service.LocStsService;
import com.zy.asrs.wms.asrs.service.OrderSettleService;
public enum OrderSettleType {
    INIT(0, "初始化"),
    WAIT(1, "待处理"),
    WORKING(2, "作业中"),
    CANCEL(3, "已取消"),
    COMPLETE(4, "已完成"),
    WAIT_CANCEL(5, "准备取消"),
    REPORT_COMPLETE(6, "上报完成"),
    ;
    public Integer id;
    public String desc;
    OrderSettleType(Integer id, String desc) {
        this.id = id;
        this.desc = desc;
    }
    public long val() {
        OrderSettleService service = SpringUtils.getBean(OrderSettleService.class);
        OrderSettle orderSettle = service.getOne(new LambdaQueryWrapper<OrderSettle>().eq(OrderSettle::getSettle, id));
        if (orderSettle == null) {
            throw new CoolException("LocStsType Error!");
        }
        return orderSettle.getId();
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/OrderService.java
@@ -13,4 +13,6 @@
    boolean deleteOrder(Long orderId);
    boolean checkOrderComplete(Long orderId);//检测订单是否完成
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java
@@ -204,4 +204,26 @@
        }
        return true;
    }
    @Override
    public boolean checkOrderComplete(Long orderId) {
        Order order = this.getById(orderId);
        if (order == null) {
            return false;
        }
        boolean complete = true;
        List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId));
        if(orderDetls.isEmpty()) {
            complete = false;
        }
        for (OrderDetl orderDetl : orderDetls) {
            if (!orderDetl.getAnfme().equals(orderDetl.getQty())) {
                complete = false;
            }
        }
        return complete;
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
New file
@@ -0,0 +1,154 @@
package com.zy.asrs.wms.asrs.timer;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.*;
import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
import com.zy.asrs.wms.asrs.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Component
public class TaskLogTimer {
    @Autowired
    private TaskService taskService;
    @Autowired
    private TaskDetlService taskDetlService;
    @Autowired
    private TaskDetlFieldService taskDetlFieldService;
    @Autowired
    private TaskLogService taskLogService;
    @Autowired
    private TaskDetlLogService taskDetlLogService;
    @Autowired
    private TaskDetlFieldLogService taskDetlFieldLogService;
    @Autowired
    private OrderService orderService;
    @Autowired
    private OrderDetlService orderDetlService;
    @Scheduled(cron = "0/3 * * * * ? ")
    @Transactional
    public void inExecute() {
        InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
        try {
            //获取入库完成任务
            List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, 100));
            if (list.isEmpty()) {
                return;
            }
            for (Task task : list) {
                Long hostId = task.getHostId();
                //保存任务历史档
                TaskLog taskLog = new TaskLog();
                taskLog.sync(task);
                if (!taskLogService.save(taskLog)) {
                    throw new CoolException("保存任务历史档失败");
                }
                //删除任务历史档案
                if (!taskService.removeById(task.getId())) {
                    throw new CoolException("删除任务档失败");
                }
                //保存任务明细历史档
                List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
                if(taskDetls.isEmpty()) {
                    throw new CoolException("任务明细不存在");
                }
                for (TaskDetl taskDetl : taskDetls) {
                    TaskDetlLog taskDetlLog = new TaskDetlLog();
                    taskDetlLog.sync(taskDetl);
                    if (!taskDetlLogService.save(taskDetlLog)) {
                        throw new CoolException("保存任务明细历史档失败");
                    }
                    //保存明细扩展字段历史档
                    List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId));
                    for (TaskDetlField detlField : detlFields) {
                        //明细扩展字段数据保存至历史档
                        TaskDetlFieldLog taskDetlFieldLog = new TaskDetlFieldLog();
                        taskDetlFieldLog.sync(detlField);
                        if (!taskDetlFieldLogService.save(taskDetlFieldLog)) {
                            throw new CoolException("明细扩展字段转历史档案失败");
                        }
                        //删除明细扩展
                        boolean removeField = taskDetlFieldService.removeById(detlField.getId());
                        if(!removeField){
                            throw new CoolException("删除明细扩展失败");
                        }
                    }
                    //删除明细
                    boolean removeDetl = taskDetlService.removeById(taskDetl.getId());
                    if(!removeDetl){
                        throw new CoolException("明细删除失败");
                    }
                }
                //更新订单信息
                for (TaskDetl taskDetl : taskDetls) {
                    OrderDetl orderDetl = orderDetlService.getById(taskDetl.getDetlId());
                    if (orderDetl == null) {
                        throw new CoolException("订单明细不存在");
                    }
                    orderDetl.setWorkQty(orderDetl.getWorkQty() - taskDetl.getAnfme());//工作中数量减少
                    orderDetl.setQty(orderDetl.getQty() + taskDetl.getAnfme());//已完成数量增加
                    orderDetl.setUpdateTime(new Date());
                    if (!orderDetlService.updateById(orderDetl)) {
                        throw new CoolException("更新订单明细失败");
                    }
                    //检测订单是否完成
                    boolean checkOrderComplete = orderService.checkOrderComplete(orderDetl.getOrderId());
                    if (checkOrderComplete) {
                        //订单已经完成
                        Order order = orderService.getById(orderDetl.getOrderId());
                        if(order == null) {
                            throw new CoolException("订单不存在");
                        }
                        order.setOrderSettle(OrderSettleType.COMPLETE.val());
                        order.setUpdateTime(new Date());
                        if (!orderService.save(order)) {
                            throw new CoolException("订单更新失败");
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            InterceptorIgnoreHelper.clearIgnoreStrategy();
        }
    }
    @Scheduled(cron = "0/3 * * * * ? ")
    @Transactional
    public void outExecute() {
        InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
        try {
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            InterceptorIgnoreHelper.clearIgnoreStrategy();
        }
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
@@ -68,7 +68,7 @@
                        List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
                        if(taskDetls.isEmpty()) {
                            throw new CoolException("库存明细不存在");
                            throw new CoolException("任务明细不存在");
                        }
                        //添加库存明细
@@ -113,7 +113,7 @@
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            InterceptorIgnoreHelper.clearIgnoreStrategy();
        }
@@ -122,7 +122,14 @@
    @Scheduled(cron = "0/3 * * * * ? ")
    @Transactional
    public void outExecute() {
        InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
        try {
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            InterceptorIgnoreHelper.clearIgnoreStrategy();
        }
    }
}