TaskCheckIsOverdueTask.java
2.8 KB
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
package com.xiniunet.quartz;
import com.alibaba.dubbo.common.utils.CollectionUtils;
import com.xiniunet.foundation.request.MessageBatchCreateRequest;
import com.xiniunet.foundation.service.FoundationService;
import com.xiniunet.framework.security.Passport;
import com.xiniunet.framework.util.DateUtil;
import com.xiniunet.framework.util.MQUtil;
import com.xiniunet.task.dal.TaskMapper;
import com.xiniunet.task.dal.TaskUserMapper;
import com.xiniunet.task.message.TaskAutoOverdueMessage;
import com.xiniunet.task.po.TaskPO;
import com.xiniunet.task.po.TaskUserPO;
import com.xiniunet.task.request.TaskUserFindRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* Created on 2018/1/5.
*
* @author 薛磊
* @since 1.0.0
*/
@Component
public class TaskCheckIsOverdueTask {
@Autowired
private TaskMapper taskMapper;
private Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* 每半小时检查一次是否有快过期的任务,抛送延时消息处理
*/
public void execute(){
Calendar begin = Calendar.getInstance();
Calendar end = Calendar.getInstance();
begin.set(Calendar.SECOND, 0);
end.set(Calendar.SECOND, 0);
end.add(Calendar.MINUTE, 30);
Date beginTime = begin.getTime();
Date endTime = end.getTime();
logger.warn("定时任务-检查是否有快过期的任务开始----------------->>>>>>>>>:beginTime:"
+ DateUtil.formatDate(beginTime, "yyyy-MM-dd HH:mm:ss") + ",endTime:"
+ DateUtil.formatDate(endTime, "yyyy-MM-dd HH:mm:ss"));
List<TaskPO> taskList = taskMapper.findWillOverdue(beginTime, endTime);
if (taskList != null) {
for (TaskPO task : taskList) {
sendMessage(task);
}
}
logger.warn("定时任务-检查是否有快过期的任务结束----------------->>>>>>>>>:"
+ DateUtil.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"));
}
private void sendMessage(TaskPO task) {
Passport passport = new Passport();
passport.setTenantId(task.getTenantId());
passport.setUserId(task.getDoUserId());
//发送自动逾期的消息
TaskAutoOverdueMessage taskAutoOverdueMessage = new TaskAutoOverdueMessage();
taskAutoOverdueMessage.setId(task.getId());
taskAutoOverdueMessage.setPassport(passport);
taskAutoOverdueMessage.setDelayTime((int)(task.getEndTime().getTime()-(new Date()).getTime()));
if(!MQUtil.send(taskAutoOverdueMessage)){
logger.warn("发送自动逾期的消息失败!");
}
}
}