Browse Source

Merge branch 'master' of http://www.kingtomtech.com:10101/kingtom/rkz_fy-master

Pojun 7 months ago
parent
commit
e9a9c75a9c

+ 7 - 0
tc-service/tap-task/src/main/java/com/minto/app/task/dao/ITaskAnalysisDao.java

@@ -452,4 +452,11 @@ public interface ITaskAnalysisDao extends BaseDao {
      * @return
      */
     List<Map<String,Object>> findTaskTypes(Long orgAccountId);
+
+    /**
+     * 业绩考核的任务类型设置统计案件数量
+     * @param params
+     * @return
+     */
+    List<Map<String,Object>> findTypeScopeCount(Map<String,Object> params);
 }

+ 26 - 0
tc-service/tap-task/src/main/java/com/minto/app/task/dao/TaskAnalysisDaoImpl.java

@@ -19,6 +19,7 @@ import com.minto.core.common.AppContext;
 import com.minto.core.dao.BaseDaoImpl;
 import com.minto.core.ds.enums.DSEnum;
 import com.minto.core.util.CollectionUtil;
+import com.minto.core.util.DateUtil;
 import com.minto.core.util.ParameterUtil;
 import com.minto.core.util.StringUtil;
 import com.minto.tap.performmance.dto.TaskScoreParam;
@@ -2048,4 +2049,29 @@ hql.append("AND EXISTS (\n" +
         param.put("orgAccountId", orgAccountId);
         return getHibernateTpl().queryBySql(sql, param);
     }
+
+    @Override
+    public List<Map<String, Object>> findTypeScopeCount(Map<String, Object> params){
+        StringBuilder sql = new StringBuilder();
+        sql.append(" SELECT te.value AS name, COUNT(1) as count ");
+//        sql.append(" SUM(CASE WHEN typeScore.base_score IS NULL THEN 0 ELSE typeScore.base_score END) AS scope1");
+//        sql.append(" SUM(CASE WHEN typeScore.eval_score IS NULL THEN 0 ELSE typeScore.eval_score END) AS scope2");
+        sql.append(" sum(IFNULL(typeScore.base_score, 0)) AS scope1 ");
+        sql.append(" sum(IFNULL(typeScore.eval_score, 0)) AS scope2 ");
+        sql.append(" sum(IFNULL(typeScore.base_score, 0) + IFNULL(typeScore.eval_score, 0)) AS scope ");
+        sql.append(" FROM ");
+        sql.append(" (SELECT * FROM tip_enum WHERE type IN ( ");
+        sql.append(" SELECT id FROM tip_enum WHERE key = 'matter_type_settings' ");
+        sql.append(" )) te ");
+        sql.append(" LEFT JOIN dm_dtab_basic_extend ddbe ON ddbe.type_setting LIKE CONCAT('%', te.id, '%') ");
+        sql.append(" LEFT JOIN task_summary ts ON ddbe.reference_id = ts.id ");
+        sql.append(" LEFT JOIN type_setting_score typeScore ON typeScore.enum_id = te.id AND typeScore.year = :year ");
+        sql.append(" GROUP BY te.value ");
+        String order = ParameterUtil.getString(params,"order","count");
+        Integer asc = ParameterUtil.getInteger(params,"asc",0);
+        sql.append(" ORDER BY ").append(order).append(asc == 1 ? " ASC " : " DESC ");
+        Map<String, Object> param = new HashMap<>();
+        param.put("year", ParameterUtil.getInteger(params, "year", DateUtil.getYear()));
+        return getHibernateTpl().queryBySql(sql.toString(), param);
+    }
 }

+ 5 - 0
tc-service/tap-task/src/main/java/com/minto/app/task/manager/TaskAnalysisManagerImpl.java

@@ -1562,6 +1562,11 @@ public class TaskAnalysisManagerImpl implements ITaskAnalysisManager{
 
     }
 
+    @Override
+    public List<Map<String, Object>> findTypeScopeTaskCountAnalysis(Map<String, Object> param) throws BusinessException{
+        return taskAnalysisDao.findTypeScopeCount(param);
+    }
+
     @Override
     public List<Map<String, Object>> findTaskTypes(Map<String, Object> param){
         OrgPersonBean person = orgManager.findPersonById(AppContext.currentUserId());

+ 0 - 87
tip-api/src/main/java/com/minto/app/organization/workpro/WorkProMessagePipeline.java

@@ -1,87 +0,0 @@
-package com.minto.app.organization.workpro;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import com.minto.app.message.beans.MessageBean;
-import com.minto.app.message.enums.MessageResourceTypeEnum;
-import com.minto.app.message.pipeline.MessagePipeline;
-import com.minto.app.organization.workpro.config.WorkProConfig;
-import com.minto.app.resource.enums.ResourceEnum;
-import com.minto.app.task.beans.TaskSummaryBean;
-import com.minto.app.task.manager.ITaskManager;
-import com.minto.app.task.util.TaskImUtil;
-import com.minto.core.po.BasePO;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.math.NumberUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * 应用模块名称<p>
- * 代码描述<p>
- *
- * @author wany
- * @since 2024/7/27
- */
-@Component
-public class WorkProMessagePipeline implements MessagePipeline{
-    @Autowired
-    private ITaskManager taskManager;
-
-
-    private static Set<Integer> set = new HashSet<>();
-
-    static{
-        set.add(MessageResourceTypeEnum.Sign.getKey());
-        set.add(MessageResourceTypeEnum.Comment.getKey());
-        set.add(MessageResourceTypeEnum.More.getKey());
-        set.add(MessageResourceTypeEnum.Plan.getKey());
-        set.add(MessageResourceTypeEnum.Report.getKey());
-        set.add(MessageResourceTypeEnum.Supervise.getKey());
-        set.add(MessageResourceTypeEnum.End.getKey());
-        set.add(MessageResourceTypeEnum.Overdue.getKey());
-        set.add(MessageResourceTypeEnum.NewTask.getKey());
-        set.add(MessageResourceTypeEnum.GoalUrgeMessage.getKey());
-        set.add(MessageResourceTypeEnum.GoalUrgeAdminMessage.getKey());
-        //list.add(MessageResourceTypeEnum.Vedio.getKey());
-        set.add(ResourceEnum.ResourceTypeEnum.Task.getKey());
-        set.add(ResourceEnum.ResourceTypeEnum.msgc.getKey());
-        set.add(ResourceEnum.MessageResourceTypeEnum.NoticeOfSupervision.getKey());
-        set.add(ResourceEnum.MessageResourceTypeEnum.batch.getKey());
-
-        //list.add(ResourceEnum.MessageResourceTypeEnum.DataServerSpace.getKey());
-    }
-
-    @Override
-    public String getName(){
-        return "WorkPro";
-    }
-
-    @Override
-    public void sendMessage(List<MessageBean> messages){
-        List<MessageBean> collect = messages.stream()
-                .filter(e -> set.contains(e.getResourceType()) && StringUtils.isNotBlank(e.getResourceId()) && (
-                        "0".equals(e.getResourceId()) || NumberUtils.toLong(e.getResourceId()) != 0L))
-                .collect(Collectors.toList());
-        List<Long> taskIds = collect.stream().map(e -> Long.valueOf(e.getResourceId())).collect(Collectors.toList());
-        List<TaskSummaryBean> taskSummarys = taskManager.findTaskSummaryBeanByIds(taskIds);
-        Map<Long, TaskSummaryBean> taskMap = taskSummarys.stream().collect(Collectors.toMap(BasePO::getId, e -> e));
-        for(MessageBean message : collect){
-            TaskSummaryBean task = taskMap.get(Long.valueOf(message.getResourceId()));
-            if(task == null){
-                continue;
-            }
-            TaskImUtil.sendMessage(task, message.getSendTime(), message.getMessage(), message.getReceiverId());
-        }
-    }
-
-    @Override
-    public boolean isEnabled(){
-        WorkProConfig config = WorkProConfig.getInstance();
-        return config.enable();
-    }
-}

+ 4 - 0
tip-api/src/main/java/com/minto/app/organization/workpro/config/WorkProConfig.java

@@ -33,6 +33,8 @@ public class WorkProConfig{
 
     private String password;
 
+    private String defaultPassword;
+
 
     private WorkProConfig(){
     }
@@ -53,6 +55,8 @@ public class WorkProConfig{
                     INSTANCE.setName(instance.getProperty("workpro.admin.name"));
                     INSTANCE.setAccount(instance.getProperty("workpro.admin.account"));
                     INSTANCE.setPassword(instance.getProperty("workpro.admin.password"));
+                    String defaultPwd = instance.getProperty("workpro.user.password");
+                    INSTANCE.setDefaultPassword(StringUtils.isBlank(defaultPwd) ? "123456" : defaultPwd);
                 }
             }
         }

+ 9 - 7
tip-api/src/main/java/com/minto/app/organization/workpro/service/impl/WorkProServiceImpl.java

@@ -87,7 +87,7 @@ public class WorkProServiceImpl implements IWorkProService{
         //1、同步组织
         OrgImBean orgIm = syncOrg(org, workProConfig);
         //2、同步组织内人员
-        syncPerson(orgIm.getImId(), org);
+        syncPerson(org, workProConfig);
         //3、同步部门和部门成员
         syncDept(org.getId(), orgIm.getImId(), new ArrayList<>());
     }
@@ -135,10 +135,10 @@ public class WorkProServiceImpl implements IWorkProService{
     /**
      * 同步组织人员信息到IM系统。
      *
-     * @param imOrgId IM系统的组织ID
-     * @param org     企业组织信息。
+     * @param org    企业组织信息
+     * @param config
      */
-    private void syncPerson(String imOrgId, OrgUnitBean org){
+    private void syncPerson(OrgUnitBean org, WorkProConfig config){
         // 初始化一个OrgsExportUser对象,用于后续调用API获取所有用户信息
         //im服务器所有人员
         OrgsExportUser orgsTree = new OrgsExportUser(null, null, null, "-1");
@@ -171,7 +171,8 @@ public class WorkProServiceImpl implements IWorkProService{
         sets.get(2).forEach(e -> {
             OrgPersonBean person = personBeanMap.get(e);
             OrgPrincipal principal = principalService.getPrincipalByPersonId(person.getId());
-            UsersSet usersSet = new UsersSet(e, principal.getUsername(), person.getPname(), null, null, null, null,
+            String avatar = WorkProConfig.getInstance().getTcBaseUrl() + "/org/persons/" + person.getId() + "/?m=picon";
+            UsersSet usersSet = new UsersSet(e, principal.getUsername(), person.getPname(), null, null, avatar, null,
                     null, null, 1 == person.getSex() ? 1 : 2, null, null, 1, null, null);
             callApi(usersSet);
             if(usersSet.isResponseOk()){
@@ -182,8 +183,9 @@ public class WorkProServiceImpl implements IWorkProService{
         sets.get(1).forEach(e -> {
             OrgPersonBean person = personBeanMap.get(e);
             OrgPrincipal principal = principalService.getPrincipalByPersonId(person.getId());
-            UsersCreate usersCreate = new UsersCreate(principal.getUsername(), principal.getUsername(), e,
-                    person.getPname(), 3, null, null, null, null, 1 == person.getSex() ? 1 : 2, null, null, null, 1,
+            String avatar = WorkProConfig.getInstance().getTcBaseUrl() + "/org/persons/" + person.getId() + "/?m=picon";
+            UsersCreate usersCreate = new UsersCreate(principal.getUsername(), config.getDefaultPassword(), e,
+                    person.getPname(), 3, avatar, null, null, null, 1 == person.getSex() ? 1 : 2, null, null, null, 1,
                     null);
             callApi(usersCreate);
             if(usersCreate.isResponseOk()){

+ 2 - 0
tip-api/src/main/java/com/minto/app/task/manager/ITaskAnalysisManager.java

@@ -149,6 +149,8 @@ public interface ITaskAnalysisManager {
      */
     List<Map<String,Object>> findEvaluateAnalysis(Map<String,Object> param) throws BusinessException;
 
+    List<Map<String,Object>> findTypeScopeTaskCountAnalysis(Map<String,Object> param) throws BusinessException;
+
     List<Map<String, Object>> findTaskTypes(Map<String, Object> param);
 
     List<Map<String, Object>> findMatterTypeSettings(Map<String, Object> param);

+ 104 - 19
tip-api/src/main/java/com/minto/app/task/util/TaskImUtil.java

@@ -26,9 +26,21 @@ import org.apache.groovy.util.Maps;
  * @since 2024/7/26
  */
 public final class TaskImUtil{
-    private static final String appId = "taskInfo";
+    private static final String TaskInfoAppId = "taskInfo";
 
-    private static final String appName = "检察工作任务";
+    private static final String TaskInfoAppName = "检察工作任务";
+
+    private static final String TaskExpireAppId = "taskExpire";
+
+    private static final String TaskExpireAppName = "即将超期";
+
+    private static final String TaskOverdueAppId = "taskOverdue";
+
+    private static final String TaskOverdueAppName = "未完成";
+
+    private static final String TaskLeaderInstructionAppId = "taskLeaderInstruction";
+
+    private static final String TaskLeaderInstructionAppName = "领导批示";
 
     private static IWorkProService workProService;
 
@@ -52,31 +64,106 @@ public final class TaskImUtil{
         return orgManager;
     }
 
-    public static void sendMessage(TaskSummaryBean taskSummary, Date sendTime, String content, Long[] personIds){
-        List<OrgPersonBean> persons = getOrgManager().findPersonsById(List.of(personIds));
-        sendMessage(taskSummary, sendTime, content, persons);
+    public static void sendTaskInfoMessage(TaskSummaryBean taskSummary, Date sendTime, String content, Long personId){
+        OrgPersonBean person = getOrgManager().findPersonById(personId);
+        sendTaskInfoMessage(taskSummary, sendTime, content, person);
     }
 
-    public static void sendMessage(TaskSummaryBean taskSummary, Date sendTime, String content,
-            List<OrgPersonBean> persons){
-        for(OrgPersonBean e : persons){
-            sendMessage(taskSummary, sendTime, content, e);
-        }
+    public static void sendTaskInfoMessage(TaskSummaryBean taskSummary, Date sendTime, String content,
+            OrgPersonBean person){
+        String url = taskDetailUrl(taskSummary.getId(), person.getId());
+        List<Map<String, String>> recver = List.of(
+                Maps.of("id", String.valueOf(person.getId()), "name", person.getPname()));
+        Map<String, String> refer = Maps.of("id", TaskInfoAppId, "name", TaskInfoAppName, "avatar",
+                getBaseUrl() + "/org/corp/" + person.getOrgCorporationId() + "/?m=cicon");
+        Map<String, Object> extdata = new HashMap<>();
+        extdata.put("header", List.of(Maps.of("title", "任务通知")));
+        //        extdata.put("header", List.of(Maps.of("title", "任务通知"),
+        //                Maps.of("title", "2016-1-1 12:12:12", "color", "#999999", "size", "s")));
+        extdata.put("body",
+                List.of(Maps.of("title", content), Maps.of("title", DateUtil.format(sendTime, "yyyy-MM-dd HH:mm:ss"))));
+        //        extdata.put("body", List.of(Maps.of("title", content), Maps.of("label", "取件码", "title", "111111"),
+        //                Maps.of("label", "快递公司", "title", "申通快递")));
+        extdata.put("footer", Maps.of("title", "查看详情"));
+        extdata.put("target", Maps.of("url_mobile", url, "url_pc", url, "opentype", "1"));
+        extdata.put("obj", Maps.of("type", "oa", "id", "1111", "s_type", "", "create_uid", ""));
+
+        MessageSendMsgFormview formview = new MessageSendMsgFormview(recver, "3", refer, "2", content, extdata);
+        getWorkProService().callApi(formview);
     }
 
-    public static void sendMessage(TaskSummaryBean taskSummary, Date sendTime, String content, Long personId){
+    public static void sendTaskExpireMessage(TaskSummaryBean taskSummary, Date sendTime, String content, Long personId){
         OrgPersonBean person = getOrgManager().findPersonById(personId);
-        sendMessage(taskSummary, sendTime, content, person);
+        sendTaskExpireMessage(taskSummary, sendTime, content, person);
     }
 
-    public static void sendMessage(TaskSummaryBean taskSummary, Date sendTime, String content, OrgPersonBean person){
+    public static void sendTaskExpireMessage(TaskSummaryBean taskSummary, Date sendTime, String content,
+            OrgPersonBean person){
         String url = taskDetailUrl(taskSummary.getId(), person.getId());
         List<Map<String, String>> recver = List.of(
                 Maps.of("id", String.valueOf(person.getId()), "name", person.getPname()));
-        Map<String, String> refer = Maps.of("id", appId, "name", appName, "avatar",
-                getBaseUrl() + "/org/corp/" + person.getOrgCorporationId() + "/?m=cicon");
+        Map<String, String> refer = Maps.of("id", TaskExpireAppId, "name", TaskExpireAppName, "avatar",
+                getBaseUrl() + "/tc_suite/hintlamp/yellow1.png");
         Map<String, Object> extdata = new HashMap<>();
-        extdata.put("header", List.of(Maps.of("title", "任务通知")));
+        extdata.put("header", List.of(Maps.of("title", "任务即将超期通知")));
+        //        extdata.put("header", List.of(Maps.of("title", "任务通知"),
+        //                Maps.of("title", "2016-1-1 12:12:12", "color", "#999999", "size", "s")));
+        extdata.put("body",
+                List.of(Maps.of("title", content), Maps.of("title", DateUtil.format(sendTime, "yyyy-MM-dd HH:mm:ss"))));
+        //        extdata.put("body", List.of(Maps.of("title", content), Maps.of("label", "取件码", "title", "111111"),
+        //                Maps.of("label", "快递公司", "title", "申通快递")));
+        extdata.put("footer", Maps.of("title", "查看详情"));
+        extdata.put("target", Maps.of("url_mobile", url, "url_pc", url, "opentype", "1"));
+        extdata.put("obj", Maps.of("type", "oa", "id", "1111", "s_type", "", "create_uid", ""));
+
+        MessageSendMsgFormview formview = new MessageSendMsgFormview(recver, "3", refer, "2", content, extdata);
+        getWorkProService().callApi(formview);
+    }
+
+    public static void sendTaskOverdueMessage(TaskSummaryBean taskSummary, Date sendTime, String content,
+            Long personId){
+        OrgPersonBean person = getOrgManager().findPersonById(personId);
+        sendTaskOverdueMessage(taskSummary, sendTime, content, person);
+    }
+
+    public static void sendTaskOverdueMessage(TaskSummaryBean taskSummary, Date sendTime, String content,
+            OrgPersonBean person){
+        String url = taskDetailUrl(taskSummary.getId(), person.getId());
+        List<Map<String, String>> recver = List.of(
+                Maps.of("id", String.valueOf(person.getId()), "name", person.getPname()));
+        Map<String, String> refer = Maps.of("id", TaskOverdueAppId, "name", TaskOverdueAppName, "avatar",
+                getBaseUrl() + "/tc_suite/hintlamp/red1.png");
+        Map<String, Object> extdata = new HashMap<>();
+        extdata.put("header", List.of(Maps.of("title", "任务超期未完成通知")));
+        //        extdata.put("header", List.of(Maps.of("title", "任务通知"),
+        //                Maps.of("title", "2016-1-1 12:12:12", "color", "#999999", "size", "s")));
+        extdata.put("body",
+                List.of(Maps.of("title", content), Maps.of("title", DateUtil.format(sendTime, "yyyy-MM-dd HH:mm:ss"))));
+        //        extdata.put("body", List.of(Maps.of("title", content), Maps.of("label", "取件码", "title", "111111"),
+        //                Maps.of("label", "快递公司", "title", "申通快递")));
+        extdata.put("footer", Maps.of("title", "查看详情"));
+        extdata.put("target", Maps.of("url_mobile", url, "url_pc", url, "opentype", "1"));
+        extdata.put("obj", Maps.of("type", "oa", "id", "1111", "s_type", "", "create_uid", ""));
+
+        MessageSendMsgFormview formview = new MessageSendMsgFormview(recver, "3", refer, "2", content, extdata);
+        getWorkProService().callApi(formview);
+    }
+
+    public static void sendTaskLeaderInstructionMessage(TaskSummaryBean taskSummary, Date sendTime, String content,
+            Long personId){
+        OrgPersonBean person = getOrgManager().findPersonById(personId);
+        sendTaskLeaderInstructionMessage(taskSummary, sendTime, content, person);
+    }
+
+    public static void sendTaskLeaderInstructionMessage(TaskSummaryBean taskSummary, Date sendTime, String content,
+            OrgPersonBean person){
+        String url = taskDetailUrl(taskSummary.getId(), person.getId());
+        List<Map<String, String>> recver = List.of(
+                Maps.of("id", String.valueOf(person.getId()), "name", person.getPname()));
+        Map<String, String> refer = Maps.of("id", TaskLeaderInstructionAppId, "name", TaskLeaderInstructionAppName,
+                "avatar", getBaseUrl() + "/tc_suite/hintlamp/blue1.png");
+        Map<String, Object> extdata = new HashMap<>();
+        extdata.put("header", List.of(Maps.of("title", "领导批示通知")));
         //        extdata.put("header", List.of(Maps.of("title", "任务通知"),
         //                Maps.of("title", "2016-1-1 12:12:12", "color", "#999999", "size", "s")));
         extdata.put("body",
@@ -91,10 +178,8 @@ public final class TaskImUtil{
         getWorkProService().callApi(formview);
     }
 
-    public static String taskDetailUrl(Long taskId, Long userId){
+    private static String taskDetailUrl(Long taskId, Long userId){
         String taskUrl = MessageFormat.format("/taskmt/?m=taskDetail&id={0}", String.valueOf(taskId));
-        //String wrapperUrl = MessageFormat.format("{0}/general/wrapper?redirect_uri={1}",getBaseUrl(),
-        //        URLEncoder.encode(taskUrl,StandardCharsets.UTF_8));
         return MessageFormat.format("{0}/workpro/sso?userId={1}&url={2}", getBaseUrl(), String.valueOf(userId),
                 URLEncoder.encode(taskUrl, StandardCharsets.UTF_8));
     }

+ 2 - 0
tip-front/src/main/java/com/minto/app/organization/controller/PersonController.java

@@ -36,6 +36,7 @@ import com.minto.core.common.AppContext;
 import com.minto.core.common.SystemEnvironment;
 import com.minto.core.constants.BaseConstants;
 import com.minto.core.util.*;
+import com.minto.core.util.annotation.NeedlessCheckLogin;
 import com.minto.core.util.annotation.RoleCheck;
 import com.minto.tip.common.authenticate.bo.User;
 import com.minto.tip.common.util.annotation.UserApi;
@@ -1217,6 +1218,7 @@ public class PersonController {
     }
 
     @RequestMapping(value = "/{pid}/", method = RequestMethod.GET, params = { "m=picon" })
+    @NeedlessCheckLogin
     public ModelAndView personPiconGET(@PathVariable String pid, HttpServletRequest req, HttpServletResponse resp) throws Exception {
         ModelAndView result = null;
         try {

+ 176 - 0
tip-front/src/main/java/com/minto/app/organization/workpro/WorkProMessagePipeline.java

@@ -0,0 +1,176 @@
+package com.minto.app.organization.workpro;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import com.minto.app.message.beans.MessageBean;
+import com.minto.app.message.enums.MessageResourceTypeEnum;
+import com.minto.app.message.pipeline.MessagePipeline;
+import com.minto.app.organization.OrgEnum;
+import com.minto.app.organization.beans.OrgPersonBean;
+import com.minto.app.organization.manager.IOrgManager;
+import com.minto.app.organization.workpro.config.WorkProConfig;
+import com.minto.app.resource.enums.ResourceEnum;
+import com.minto.app.task.beans.TaskSummaryBean;
+import com.minto.app.task.manager.ITaskManager;
+import com.minto.app.task.util.TaskImUtil;
+import com.minto.core.common.AppContext;
+import com.minto.core.po.BasePO;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 应用模块名称<p>
+ * 代码描述<p>
+ *
+ * @author wany
+ * @since 2024/7/27
+ */
+@Component
+public class WorkProMessagePipeline implements MessagePipeline{
+    @Autowired
+    private ITaskManager taskManager;
+
+    @Autowired
+    private IOrgManager orgManager;
+
+
+    private static Set<Integer> set = new HashSet<>();
+
+    static{
+        set.add(MessageResourceTypeEnum.Sign.getKey());
+        set.add(MessageResourceTypeEnum.Comment.getKey());
+        set.add(MessageResourceTypeEnum.More.getKey());
+        set.add(MessageResourceTypeEnum.Plan.getKey());
+        set.add(MessageResourceTypeEnum.Report.getKey());
+        set.add(MessageResourceTypeEnum.Supervise.getKey());
+        set.add(MessageResourceTypeEnum.End.getKey());
+        set.add(MessageResourceTypeEnum.Overdue.getKey());
+        set.add(MessageResourceTypeEnum.NewTask.getKey());
+        set.add(MessageResourceTypeEnum.GoalUrgeMessage.getKey());
+        set.add(MessageResourceTypeEnum.GoalUrgeAdminMessage.getKey());
+        //list.add(MessageResourceTypeEnum.Vedio.getKey());
+        set.add(ResourceEnum.ResourceTypeEnum.Task.getKey());
+        set.add(ResourceEnum.ResourceTypeEnum.msgc.getKey());
+        set.add(ResourceEnum.MessageResourceTypeEnum.NoticeOfSupervision.getKey());
+        set.add(ResourceEnum.MessageResourceTypeEnum.batch.getKey());
+
+        //list.add(ResourceEnum.MessageResourceTypeEnum.DataServerSpace.getKey());
+    }
+
+    @Override
+    public String getName(){
+        return "WorkPro";
+    }
+
+    @Override
+    public void sendMessage(List<MessageBean> messages){
+        //发送检查任务消息
+        sendTaskMessage(messages);
+        sendTaskExpireMessage(messages);
+        sendTaskOverdueMessage(messages);
+        sendTaskLeaderInstructionMessage(messages);
+    }
+
+    /**
+     * 发送检查任务消息
+     *
+     * @param messages
+     */
+    private void sendTaskMessage(List<MessageBean> messages){
+        if(CollectionUtils.isEmpty(messages)){
+            return;
+        }
+        List<MessageBean> collect = messages.stream()
+                .filter(e -> set.contains(e.getResourceType()) && StringUtils.isNotBlank(e.getResourceId()) && (
+                        "0".equals(e.getResourceId()) || NumberUtils.toLong(e.getResourceId()) != 0L))
+                .collect(Collectors.toList());
+        List<Long> taskIds = collect.stream().map(e -> Long.valueOf(e.getResourceId())).collect(Collectors.toList());
+        List<TaskSummaryBean> taskSummarys = taskManager.findTaskSummaryBeanByIds(taskIds);
+        Map<Long, TaskSummaryBean> taskMap = taskSummarys.stream().collect(Collectors.toMap(BasePO::getId, e -> e));
+        for(MessageBean message : collect){
+            TaskSummaryBean task = taskMap.get(Long.valueOf(message.getResourceId()));
+            if(task == null){
+                continue;
+            }
+            TaskImUtil.sendTaskInfoMessage(task, message.getSendTime(), message.getMessage(), message.getReceiverId());
+        }
+    }
+
+    private void sendTaskExpireMessage(List<MessageBean> messages){
+        if(CollectionUtils.isEmpty(messages)){
+            return;
+        }
+        List<MessageBean> collect = messages.stream()
+                .filter(e -> MessageResourceTypeEnum.Overdue.getKey() == e.getResourceType() && e.getMessage()
+                        .contains("即将超期")).collect(Collectors.toList());
+        List<Long> taskIds = collect.stream().map(e -> Long.valueOf(e.getResourceId())).collect(Collectors.toList());
+        List<TaskSummaryBean> taskSummarys = taskManager.findTaskSummaryBeanByIds(taskIds);
+        Map<Long, TaskSummaryBean> taskMap = taskSummarys.stream().collect(Collectors.toMap(BasePO::getId, e -> e));
+        for(MessageBean message : collect){
+            TaskSummaryBean task = taskMap.get(Long.valueOf(message.getResourceId()));
+            if(task == null){
+                continue;
+            }
+            TaskImUtil.sendTaskExpireMessage(task, message.getSendTime(), message.getMessage(), message.getReceiverId());
+        }
+
+    }
+
+    private void sendTaskOverdueMessage(List<MessageBean> messages){
+        if(CollectionUtils.isEmpty(messages)){
+            return;
+        }
+        List<MessageBean> collect = messages.stream()
+                .filter(e -> MessageResourceTypeEnum.Overdue.getKey() == e.getResourceType() && e.getMessage()
+                        .contains("已超期")).collect(Collectors.toList());
+        List<Long> taskIds = collect.stream().map(e -> Long.valueOf(e.getResourceId())).collect(Collectors.toList());
+        List<TaskSummaryBean> taskSummarys = taskManager.findTaskSummaryBeanByIds(taskIds);
+        Map<Long, TaskSummaryBean> taskMap = taskSummarys.stream().collect(Collectors.toMap(BasePO::getId, e -> e));
+        for(MessageBean message : collect){
+            TaskSummaryBean task = taskMap.get(Long.valueOf(message.getResourceId()));
+            if(task == null){
+                continue;
+            }
+            TaskImUtil.sendTaskOverdueMessage(task, message.getSendTime(), message.getMessage(),
+                    message.getReceiverId());
+        }
+    }
+
+    private void sendTaskLeaderInstructionMessage(List<MessageBean> messages){
+        if(CollectionUtils.isEmpty(messages)){
+            return;
+        }
+        List<OrgPersonBean> leaderPersonBeans = orgManager.findPersonsByRoleCode(
+                OrgEnum.OrgRoleEnum.AccountLeader.name(), AppContext.getCurrentUser().getAccountId());
+
+        List<Long> leaderPersonIds = leaderPersonBeans.stream().map(BasePO::getId).collect(Collectors.toList());
+
+        List<MessageBean> collect = messages.stream().filter(e -> leaderPersonIds.contains(e.getSenderId())
+                && MessageResourceTypeEnum.Comment.getKey() == e.getResourceType()).collect(Collectors.toList());
+
+        List<Long> taskIds = collect.stream().map(e -> Long.valueOf(e.getResourceId())).collect(Collectors.toList());
+        List<TaskSummaryBean> taskSummarys = taskManager.findTaskSummaryBeanByIds(taskIds);
+        Map<Long, TaskSummaryBean> taskMap = taskSummarys.stream().collect(Collectors.toMap(BasePO::getId, e -> e));
+        for(MessageBean message : collect){
+            TaskSummaryBean task = taskMap.get(Long.valueOf(message.getResourceId()));
+            if(task == null){
+                continue;
+            }
+            TaskImUtil.sendTaskLeaderInstructionMessage(task, message.getSendTime(), message.getMessage(),
+                    message.getReceiverId());
+        }
+    }
+
+    @Override
+    public boolean isEnabled(){
+        WorkProConfig config = WorkProConfig.getInstance();
+        return config.enable();
+    }
+}

+ 8 - 0
tip-front/src/main/java/com/minto/app/task/service/TaskAnalysisWebService.java

@@ -73,6 +73,14 @@ public interface TaskAnalysisWebService {
      */
     List<Map<String,Object>> findEvaluateAnalysis(Map<String,Object> param) throws BusinessException;
 
+    /**
+     * @author inspired zhaoq
+     * @param
+     * @describe 类型设置统计报表
+     * @createTime 2023/9/14 08:51
+     */
+    List<Map<String,Object>> findTypeScopeTaskCountAnalysis(Map<String,Object> param) throws BusinessException;
+
 
     /**
      * 考核评价统计页面获取当前系统的任务类型

+ 5 - 0
tip-front/src/main/java/com/minto/app/task/service/impl/TaskAnalysisWebServiceImpl.java

@@ -69,6 +69,11 @@ public class TaskAnalysisWebServiceImpl implements TaskAnalysisWebService {
         return taskAnalysisManager.findEvaluateAnalysis(param);
     }
 
+    @Override
+    public List<Map<String, Object>> findTypeScopeTaskCountAnalysis(Map<String, Object> param) throws BusinessException{
+        return taskAnalysisManager.findTypeScopeTaskCountAnalysis(param);
+    }
+
     @AjaxSupport
     @Override
     public List<Map<String,Object>> findTaskTypes(Map<String, Object> param) throws BusinessException {