Просмотр исходного кода

企业微信提醒任务到期通知

yusm 2 месяцев назад
Родитель
Сommit
0d313324fa

+ 31 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/TaskController.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.management.platform.entity.*;
 import com.management.platform.entity.dto.TaskDto;
+import com.management.platform.mapper.TaskExecutorMapper;
+import com.management.platform.mapper.TaskMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.WxCorpInfoMapper;
 import com.management.platform.service.InformationService;
@@ -129,6 +131,35 @@ public class TaskController {
         return taskService.getTaskDetail(id,request);
     }
 
+
+/*    @RequestMapping("sendMsg")
+    public HttpRespMsg sendMsg(){
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
+        List<WxCorpInfo> wxCorpInfos = wxCorpInfoMapper.selectList(new QueryWrapper<WxCorpInfo>().eq("company_id",user.getCompanyId()));
+        for (WxCorpInfo wxCorpInfo : wxCorpInfos) {
+            LocalDate now = LocalDate.now();
+            List<Task> taskList = taskMapper.selectList(new QueryWrapper<Task>().eq("company_id", wxCorpInfo.getCompanyId()).ne("status",2).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.getTaskName()+"]");
+                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);
+            }
+        }
+        return new HttpRespMsg();
+    }*/
     /**
      * 定时修改过期的任务状态
      */

+ 43 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/task/TimingTask.java

@@ -101,6 +101,20 @@ public class TimingTask {
     @Resource
     private ProjectMapper projectMapper;
 
+    @Resource
+    private WxCorpInfoMapper wxCorpInfoMapper;
+
+    @Resource
+    private TaskMapper taskMapper;
+
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private TaskExecutorMapper taskExecutorMapper;
+
+    @Resource
+    private WxCorpInfoService wxCorpInfoService;
+
 
     private static final List<Integer> VALID_TOKEN_CHARS = new ArrayList<>();
     static {
@@ -128,4 +142,33 @@ public class TimingTask {
         }
     }
 
+    //每天8点45分 任务到期提醒
+    @Scheduled(cron = "0 45 8 ? * *")
+    private void taskDue() {
+        if (isDev) return;
+//        List<WxCorpInfo> wxCorpInfos = wxCorpInfoMapper.selectList(new QueryWrapper<WxCorpInfo>().eq("company_id", 5770));
+        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()).eq("status",0).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.getTaskName()+"]");
+                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);
+            }
+        }
+    }
+
 }