zhibing.pu
2024-04-28 a661e711cebd9f0b684dc73ab732b239812f076f
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
package com.stylefeng.guns.modular.system.util;
 
import com.stylefeng.guns.modular.system.service.IDriverOnlineService;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.IOrderService;
import com.stylefeng.guns.modular.system.service.ISettlementRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.TimeZone;
 
 
/**
 * 定时任务工具类
 */
@Component
public class TaskUtil {
 
    @Autowired
    private IDriverService driverService;
 
    @Autowired
    private IOrderService orderService;
 
    @Autowired
    private JGPushUtil jgPushUtil;
 
    @Autowired
    private ISettlementRecordService settlementRecordService;
 
    public Set<Integer> driverIds = new HashSet<>();//存储需要提醒司机预约单的司机id
    
    @Autowired
    private IDriverOnlineService driverOnlineService;
 
 
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MMM-dd");
        System.err.println(sdf.format(new Date()));
    }
 
 
    /**
     * 每隔一分钟去处理的定时任务
     */
    @Scheduled(fixedRate = 1000 * 60)
    public void taskMinute(){
        try {
            //修改满足活动条件的数据(在线时长,订单量)
            driverService.taskMinute();
            //处于预约单
            orderService.reservationOrder();
            //处理结束订单后30分钟解绑小号功能
            orderService.taskMidAxbUnBindSend();
            //处理司机连续不接单的情况
            driverOnlineService.deductionDuration();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
 
 
    /**
     * 每隔五分钟去处理的定时任务
     */
    @Scheduled(fixedRate = 1000 * 60 * 5)
    public void taskFiveMinute(){
        try {
            //处理未支付订单发送短信通知
            orderService.taskSmsSend();
            for (Integer id: driverIds){
                jgPushUtil.push(1, "您的预约订单出行时间就要到了,请尽快前往预约地点接乘客", "DRIVER" + id);
            }
            this.driverIds.clear();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
 
 
    /**
     * 每天的凌晨执行的任务
     */
    @Scheduled(cron = "0 0 0 * * *")
    public void taskDay(){
        try {
            //生成当天的司机活动
            driverService.addTodayActivity();
            //处理所有司机待结算数据
            settlementRecordService.taskSettlement();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
 
 
//
//    /**
//     * 每月第一天的1点执行的任务
//     */
//    @Scheduled(cron = "0 0 1 1 * *")
//    public void taskMonth(){
//        try {
//
//        }catch (Exception e){
//            e.printStackTrace();
//        }
//    }
}