Pu Zhibing
3 天以前 2792ef8f8472732999d4eafeab25d2eb6e2c5bad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.stylefeng.guns.modular.system.util;
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.util.ToolUtil;
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.Company;
import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.model.OrderCancel;
import com.stylefeng.guns.modular.system.service.ICompanyService;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.IOrderCancelService;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest;
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;
 
    @Autowired
    private ICompanyService iCompanyService;
 
 
 
    @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);
 
                        //中台修改订单状态
                        ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
                        request1.setOrderId(orderCrossCity1.getTravelId());
                        request1.setStatus(orderCrossCity1.getState());
                        if (null != orderCrossCity1.getDriverId()) {
                            Driver driver2 = driverService.selectById(orderCrossCity1.getDriverId());
                            Company company = iCompanyService.selectById(driver2.getCompanyId());
                            request1.setDriverId(driver2.getEmpId().toString());
                            request1.setSupplierShopId(company.getEnterCode());
                        }
                        if (2 == orderCrossCity1.getPromotion() && null != orderCrossCity1.getPromotionDriverId()) {
                            Driver driver2 = driverService.selectById(orderCrossCity1.getPromotionDriverId());
                            request1.setPromoterId(driver2.getEmpId().toString());
                        }
                        OrderUtil.modifyTravelItinerary(request1);
 
                        //未支付的情况取消订单
                        if(null == orderCrossCity1.getPayType() && ToolUtil.isNotEmpty(orderCrossCity1.getTravelId())){
                            OrderUtil.tradeOrderCancel(orderCrossCity1.getTravelId());
                        }
 
                        OrderCancel orderCancel = new OrderCancel();
                        orderCancel.setOrderId(orderCrossCity1.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(orderCrossCity1.getLineShiftDriverId());
                        lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity1.getPeopleNumber());
                        lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity1.getTravelMode() == 1 ? "," : "") + orderCrossCity1.getSeatNumber());
                        lineShiftDriverMapper.updateById(lineShiftDriver);
 
                        //修改司机为空闲
                        List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity1.getDriverId(), 2, 3, 4, 5, 11);
                        if(orderCrossCities.size() == 0){
                            Driver driver = driverService.selectById(orderCrossCity1.getDriverId());
                            driver.setState(2);
                            driverService.updateById(driver);
                        }
                    }
                }
            };
            Timer timer = new Timer();
            timer.schedule(timerTask, time < 0 ? 0 : time);
        }
        System.err.println("【创建自动取消定时任务成功】");
    }
}