liulin
2025-07-07 1d7a3213f681657a37a6d1dd8501e9a3bf16c809
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
package com.fengdu.gas.service.quartz;
 
import com.fengdu.gas.common.util.LocalDateTimeUtils;
import com.fengdu.gas.service.DataUploadRecordDayService;
import com.fengdu.gas.service.DataUploadRecordHourService;
import com.fengdu.gas.service.DataUploadRecordMonthService;
import com.fengdu.gas.service.DataUploadRecordService;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.fengdu.gas.common.ConstantFactory;
import com.fengdu.gas.common.ExecutedResult;
import com.fengdu.gas.common.util.LocalDateTimeUtil;
import com.fengdu.gas.common.util.NumericUtil;
import com.fengdu.gas.common.util.StringUtil;
import com.fengdu.gas.repository.impl.QuartzTaskErrorMapperImpl;
import com.fengdu.gas.repository.impl.QuartzTaskRecordMapperImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.util.Objects;
 
@Service
public class QuartzExecutor {
    private static Logger logger = LoggerFactory.getLogger(QuartzExecutor.class);
 
    @Autowired
    private QuartzTaskRecordMapperImpl taskRecordsDao;
    @Autowired
    private QuartzTaskErrorMapperImpl taskErrorsDao;
    @Autowired
    private DataUploadRecordService dataUploadRecordService;
 
    /**
     * 执行job
     * @param executorName 执行器名称(方法名)
     * @param jobParameter 执行参数
     */
    public ExecutedResult<String> execute(String executorName, String jobParameter) {
        try {
            // 根据执行器key,查找执行器的方法(入参:String jobParameter,返参:ExecutedResult<String>)
            Method method = QuartzExecutor.class.getMethod(executorName, String.class);
            return (ExecutedResult<String>)method.invoke(this, jobParameter);
        } catch (Exception e) {
            return ExecutedResult.failed(e.toString());
        }
    }
    /***
     * job执行器-按上小时统计上报数据
     * @param jobParameter 执行参数
     */
    public ExecutedResult<String> hourDataUpload(String jobParameter) {
        try {
            long startTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.upHourStartTime()).getTime();
            long endTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.upHourEndTime()).getTime();
            dataUploadRecordService.dataUpload(startTime,endTime,1);
            return ExecutedResult.success();
        } catch (Exception e) {
            return ExecutedResult.failed(e.toString());
        }
    }
    /***
     * job执行器-按昨天统计上报数据
     * @param jobParameter 执行参数
     */
    public ExecutedResult<String> dayDataUpload(String jobParameter) {
        try {
            long startTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.yesterdayStartTime()).getTime();
            long endTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.yesterdayEndTime()).getTime();
            dataUploadRecordService.dataUpload(startTime,endTime,2);
            return ExecutedResult.success();
        } catch (Exception e) {
            return ExecutedResult.failed(e.toString());
        }
    }
    /***
     * job执行器-按月统计上报数据
     * @param jobParameter 执行参数
     */
    public ExecutedResult<String> monthDataUpload(String jobParameter) {
        try {
            long startTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.lastMonthStartTime()).getTime();
            long endTime= LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.lastMonthEndTime()).getTime();
            dataUploadRecordService.dataUpload(startTime,endTime,3);
            return ExecutedResult.success();
        } catch (Exception e) {
            return ExecutedResult.failed(e.toString());
        }
    }
    /***
     * job执行器-清理任务调度日志
     * @param jobParameter 执行参数
     */
    public ExecutedResult<String> clearQuartzLog(String jobParameter) {
        try {
            int keepDays = ConstantFactory.NUM15;
            if (StringUtil.isNotNullOrEmpty(jobParameter)) {
                JsonElement element = new JsonParser().parse(jobParameter);
                if (Objects.nonNull(element) && !element.isJsonNull()) {
                    JsonObject data = element.getAsJsonObject();
                    if (data.has("keepDays") && !data.get("keepDays").isJsonNull()) {
                        keepDays = NumericUtil.tryParseInt(data.get("keepDays").getAsString(), ConstantFactory.NUM15);
                    }
                }
            }
            LocalDateTime today = LocalDateTimeUtil.todayFirst();
            LocalDateTime limitDate = LocalDateTimeUtil.dateTimeAddDay(today, -1L * keepDays);
 
            taskRecordsDao.clear4DateTime(LocalDateTimeUtil.getTimeStamp(limitDate).getTime());
            taskErrorsDao.clear4DateTime(LocalDateTimeUtil.getTimeStamp(limitDate).getTime());
            return ExecutedResult.success();
        } catch (Exception e) {
            return ExecutedResult.failed(e.toString());
        }
    }
}