增加定时器来处理 发货中的状态转为确认中

This commit is contained in:
cb 2025-07-10 17:12:48 +08:00
parent 02528c930f
commit 9a3245380b
3 changed files with 73 additions and 0 deletions

View File

@ -14,4 +14,6 @@ public interface OrderService {
void timeOutOrder();
void AfterSalesAndShelveOrder() ;
void orderServerToFinishCheck();
}

View File

@ -844,6 +844,8 @@ public class OrderServiceImpl implements OrderService {
}
public long appMixOrderCount(OrderListRequest orderListRequest) {
long count = 0;
@ -1391,4 +1393,62 @@ public class OrderServiceImpl implements OrderService {
}
@Override
public void orderServerToFinishCheck() {
List<OrderDetail> orderDetails = orderDetailService.selectByStatus(Collections.singletonList(OrderStatus.SERVER.code()));
Date now = new Date();
for (OrderDetail orderDetail : orderDetails) {
try {
Date updateTime = orderDetail.getUpdateTime();
OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId());
if (orderMaster == null || updateTime == null) {
continue;
}
long waitTimeMillis;
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 = "发快递/物流";
} else {
// 未知发货类型跳过处理
log.warn("订单[{}]发货类型未知[{}],跳过处理", orderDetail.getCode(), orderMaster.getDeliveryType());
continue;
}
// 计算应该转为确认中的时间
Date targetTime = new Date(updateTime.getTime() + waitTimeMillis);
// 检查是否到达目标时间
if (now.after(targetTime)) {
log.info("订单[{}]发货类型[{}]已到达等待时间,开始转为确认中状态", orderDetail.getCode(), logType);
// 更新订单状态为确认中
int result = orderDetailService.updateStatus(orderDetail.getId(), OrderStatus.FINISH_CHECK.code());
if (result > 0) {
log.info("订单[{}]状态已成功更新为确认中", orderDetail.getCode());
} else {
log.error("订单[{}]状态更新失败", orderDetail.getCode());
}
} else {
log.debug("订单[{}]发货类型[{}]尚未到达等待时间,目标时间:{}",
orderDetail.getCode(), logType,
com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", targetTime));
}
} catch (Exception e) {
log.error("处理订单[{}]自动转确认中状态时发生异常", orderDetail.getCode(), e);
}
}
}
}

View File

@ -67,4 +67,15 @@ public class OrderTask {
log.error(e.getMessage(), e);
}
}
/**
* 配件订单服务中转确认中
*/
public void orderServerToFinishCheck() {
try {
orderService.AfterSalesAndShelveOrder();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}