From 3cf9951bb386a0ce73dc523032dbffcb9c986ced Mon Sep 17 00:00:00 2001 From: cb <642514070@qq.com> Date: Fri, 11 Jul 2025 20:53:39 +0800 Subject: [PATCH] no message --- .../quartz/service/impl/OrderServiceImpl.java | 70 +++++++++++++------ 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java index ef6f2fce..2a3e8015 100644 --- a/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java +++ b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java @@ -1400,38 +1400,62 @@ public class OrderServiceImpl implements OrderService { for (OrderDetail orderDetail : orderDetails) { try { - Date updateTime = orderDetail.getUpdateTime(); OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); - if (orderMaster == null || updateTime == null) { + if (orderMaster == null) { continue; } - long waitTimeMillis; - String logType; + Date targetTime; + String logType = "已设置"; - // 根据发货类型判断等待时间 - if (orderMaster.getDeliveryType() == 2 || orderMaster.getDeliveryType() == 3) { - // 送货上门或自提:8小时 - waitTimeMillis = 8 * 60 * 60 * 1000L; // 8小时的毫秒数 - logType = orderMaster.getDeliveryType() == 2 ? "送货上门" : "自提"; - } else if (orderMaster.getDeliveryType() == 1) { - // 发快递/物流:4天 - waitTimeMillis = 4 * 24 * 60 * 60 * 1000L; // 4天的毫秒数 - logType = "发快递/物流"; + // 优先使用已设置的确认截止时间 + if (orderDetail.getConfirmStartTime() != null) { + targetTime = orderDetail.getConfirmStartTime(); + log.debug("订单[{}]使用已设置的确认截止时间:{}", orderDetail.getCode(), + com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", targetTime)); } else { - // 未知发货类型,跳过处理 - log.warn("订单[{}]发货类型未知[{}],跳过处理", orderDetail.getCode(), orderMaster.getDeliveryType()); - continue; + // 兼容旧数据,重新计算确认截止时间 + Date updateTime = orderDetail.getUpdateTime(); + if (updateTime == null) { + log.warn("订单[{}]更新时间为空,跳过处理", orderDetail.getCode()); + continue; + } + + long waitTimeMillis; + + // 根据发货类型判断等待时间 + if (orderMaster.getDeliveryType() == 2 || orderMaster.getDeliveryType() == 3) { + // 送货上门或自提:8小时 + waitTimeMillis = 8 * 60 * 60 * 1000L; // 8小时的毫秒数 + logType = orderMaster.getDeliveryType() == 2 ? "送货上门" : "自提"; + } else if (orderMaster.getDeliveryType() == 1) { + // 发快递/物流:4天 + waitTimeMillis = 4 * 24 * 60 * 60 * 1000L; // 4天的毫秒数 + logType = "发快递/物流"; + } else { + // 未知发货类型,跳过处理 + log.warn("订单[{}]发货类型未知[{}],跳过处理", orderDetail.getCode(), orderMaster.getDeliveryType()); + continue; + } + + // 计算确认截止时间 + targetTime = new Date(updateTime.getTime() + waitTimeMillis); + + // 回写到数据库,避免下次重复计算 + OrderDetail updateOrderDetail = new OrderDetail(); + updateOrderDetail.setId(orderDetail.getId()); + updateOrderDetail.setConfirmStartTime(targetTime); + orderDetailService.updateOrderDetail(updateOrderDetail); + + log.info("订单[{}]补充设置确认截止时间,发货类型[{}],截止时间:{}", + orderDetail.getCode(), logType, + com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", targetTime)); } - // 计算应该转为确认中的时间 - Date targetTime = new Date(updateTime.getTime() + waitTimeMillis); - - orderDetail.setConfirmStartTime(targetTime); // 检查是否到达目标时间 if (now.after(targetTime)) { - log.info("订单[{}]发货类型[{}]已到达等待时间,开始转为确认中状态", orderDetail.getCode(), logType); + log.info("订单[{}]确认截止时间已到,开始转为确认中状态", orderDetail.getCode()); // 更新订单状态为确认中 int result = orderDetailService.updateStatus(orderDetail.getId(), OrderStatus.FINISH_CHECK.code()); @@ -1442,8 +1466,8 @@ public class OrderServiceImpl implements OrderService { log.error("订单[{}]状态更新失败", orderDetail.getCode()); } } else { - log.debug("订单[{}]发货类型[{}]尚未到达等待时间,目标时间:{}", - orderDetail.getCode(), logType, + log.debug("订单[{}]尚未到达确认截止时间,截止时间:{}", + orderDetail.getCode(), com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", targetTime)); }