未提车和未还车没处理的订单处理

This commit is contained in:
2025-09-14 11:39:30 +08:00
parent 47dc672789
commit 798f68aa2b
2 changed files with 54 additions and 45 deletions

View File

@ -688,14 +688,15 @@ public class OrderServiceImpl implements OrderService {
return getOrderDetailByOrderNo(orderMainPO.getOrderNo());
}
@Transactional(rollbackFor = Exception.class)
@Override
public void rejectRentOrder(RejectOrderReq rejectOrderReq) {
OrderMainPO orderMainPO = queryOrderMainPoByOrderNo(rejectOrderReq.getOrderNo(), "0");
if(!orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_PICK.getCode())){
throw new BizException("订单状态异常,非待取车状态,无法驳回");
if(!orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_PICK.getCode())||!orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_RETURN.getCode())){
throw new BizException("订单状态异常,非待取车或待还车状态,无法驳回");
}
SimpleUserInfoDTO userInfoDTO = jwtUtil.getUserInfoFromToken();
if(orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_PICK.getCode())){
//获取租车子订单
LambdaQueryWrapper<OrderSubPO> orderSubWrapper = new LambdaQueryWrapper<>();
orderSubWrapper.eq(OrderSubPO::getOrderId, orderMainPO.getOrderId())
@ -729,6 +730,14 @@ public class OrderServiceImpl implements OrderService {
}
}
});
} else if(orderMainPO.getOrderStatus().equals(OrderStatusEnum.WAIT_RETURN.getCode())){
LambdaUpdateWrapper<OrderMainPO> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(OrderMainPO::getOrderStatus, OrderStatusEnum.RENT_ING.getCode());
updateWrapper.set(OrderMainPO::getActEndRentTime, LocalDateTime.now());
updateWrapper.eq(OrderMainPO::getOrderNo, rejectOrderReq.getOrderNo());
orderMainRepo.update(updateWrapper);
}
}
@Transactional(rollbackFor = Exception.class)

View File

@ -14,11 +14,11 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.Arrays;
import java.util.List;
/**
* 当前未提车订单处理任务
* 当前未提车或未还车订单处理任务
*/
@Slf4j
@Component
@ -41,34 +41,34 @@ public class NoPickCarProcessTask {
@Scheduled(cron = "0 5 0 * * ?")//0点过5分执行
@SchedulerLock(name = "checkNoPickCarOrders", lockAtMostFor = "9m", lockAtLeastFor = "1m")
public void checkNoPickCarOrders() {
log.info("开始执行当天未提车订单检查任务");
log.info("开始执行当天未提车或未还车订单检查任务");
try {
processNoPickCarOrders();
log.info("当天未提车订单检查任务执行完成");
log.info("当天未提车或未还车订单检查任务执行完成");
} catch (Exception e) {
log.error("当天未提车订单检查任务失败", e);
log.error("当天未提车或未还车订单检查任务失败", e);
}
}
/**
* 处理当天未提车订单
* 处理当天未提车或未还车订单
*/
private void processNoPickCarOrders() {
try {
// 查询所有进行中的订单且当前时间已超过预计还车时间
LambdaQueryWrapper<OrderMainPO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OrderMainPO::getDelFlag, "0").in(OrderMainPO::getOrderStatus,
Collections.singletonList(OrderStatusEnum.WAIT_PICK.getCode()))
Arrays.asList(OrderStatusEnum.WAIT_PICK.getCode(), OrderStatusEnum.WAIT_RETURN.getCode()))
.lt(OrderMainPO::getUpdateTime, LocalDateTime.now());
List<OrderMainPO> orders = orderMainRepo.list(queryWrapper);
if (orders.isEmpty()) {
log.info("无当天未提车订单");
log.info("无当天未提车或未还车订单");
return;
}
log.info("发现{}个当天未提车订单,开始处理", orders.size());
log.info("发现{}个当天未提车或未还车订单,开始处理", orders.size());
int successCount = 0;
for (OrderMainPO order : orders) {
@ -79,20 +79,20 @@ public class NoPickCarProcessTask {
}
}
log.info("当天未提车订单处理完成,成功处理{}个订单", successCount);
log.info("当天未提车或未还车订单处理完成,成功处理{}个订单", successCount);
} catch (Exception e) {
log.error("处理当天未提车订单失败", e);
log.error("处理当天未提车或未还车订单失败", e);
throw e;
}
}
/**
* 处理当天未提车订单
* 处理当天未提车或未还车订单
*
* @param orderMainPO
*/
private void processWayPay(OrderMainPO orderMainPO) {
RejectOrderReq rejectOrderReq = new RejectOrderReq(orderMainPO.getOrderNo(), "当天未提车取消");
RejectOrderReq rejectOrderReq = new RejectOrderReq(orderMainPO.getOrderNo(), "当天未提车或未还车取消");
orderService.rejectRentOrder(rejectOrderReq);
}
}