|
@@ -10,6 +10,7 @@ import com.management.platform.entity.*;
|
|
|
import com.management.platform.entity.vo.TokenVo;
|
|
|
import com.management.platform.mapper.*;
|
|
|
import com.management.platform.service.*;
|
|
|
+import com.management.platform.service.impl.WxCorpInfoServiceImpl;
|
|
|
import com.management.platform.util.*;
|
|
|
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
|
|
|
import me.chanjar.weixin.mp.api.WxMpService;
|
|
@@ -124,6 +125,10 @@ public class TimingTask {
|
|
|
private LeaveSheetService leaveSheetService;
|
|
|
@Resource
|
|
|
private BusinessTripService businessTripService;
|
|
|
+ @Resource
|
|
|
+ private TaskMapper taskMapper;
|
|
|
+ @Resource
|
|
|
+ private TaskExecutorMapper taskExecutorMapper;
|
|
|
|
|
|
private static final List<Integer> VALID_TOKEN_CHARS = new ArrayList<>();
|
|
|
static {
|
|
@@ -653,6 +658,35 @@ public class TimingTask {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ //每天8点45分 任务到期提醒
|
|
|
+ @Scheduled(cron = "0 8 45 ? * *")
|
|
|
+ private void taskDue() {
|
|
|
+ if (isDev) return;
|
|
|
+ List<WxCorpInfo> wxCorpInfos = wxCorpInfoMapper.selectList(null);
|
|
|
+ for (WxCorpInfo wxCorpInfo : wxCorpInfos) {
|
|
|
+ LocalDate now = LocalDate.now();
|
|
|
+ List<Task> taskList = taskMapper.selectList(new QueryWrapper<Task>().eq("company_id", wxCorpInfo.getCompanyId()).and(wrapper -> wrapper.eq("end_date", now).or().eq("end_date", now.plusDays(1))));
|
|
|
+ List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", wxCorpInfo.getCompanyId()));
|
|
|
+ List<Integer> taskIds = taskList.stream().map(Task::getId).distinct().collect(Collectors.toList());
|
|
|
+ taskIds.add(-1);
|
|
|
+ List<TaskExecutor> taskExecutorList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().in("task_id", taskIds));
|
|
|
+ for (Task task : taskList) {
|
|
|
+ List<String> list = taskExecutorList.stream().filter(tl -> tl.getTaskId().equals(task.getId())).map(TaskExecutor::getExecutorId).distinct().collect(Collectors.toList());
|
|
|
+ String corpUserid = userList.stream().filter(ul -> list.contains(ul.getId())).map(User::getCorpwxUserid).distinct().collect(Collectors.joining(","));
|
|
|
+ StringBuilder stringBuilder=new StringBuilder();
|
|
|
+ stringBuilder.append("您负责的任务["+task.getName()+"]");
|
|
|
+ if(task.getEndDate().isEqual(now)){
|
|
|
+ stringBuilder.append("今天");
|
|
|
+ }else if(task.getEndDate().isEqual(now.plusDays(1))){
|
|
|
+ stringBuilder.append("一天后");
|
|
|
+ }
|
|
|
+ stringBuilder.append("截止,请抓紧时间完成!");
|
|
|
+ wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,corpUserid,stringBuilder.toString(),"task",null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//每周日晚上11点 企业微信同步一次本月的考勤打卡记录
|
|
|
@Scheduled(cron = "0 0 23 ? * 7")
|
|
|
private void weeklySyncCorpWXCardTime() {
|