| | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.locks.ReentrantLock; |
| | | |
| | | /** |
| | | * 入库更新完成回报 |
| | |
| | | @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(); |
| | | } |
| | | } |
| | | |