自动化立体仓库 - WMS系统
pang.jiabao
昨天 ff3316f50a7ed644c06f3924f1c9c525392a65c3
src/main/java/com/zy/third/lk/task/LKInTBScheduler.java
@@ -24,6 +24,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.locks.ReentrantLock;
/**
 * 入库更新完成回报
@@ -47,40 +48,52 @@
    @Autowired
    private ErpSqlServer erpSqlServer;
    private final ReentrantLock lock = new ReentrantLock();
    @Transactional(rollbackFor = Throwable.class)
    @Scheduled(cron = "${erp.refreshtime}")
    @Scheduled(cron = "0/10 * * * * ?")
    public void pakinOrderComplete() {
        //log.info("开始入库更新完成回报");
        // 所有订单
        List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
        DocType docType;
        for (Order order : orders) {
        // 拿不到锁直接跳过(关键)
        if (!lock.tryLock()) {
            System.out.println("上一次任务未执行完,跳过本次");
            return;
        }
            docType = docTypeService.selectById(order.getDocType());
            if (docType == null) {
                log.error("该订单类型不存在:" + order.getDocType());
                throw new CoolException("服务器内部错误,请联系管理员");
            }
            List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
            if (docType.getPakin() == 1) {
                //入库单
                for (OrderDetl orderDetl : orderDetls) {
                    log.info("该入库单对象:" + orderDetl);
                    insertInDet(orderDetl);
        // 所有订单
        try {
            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L).last("TOP 2"));
            DocType docType;
            for (Order order : orders) {
                docType = docTypeService.selectById(order.getDocType());
                if (docType == null) {
                    log.error("该订单类型不存在:" + order.getDocType());
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
                insertInHed(order);
            } else {
                //出库单
                for (OrderDetl orderDetl : orderDetls) {
                    log.info("该出库单对象:" + orderDetl);
                    insertOutDet(orderDetl);
                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
                if (docType.getPakin() == 1) {
                    //入库单
                    for (OrderDetl orderDetl : orderDetls) {
                        log.info("该入库单对象:" + orderDetl);
                        insertInDet(orderDetl);
                    }
                    insertInHed(order);
                } else {
                    //出库单
                    for (OrderDetl orderDetl : orderDetls) {
                        log.info("该出库单对象:" + orderDetl);
                        insertOutDet(orderDetl);
                    }
                    insertOutHed(order);
                }
                insertOutHed(order);
                // 修改订单状态 4.完成 ===>> 6.已上报
                if (!orderService.updateSettle(order.getId(), 6L, null)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
            }
            // 修改订单状态 4.完成 ===>> 6.已上报
            if (!orderService.updateSettle(order.getId(), 6L, null)) {
                throw new CoolException("服务器内部错误,请联系管理员");
            }
        } finally {
            lock.unlock();
        }
    }