TaskCheckIsOverdueJob.java
5.39 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
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.xiniunet.quartz;
import com.alibaba.dubbo.common.utils.CollectionUtils;
import com.alibaba.fastjson.JSON;
import com.xiniunet.framework.security.Identity;
import com.xiniunet.framework.security.Passport;
import com.xiniunet.framework.util.MQUtil;
import com.xiniunet.framework.util.SpringContext;
import com.xiniunet.master.domain.system.User;
import com.xiniunet.master.request.system.UserFindRequest;
import com.xiniunet.master.request.system.UserGetRequest;
import com.xiniunet.master.response.system.UserFindResponse;
import com.xiniunet.master.response.system.UserGetResponse;
import com.xiniunet.master.service.MasterService;
import com.xiniunet.quartz.base.XNQuartzJob;
import com.xiniunet.quartz.base.XNQuartzJobData;
import com.xiniunet.task.biz.TaskManager;
import com.xiniunet.task.biz.TaskManagerImpl;
import com.xiniunet.task.constant.Constant;
import com.xiniunet.task.dal.TaskMapper;
import com.xiniunet.task.dal.TaskUserMapper;
import com.xiniunet.task.domain.Task;
import com.xiniunet.task.message.TaskPushAppMessageMessage;
import com.xiniunet.task.po.TaskPO;
import com.xiniunet.task.po.TaskUserPO;
import com.xiniunet.task.request.TaskGetRequest;
import com.xiniunet.task.request.TaskOverdueRequest;
import com.xiniunet.task.request.TaskUserFindRequest;
import com.xiniunet.task.response.TaskGetResponse;
import com.xiniunet.task.response.TaskOverdueResponse;
import com.xiniunet.xntalk.domain.UnionEventMessage;
import com.xiniunet.xntalk.request.AttachMessageBatchPushRequest;
import com.xiniunet.xntalk.request.AttachMessagePushRequest;
import com.xiniunet.xntalk.request.IdentityExchangeRequest;
import com.xiniunet.xntalk.request.NotificationUnionGetRequest;
import com.xiniunet.xntalk.response.AttachMessageBatchPushResponse;
import com.xiniunet.xntalk.response.AttachMessagePushResponse;
import com.xiniunet.xntalk.response.IdentityExchangeResponse;
import com.xiniunet.xntalk.response.NotificationUnionGetResponse;
import com.xiniunet.xntalk.service.UnionService;
import org.quartz.*;
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.Date;
import java.util.List;
/**
* Created by YQ on 2018-05-24.
*/
@Component
public class TaskCheckIsOverdueJob extends XNQuartzJob {
private Logger logger = LoggerFactory.getLogger(this.getClass());
public TaskCheckIsOverdueJob()
{
this.setJobTag("TaskCheckIsOverdueJob");
}
@Autowired
private TaskManager taskManager;
@Autowired
private TaskMapper taskMapper;
/**
* 任务检查逾期时间调度器
* @param jobExecutionContext
* @throws JobExecutionException
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
if(taskManager==null){
taskManager = SpringContext.getApplicationContext().getBean(TaskManagerImpl.class);
}
if(taskMapper == null){
taskMapper = SpringContext.getApplicationContext().getBean(TaskMapper.class);
}
//获取传递信息task
String data = jobExecutionContext.getMergedJobDataMap().getString("data");
XNQuartzJobData xnQuartzJobData = JSON.toJavaObject(JSON.parseObject(data), XNQuartzJobData.class);
Passport passport = xnQuartzJobData.getPassport();
TaskGetRequest taskGetRequest = new TaskGetRequest();
taskGetRequest.setId(xnQuartzJobData.getId());
TaskPO task = taskMapper.getById(xnQuartzJobData.getId(), passport);
if(task == null){
logger.warn("---------任务信息不存在");
return;
}
//任务没有完成没有终止时进行是否逾期判断
Date now = new Date();
if(task.getIsDone() != null && !task.getIsDone() && task.getIsAbort() !=null && !task.getIsAbort()
&& task.getIsOverdue() != null && !task.getIsOverdue()) {
//当前时间大于等于任务结束时间进行逾期操作
if (now.getTime() >= task.getEndTime().getTime()) {
TaskOverdueRequest taskOverdueRequest = new TaskOverdueRequest();
taskOverdueRequest.setIsOverdue(true);
taskOverdueRequest.setId(task.getId());
taskOverdueRequest.setListId(Constant.OVER_DUE_GROUP_ID);
//设置任务状态为已逾期
TaskOverdueResponse taskOverdueResponse = taskManager.setOverdue(taskOverdueRequest, passport);
if (taskOverdueResponse.hasError()) {
logger.warn("---------任务过期出错:" + JSON.toJSONString(taskOverdueResponse));
return;
}
// 推送告知app的消息
TaskPushAppMessageMessage taskPushAppMessageMessage = new TaskPushAppMessageMessage();
taskPushAppMessageMessage.setBusinessType("DELAY_TASK_UPDATE");
taskPushAppMessageMessage.setId(task.getId());
taskPushAppMessageMessage.setPassport(passport);
taskPushAppMessageMessage.setUserId(task.getOwnerUserId());
if(!MQUtil.send(taskPushAppMessageMessage)){
logger.warn("发送推送告知app的消息失败!");
}
}
}
logger.warn("---------任务过期收到消息通知结束:");
return ;
}
}