TaskWeeklyRemindingJob.java
5.09 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
package com.xiniunet.quartz;
import com.alibaba.dubbo.common.utils.CollectionUtils;
import com.alibaba.fastjson.JSON;
import com.xiniunet.foundation.request.MessageBatchCreateRequest;
import com.xiniunet.foundation.service.FoundationService;
import com.xiniunet.framework.security.Passport;
import com.xiniunet.framework.util.SpringContext;
import com.xiniunet.quartz.base.XNQuartzJob;
import com.xiniunet.quartz.base.XNQuartzJobData;
import com.xiniunet.task.dal.TaskMapper;
import com.xiniunet.task.dal.TaskUserMapper;
import com.xiniunet.task.enumeration.BusinessTypeEnum;
import com.xiniunet.task.enumeration.UserRoleEnum;
import com.xiniunet.task.po.TaskPO;
import com.xiniunet.task.po.TaskUserPO;
import com.xiniunet.task.request.TaskGetRequest;
import com.xiniunet.task.request.TaskUserFindRequest;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
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 TaskWeeklyRemindingJob extends XNQuartzJob {
private Logger logger = LoggerFactory.getLogger(this.getClass());
public TaskWeeklyRemindingJob()
{
this.setJobTag("TaskWeeklyRemindingJob");
}
@Autowired
private TaskUserMapper taskUserMapper;
@Autowired
private TaskMapper taskMapper;
@Autowired
private FoundationService foundationService;
/**
* 每周几定时检查提醒调度器(任务进度到时提醒/不推送给抄送人)
* @param jobExecutionContext
* @throws JobExecutionException
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
if(taskUserMapper==null){
taskUserMapper = SpringContext.getApplicationContext().getBean(TaskUserMapper.class);
}
if(taskMapper == null){
taskMapper = SpringContext.getApplicationContext().getBean(TaskMapper.class);
}
if(foundationService == null){
foundationService = SpringContext.getApplicationContext().getBean(FoundationService.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;
}
if(task.getIsDone() != null && !task.getIsDone() && task.getIsAbort() !=null && !task.getIsAbort()
/* && task.getIsOverdue() != null && !task.getIsOverdue()*/){
List<Long> receiptIds = new ArrayList<>();
//查找执行者和抄送者
TaskUserFindRequest taskUserFindRequest = new TaskUserFindRequest();
taskUserFindRequest.setTaskId(task.getId());
List<TaskUserPO> taskUserPOList = taskUserMapper.find(taskUserFindRequest,passport);
if(CollectionUtils.isNotEmpty(taskUserPOList)){
for(TaskUserPO taskUserPO: taskUserPOList){
//不需要推送给抄送人
if(taskUserPO.getUserRole() != null && !UserRoleEnum.CC_USER.equals(taskUserPO.getUserRole())){
receiptIds.add(taskUserPO.getUserId());
}
}
}
if(CollectionUtils.isNotEmpty(receiptIds)){
String url = "xntalk://rnapp.open/kpiTarget?page=TargetDetail&tenantId=" + passport.getTenantId() + "&taskId=" + task.getId() + "&name=" + task.getOwnerUserName();
MessageBatchCreateRequest messageBatchCreateRequest = new MessageBatchCreateRequest();
messageBatchCreateRequest.setBusinessId(task.getId());
messageBatchCreateRequest.setBusinessType(BusinessTypeEnum.TASK.toString());
messageBatchCreateRequest.setReceiptIds(receiptIds);
messageBatchCreateRequest.setMessageTitle("【"+task.getObjectName()+"】任务进度提醒");
messageBatchCreateRequest.setMessageContent("【"+task.getObjectName()+"】"+"任务汇报时间到啦,记得汇报进度哟~");
messageBatchCreateRequest.setMessageMobileUrl(url);
messageBatchCreateRequest.setMessageTime(new Date());
messageBatchCreateRequest.setSendTime(new Date());
messageBatchCreateRequest.setSenderId(10000L);
messageBatchCreateRequest.setSenderName("系统管理员");
foundationService.batchCreateMessage(messageBatchCreateRequest, passport);
}
}
logger.warn("---------每周几定时检查提醒调度器结束:");
return ;
}
}