瀏覽代碼

任务到期推送企业微信应用消息

yurk 2 年之前
父節點
當前提交
224343747d

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -283,6 +283,10 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                         title = "费用报销审核驳回";
                     }
                 }
+                else if ("task".equals(pageRouter)) {
+                    //费用报销
+                    title = "工时管家:任务到期通知";
+                }
             }
             cardJson.put("title", title);
             cardJson.put("description", msg);

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

@@ -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() {