完成订单自动完成任务
This commit is contained in:
parent
94ff075a1e
commit
982e6d7218
@ -5,6 +5,7 @@ import com.aircraft.modules.order.domain.dto.OrderMainPageQueryDTO;
|
||||
import com.aircraft.modules.order.domain.dto.UpdateOrderDTO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -95,4 +96,21 @@ public interface IOrderMainService extends IService<OrderMain> {
|
||||
* @param updateOrderMain {@link OrderMain}
|
||||
*/
|
||||
void finishMainOrder(OrderMain updateOrderMain);
|
||||
|
||||
/**
|
||||
* 获取订单状态为飞行员确认中且时间小于等于当前时间finishTime的
|
||||
*
|
||||
* @param finishTime 自动完成时间
|
||||
* @return {@link List<OrderMain>}
|
||||
*/
|
||||
List<OrderMain> obtainOrderNotFinish(Date finishTime);
|
||||
|
||||
/**
|
||||
* 根据订单ID修改订单状态
|
||||
*
|
||||
* @param orderIds 订单ID集合
|
||||
* @param mainOrderStatus 结算状态
|
||||
*/
|
||||
void updateAutoFinishOrder(List<Long> orderIds, Integer mainOrderStatus);
|
||||
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.aircraft.modules.order.domain.OrderMain;
|
||||
import com.aircraft.modules.order.domain.dto.OrderMainPageQueryDTO;
|
||||
import com.aircraft.modules.order.domain.dto.UpdateOrderDTO;
|
||||
import com.aircraft.modules.order.domain.enums.ConfirmStatusEnum;
|
||||
import com.aircraft.modules.order.domain.enums.MainOrderStatusEnum;
|
||||
import com.aircraft.modules.order.mapper.OrderMainMapper;
|
||||
import com.aircraft.modules.order.service.IOrderMainService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@ -15,6 +17,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -133,4 +136,25 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
||||
OrderMain::getConfirmTime, updateOrderMain.getConfirmTime())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OrderMain> obtainOrderNotFinish(Date finishTime) {
|
||||
return list(Wrappers.lambdaQuery(OrderMain.class)
|
||||
.eq(OrderMain::getMainOrderStatus, MainOrderStatusEnum.PROCESSING.getCode())
|
||||
.eq(OrderMain::getConfirmStatus, ConfirmStatusEnum.PILOT_CONFIRMED.getCode())
|
||||
.le(OrderMain::getOrderFinishTime, finishTime)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateAutoFinishOrder(List<Long> orderIds, Integer mainOrderStatus) {
|
||||
if (CollectionUtil.isEmpty(orderIds)) {
|
||||
return;
|
||||
}
|
||||
this.update(Wrappers.<OrderMain>lambdaUpdate()
|
||||
.in(OrderMain::getId, orderIds)
|
||||
.set(OrderMain::getMainOrderStatus, mainOrderStatus)
|
||||
.set(OrderMain::getOrderFinishTime, new Date())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,17 @@
|
||||
package com.aircraft.modules.quartz.task;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.aircraft.modules.order.domain.OrderMain;
|
||||
import com.aircraft.modules.order.domain.enums.MainOrderStatusEnum;
|
||||
import com.aircraft.modules.order.service.IOrderMainService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单自动完成定时任务
|
||||
*
|
||||
@ -15,10 +24,28 @@ import org.springframework.stereotype.Service;
|
||||
@Service("orderTask")
|
||||
public class OrderTask {
|
||||
|
||||
@Resource
|
||||
private IOrderMainService orderMainService;
|
||||
|
||||
/**
|
||||
* 订单自动完成定时任务
|
||||
*
|
||||
* @param hour 小时
|
||||
*/
|
||||
public void orderAutoFinishTask() {
|
||||
log.info("订单自动完成定时任务开始执行");
|
||||
public void orderAutoFinishTask(Integer hour) {
|
||||
log.info("订单自动完成定时任务开始执行,参数:{}", hour);
|
||||
// 订单状态为飞行中,且确认状态为飞行员确认,距离时间是超过xx小时,就会自动完成
|
||||
Date currentTime = new Date();
|
||||
Date finishTime = DateUtil.offsetHour(currentTime, -hour);
|
||||
|
||||
List<OrderMain> orderMainList = orderMainService.obtainOrderNotFinish(finishTime);
|
||||
|
||||
if (CollectionUtil.isEmpty(orderMainList)) {
|
||||
log.info("订单自动完成定时任务无订单");
|
||||
}
|
||||
List<Long> orderIds = orderMainList.stream().map(OrderMain::getId).toList();
|
||||
// 更新订单状态
|
||||
orderMainService.updateAutoFinishOrder(orderIds, MainOrderStatusEnum.COMPLETED.getCode());
|
||||
log.info("订单自动完成定时任务执行完毕");
|
||||
}
|
||||
}
|
||||
|
@ -2,11 +2,14 @@ package com.aircraft;
|
||||
|
||||
//import com.aircraft.modules.system.domain.FmsAcAircraftDevice;
|
||||
//import com.aircraft.modules.system.service.FmsAcAircraftDeviceService;
|
||||
import com.aircraft.modules.quartz.task.OrderTask;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
@ActiveProfiles("dev")
|
||||
public class EladminSystemApplicationTests {
|
||||
@ -19,5 +22,16 @@ public class EladminSystemApplicationTests {
|
||||
|
||||
public static void main(String[] args) {
|
||||
}
|
||||
|
||||
@Resource
|
||||
private OrderTask orderTask;
|
||||
|
||||
/**
|
||||
* 测试自动完成订单定时任务
|
||||
*/
|
||||
@Test
|
||||
public void orderAutoFinishTask() {
|
||||
orderTask.orderAutoFinishTask(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user