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 orderCrossCities = orderCrossCityService.selectList(new EntityWrapper().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 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("【创建自动取消定时任务成功】"); } }