package com.stylefeng.guns.modular.system.util;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.stylefeng.guns.modular.crossCity.dao.LineShiftDriverMapper;
|
import com.stylefeng.guns.modular.crossCity.dao.OrderCrossCityMapper;
|
import com.stylefeng.guns.modular.crossCity.model.LineShiftDriver;
|
import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
|
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
|
import com.stylefeng.guns.modular.system.model.Driver;
|
import com.stylefeng.guns.modular.system.model.OrderCancel;
|
import com.stylefeng.guns.modular.system.service.IDriverService;
|
import com.stylefeng.guns.modular.system.service.IOrderCancelService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.ApplicationArguments;
|
import org.springframework.boot.ApplicationRunner;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Timer;
|
import java.util.TimerTask;
|
|
/**
|
* 项目启动执行类
|
*/
|
@Component
|
public class ApplicationRunnerUtil implements ApplicationRunner {
|
|
@Autowired
|
private IOrderCrossCityService orderCrossCityService;
|
|
@Autowired
|
private IOrderCancelService orderCancelService;
|
|
@Resource
|
private LineShiftDriverMapper lineShiftDriverMapper;
|
|
@Resource
|
private OrderCrossCityMapper orderCrossCityMapper;
|
|
@Autowired
|
private IDriverService driverService;
|
|
|
|
@Override
|
public void run(ApplicationArguments args) throws Exception {
|
this.taskOrderCrossCity();
|
}
|
|
|
/**
|
* 创建定时任务定时取消订单
|
*/
|
private void taskOrderCrossCity(){
|
List<OrderCrossCity> orderCrossCities = orderCrossCityService.selectList(new EntityWrapper<OrderCrossCity>().eq("state", 7).eq("isDelete", 1));
|
for(OrderCrossCity orderCrossCity : orderCrossCities){
|
long time = System.currentTimeMillis() - orderCrossCity.getInsertTime().getTime();
|
TimerTask timerTask = new TimerTask() {
|
@Override
|
public void run() {
|
OrderCrossCity orderCrossCity1 = orderCrossCityService.selectById(orderCrossCity.getId());
|
if(orderCrossCity1.getState() == 7 && orderCrossCity1.getPayMoney() == null){
|
orderCrossCity1.setState(10);
|
orderCrossCityService.updateById(orderCrossCity1);
|
|
OrderCancel orderCancel = new OrderCancel();
|
orderCancel.setOrderId(orderCrossCity.getId());
|
orderCancel.setOrderType(3);
|
orderCancel.setReason("用户未及时付款,系统自动取消订单");
|
orderCancel.setRemark("用户未及时付款,系统自动取消订单");
|
orderCancel.setState(2);
|
orderCancel.setInsertTime(new Date());
|
orderCancel.setUserType(2);
|
orderCancelService.insert(orderCancel);
|
|
//修改司机座位
|
LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId());
|
lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber());
|
lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity.getTravelMode() == 1 ? "," : "") + orderCrossCity.getSeatNumber());
|
lineShiftDriverMapper.updateById(lineShiftDriver);
|
|
//修改司机为空闲
|
List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11);
|
if(orderCrossCities.size() == 0){
|
Driver driver = driverService.selectById(orderCrossCity.getDriverId());
|
driver.setState(2);
|
driverService.updateById(driver);
|
}
|
}
|
}
|
};
|
Timer timer = new Timer();
|
timer.schedule(timerTask, time < 0 ? 0 : time);
|
}
|
System.err.println("【创建自动取消定时任务成功】");
|
}
|
}
|