Browse Source

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

Pojun 7 months ago
parent
commit
ce31f08918

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

@@ -339,11 +339,22 @@ public class TaskByTypeManagerImpl implements ITaskByTypeManager{
                     Map<String, String> jobParams = Maps.newHashMap();
                     jobParams.put("taskId", summaryBean.getId().toString());
                     String jobId = "TaskOverRemind_" + summaryBean.getId();
-                    QuartzHolder.deleteJob(jobId);
-                    Date endDate = summaryBean.getEndDate();
-                    Date newEndDate = new Date();
-                    newEndDate.setTime(endDate.getTime() + 60 * 1000);
-                    QuartzHolder.addJob(jobId, newEndDate, "taskOverRemindJob", jobParams);
+                    if(QuartzHolder.deleteJob(jobId)){
+                        Date endDate = summaryBean.getEndDate();
+                        Date newEndDate = new Date();
+                        newEndDate.setTime(endDate.getTime() + 60 * 1000);
+                        QuartzHolder.addJob(jobId, newEndDate, "taskOverRemindJob", jobParams);
+                    }
+                }
+                //获取即将超期时间点
+                Date expireDate = TaskUtil.getExpireDate(summaryBean.getStartDate(), summaryBean.getEndDate(), 0.8);
+                if(expireDate.getTime() > System.currentTimeMillis()){
+                    String jobId = "TaskExpiresRemind_" + summaryBean.getId();
+                    if(QuartzHolder.deleteJob(jobId)){
+                        Map<String, String> jobParams = Maps.newHashMap();
+                        jobParams.put("taskId", summaryBean.getId().toString());
+                        QuartzHolder.addJob(jobId, expireDate, "taskExpiresRemindJob", jobParams);
+                    }
                 }
             }
 
@@ -1849,6 +1860,12 @@ public class TaskByTypeManagerImpl implements ITaskByTypeManager{
                     }
                 }
             }
+
+            //生成超期提示消息定时任务
+            if(typeBean==null || !BaseEnum.BooleanEnum.getBoolean(typeBean.getAutoComplete())){
+                TaskJobUtil.createTaskOverRemindJob(summary);
+            }
+            TaskJobUtil.creteTaskExpiresRemindJob(summary);
             updateSummary(summary,taskBO.getSummaryBean());//任务基础信息更新
         } catch (Exception e) {
             log.error("编辑保存失败:",e);
@@ -13185,6 +13202,14 @@ public class TaskByTypeManagerImpl implements ITaskByTypeManager{
             }
             newTaskSummary.setSerialNum(++serialNum);
             taskManager.saveOrUpdateAll(Arrays.asList(newTaskSummary));
+
+            TaskTypeBean taskType = taskManager.findTaskTypeBeanByTaskId(newTaskSummary.getId());
+            //生成超期提示消息定时任务
+            if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+                TaskJobUtil.createTaskOverRemindJob(newTaskSummary);
+            }
+            TaskJobUtil.creteTaskExpiresRemindJob(newTaskSummary);
+
             //复制TaskMember
             List<TaskMemberBean> oldTaskMemberBeans = taskManager.findTaskMembersByTaskId(oldTaskId);
             List<TaskMemberBean> newTaskMemberBeans = Lists.newArrayList();

+ 73 - 17
tc-service/tap-task/src/main/java/com/minto/app/task/manager/TaskManagerImpl.java

@@ -714,6 +714,12 @@ public class TaskManagerImpl implements ITaskManager {
 							param.put("taskId", summary.getId().toString());
 							QuartzHolder.addJob(jobId, summary.getEndDate(), "taskAutoCompleteJob", param);
 						}
+						TaskTypeBean taskType = findTaskTypeBeanByTaskId(summary.getId());
+						//生成超期提示消息定时任务
+						if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+							TaskJobUtil.createTaskOverRemindJob(summary);
+						}
+						TaskJobUtil.creteTaskExpiresRemindJob(summary);
 					}
 					return msms2;
 				} else if(optionModel.equals("update")||optionModel.equals("edit")) {
@@ -792,9 +798,13 @@ public class TaskManagerImpl implements ITaskManager {
 							resourceManager.deleteRelationships(updateTaskBO.getResourceRelBeans());
 						}
 						//  发送消息
+						TaskTypeBean taskType = findTaskTypeBeanByTaskId(summerBean.getId());
+						//生成超期提示消息定时任务
+						if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+							TaskJobUtil.createTaskOverRemindJob(summerBean);
+						}
+						TaskJobUtil.creteTaskExpiresRemindJob(summerBean);
 					}
-
-
 					return null;
 				}
 			}
@@ -2186,14 +2196,10 @@ public class TaskManagerImpl implements ITaskManager {
 					updateTaskSummary(task);
 					//生成超期定时调度任务
 					//后台打开了自动完成就不生成超期的定时任务
-					if(!BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
-						String jobId = "TaskOverRemind_" + task.getId();
-						if (QuartzHolder.deleteJob(jobId)) {
-							Map<String, String> jobParams = Maps.newHashMap();
-							jobParams.put("taskId", task.getId().toString());
-							QuartzHolder.addJob(jobId, task.getEndDate(), "taskOverRemindJob", jobParams);
-						}
+					if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+						TaskJobUtil.createTaskOverRemindJob(task);
 					}
+					TaskJobUtil.creteTaskExpiresRemindJob(task);
 				}
 			}
 			//承办协办成员
@@ -2332,14 +2338,10 @@ public class TaskManagerImpl implements ITaskManager {
 
 					//重新生成超期调度
 					//后台打开了自动完成就不生成超期的定时任务
-					if(!BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
-						String jobId = "TaskOverRemind_" + summary.getId();
-						if (QuartzHolder.deleteJob(jobId)) {
-							Map<String,String> jobParams = Maps.newHashMap();
-							jobParams.put("taskId", summary.getId().toString());
-							QuartzHolder.addJob(jobId,summary.getEndDate(), "taskOverRemindJob", jobParams);
-						}
+					if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+						TaskJobUtil.createTaskOverRemindJob(summary);
 					}
+					TaskJobUtil.creteTaskExpiresRemindJob(summary);
 
 					//待办感觉不需要处理
 
@@ -4507,6 +4509,14 @@ public class TaskManagerImpl implements ITaskManager {
 				taskReportConfigDao.saveAll(newTaskReportConfig);
 				taskSummaryDao.save(task);
 
+				TaskTypeBean taskType = findTaskTypeBeanByTaskId(task.getId());
+				//生成超期提示消息定时任务
+				if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+					TaskJobUtil.createTaskOverRemindJob(task);
+				}
+				TaskJobUtil.creteTaskExpiresRemindJob(task);
+
+
 				//交办事项
 				int tempKey;
 				String manager = CollectionUtil.join(managers,",");//承办单位的id
@@ -9553,6 +9563,14 @@ public class TaskManagerImpl implements ITaskManager {
 					}
 					summaryBean.setProgress(reportMemberBean.getReportProcess());
 					taskSummaryDao.updateTaskSummaryBean(summaryBean);
+
+					TaskTypeBean taskType = findTaskTypeBeanByTaskId(summaryBean.getId());
+					//生成超期提示消息定时任务
+					if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+						TaskJobUtil.createTaskOverRemindJob(summaryBean);
+					}
+					TaskJobUtil.creteTaskExpiresRemindJob(summaryBean);
+
 					builder.append("你在事项<" + summaryBean.getTitle() + ">申请的汇报已经同意");
 					if (StringUtil.isNotEmpty(option)) {
 						builder.append(":" + option);
@@ -10466,7 +10484,16 @@ public class TaskManagerImpl implements ITaskManager {
 			if (StringUtil.isNotEmpty(endDate)) {
 				taskSummaryBean.setEndDate(DateUtil.getDate(endDate, DateUtil.FORMAT_DATE));
 			}
-			updateTaskSummary(taskSummaryBean);
+			if(StringUtil.isNotEmpty(startDate) || StringUtil.isNotEmpty(endDate)){
+				TaskTypeBean taskType = findTaskTypeBeanByTaskId(taskSummaryBean.getId());
+				//生成超期提示消息定时任务
+				if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())){
+					TaskJobUtil.createTaskOverRemindJob(taskSummaryBean);
+				}
+				TaskJobUtil.creteTaskExpiresRemindJob(taskSummaryBean);
+				updateTaskSummary(taskSummaryBean);
+			}
+
 		} catch (Exception e) {
 			throw new BusinessException(e);
 		}
@@ -10527,6 +10554,14 @@ public class TaskManagerImpl implements ITaskManager {
 			receiveMemberBeans.add(taskExamineMemberBean);
 			taskExamineMemberDao.updateAll(receiveMemberBeans);
 			taskSummaryDao.updateTaskSummaryBean(summaryBean);
+
+			TaskTypeBean taskType = findTaskTypeBeanByTaskId(summaryBean.getId());
+			//生成超期提示消息定时任务
+			if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+				TaskJobUtil.createTaskOverRemindJob(summaryBean);
+			}
+			TaskJobUtil.creteTaskExpiresRemindJob(summaryBean);
+
 			// TODO 发送消息
 			sendMessage(taskExamineMemberBean.getOrgCorporationId(), taskExamineMemberBean.getTaskId(), taskExamineMemberBean.getExaminePersonId(), sendMessageMemberBeans, message, null, MessageResourceTypeEnum.Supervise.getKey());
 		} catch (Exception e) {
@@ -11927,6 +11962,12 @@ public class TaskManagerImpl implements ITaskManager {
 						}
 						// 出发任务状态改变的事件
 						//EventDispatcher.fireEvent(new TaskStateEvent(id, state));
+						TaskTypeBean taskType = findTaskTypeBeanByTaskId(taskId);
+						//生成超期提示消息定时任务
+						if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())){
+							TaskJobUtil.createTaskOverRemindJob(t);
+						}
+						TaskJobUtil.creteTaskExpiresRemindJob(t);
 					}
 				}
 			}
@@ -15797,6 +15838,13 @@ public class TaskManagerImpl implements ITaskManager {
 			taskReportConfigBean.setCreateDate(new Date());
 			taskReportConfigBean.setReportFrequency(3);
 			saveOrUpdateAll(Arrays.asList(summaryBean));
+
+			//生成超期提示消息定时任务
+			if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskTypeBean.getAutoComplete())) {
+				TaskJobUtil.createTaskOverRemindJob(summaryBean);
+			}
+			TaskJobUtil.creteTaskExpiresRemindJob(summaryBean);
+
 			//进行数据保存
 			if(CollectionUtil.isNotEmpty(memberPhases)){
 				AppContext.getBean(ITaskSummaryDao.class).saveOrUpdateAll(memberPhases);
@@ -16092,6 +16140,14 @@ public class TaskManagerImpl implements ITaskManager {
 				Long taskId=id;
 				TaskSummaryBean summaryBean=taskSummaryDao.findTaskSummaryById(taskId);
 				summaryBean.setEndDate(endDate);
+
+				TaskTypeBean taskType = findTaskTypeBeanByTaskId(summaryBean.getId());
+				//生成超期提示消息定时任务
+				if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+					TaskJobUtil.createTaskOverRemindJob(summaryBean);
+				}
+				TaskJobUtil.creteTaskExpiresRemindJob(summaryBean);
+
 				taskList.add(summaryBean);
 				//更新阶段信息
 				List<TaskPhase> phaseList=Lists.newArrayList();

+ 45 - 0
tc-service/tap-task/src/main/java/com/minto/app/task/util/TaskJobUtil.java

@@ -0,0 +1,45 @@
+package com.minto.app.task.util;
+
+import java.util.Date;
+import java.util.Map;
+
+import com.google.common.collect.Maps;
+import com.minto.app.task.beans.TaskSummaryBean;
+import com.minto.core.util.QuartzHolder;
+
+/**
+ * 应用模块名称<p>
+ * 代码描述<p>
+ *
+ * @author wany
+ * @since 2024/8/1
+ */
+public class TaskJobUtil{
+
+    public static void creteTaskExpiresRemindJob(TaskSummaryBean task){
+        //获取即将超期时间点
+        Date expireDate = TaskUtil.getExpireDate(task.getStartDate(), task.getEndDate(), 0.8);
+        if(expireDate.getTime() < System.currentTimeMillis()){
+            return;
+        }
+        String jobId = "TaskExpiresRemind_" + task.getId();
+        if(QuartzHolder.deleteJob(jobId)){
+            Map<String, String> jobParams = Maps.newHashMap();
+            jobParams.put("taskId", task.getId().toString());
+            QuartzHolder.addJob(jobId, expireDate, "taskExpiresRemindJob", jobParams);
+        }
+    }
+
+
+    public static void createTaskOverRemindJob(TaskSummaryBean summary){
+        String jobId = "TaskOverRemind_" + summary.getId();
+        if(summary.getEndDate().getTime() < System.currentTimeMillis()){
+            return;
+        }
+        if(QuartzHolder.deleteJob(jobId)){
+            Map<String, String> jobParams = Maps.newHashMap();
+            jobParams.put("taskId", summary.getId().toString());
+            QuartzHolder.addJob(jobId, summary.getEndDate(), "taskOverRemindJob", jobParams);
+        }
+    }
+}

+ 9 - 0
td-service/td-apps/src/main/java/com/minto/app/td/common/manager/TdProjectByTypeManagerImpl.java

@@ -479,6 +479,15 @@ public class TdProjectByTypeManagerImpl implements ITdProjectByTypeManager {
                     taskManager.saveOrUpdateAll(Arrays.asList(mp));
                 }
             }
+
+//            TaskTypeBean taskType = findTaskTypeBeanByTaskId(summary.getId());
+//            //生成超期提示消息定时任务
+//            if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+//                TaskJobUtil.createTaskOverRemindJob(summary);
+//            }
+//            TaskJobUtil.creteTaskExpiresRemindJob(summary);
+
+
             //进行关联关系保存
             CommonResourceRelationBO bo = new CommonResourceRelationBO();
             bo.setCid(summaryBean.getOrgCorporationId());

+ 8 - 4
tip-front/src/main/java/com/minto/app/project/controller/ProjectController.java

@@ -29,7 +29,7 @@ import com.minto.app.project.manager.IProjectVisualManager;
 import com.minto.app.project.util.ProjectUtil;
 import com.minto.app.space.beans.AttachmentBean;
 import com.minto.app.systemstate.SystemConstants;
-import com.minto.app.task.util.TaskMemberAgentUtil;
+import com.minto.app.task.util.*;
 import com.minto.app.follow.service.FollowService;
 import com.minto.app.form.bo.FormField;
 import com.minto.app.form.manager.IFormManager;
@@ -62,9 +62,6 @@ import com.minto.app.task.bo.TaskProcessBO;
 import com.minto.app.task.controller.TaskPhaseHelper;
 import com.minto.app.task.enums.TaskEnum;
 import com.minto.app.task.manager.*;
-import com.minto.app.task.util.TaskByTypeUtil;
-import com.minto.app.task.util.TaskTransverter;
-import com.minto.app.task.util.TaskWebUtil;
 import com.minto.app.tc.knowledge.beans.ArcSummaryBean;
 import com.minto.app.tc.knowledge.enums.KmEnum;
 import com.minto.app.tc.knowledge.manager.IArcSummaryManager;
@@ -3020,6 +3017,13 @@ public class ProjectController extends BaseController {
                     taskManager.saveOrUpdateAll(Arrays.asList(mp));
                 }
             }
+
+            //生成超期提示消息定时任务
+            if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskTypeBean.getAutoComplete())) {
+                TaskJobUtil.createTaskOverRemindJob(summaryBean);
+            }
+            TaskJobUtil.creteTaskExpiresRemindJob(summaryBean);
+
             //进行关联关系保存
             CommonResourceRelationBO bo = new CommonResourceRelationBO();
             bo.setCid(summaryBean.getOrgCorporationId());

+ 23 - 1
tip-front/src/main/java/com/minto/app/task/controller/TaskByTypeController.java

@@ -4315,7 +4315,14 @@ public class TaskByTypeController extends BaseController{
                 if (Objects.equals(status, TaskSummaryStateEnum.NotStart.getKey())) {
                     taskByTypeManager.batchCreateMemberPhases(id);
                 }
-
+                summaries.forEach(summary->{
+                    TaskTypeBean taskType = taskManager.findTaskTypeBeanByTaskId(summary.getId());
+                    //生成超期提示消息定时任务
+                    if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+                        TaskJobUtil.createTaskOverRemindJob(summary);
+                    }
+                    TaskJobUtil.creteTaskExpiresRemindJob(summary);
+                });
                 taskManager.updateTaskSummarys(summaries);
 
                 //发送短信
@@ -5900,6 +5907,14 @@ public class TaskByTypeController extends BaseController{
             }});
             Boolean isSuccess = TaskWebUtil.sendTaskBytaskId(summaryBean, taskTypeBeans.get(0));
 //            }
+
+            TaskTypeBean taskTypeBean = taskTypeBeans.get(0);
+            //生成超期提示消息定时任务
+            if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskTypeBean.getAutoComplete())){
+                TaskJobUtil.createTaskOverRemindJob(summaryBean);
+            }
+            TaskJobUtil.creteTaskExpiresRemindJob(summaryBean);
+
             dataMap.put("state", "success");
             dataMap.put("message", "导入成功!");
             RespUtil.rendJson(response, dataMap);
@@ -18515,6 +18530,13 @@ public class TaskByTypeController extends BaseController{
                         taskByTypeManager.saveTaskPhases(taskPhases, String.valueOf(taskId));
                         //更新完成时间
                         taskSummaryBean.setEndDate(endDate);
+                        TaskTypeBean taskType = taskManager.findTaskTypeBeanByTaskId(taskSummaryBean.getId());
+                        //生成超期提示消息定时任务
+                        if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+                            TaskJobUtil.createTaskOverRemindJob(taskSummaryBean);
+                        }
+                        TaskJobUtil.creteTaskExpiresRemindJob(taskSummaryBean);
+
                         taskManager.updateTaskSummary(taskSummaryBean);
                     }
                 }

+ 23 - 21
tip-front/src/main/java/com/minto/app/task/controller/TaskByTypeProcessController.java

@@ -6,6 +6,17 @@
 package com.minto.app.task.controller;
 
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
@@ -82,18 +93,6 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.crypto.Data;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URLEncoder;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.stream.Collectors;
-
 @Controller
 @RequestMapping("/taskByType")
 public class TaskByTypeProcessController extends BaseController {
@@ -3612,17 +3611,12 @@ public class TaskByTypeProcessController extends BaseController {
 //                    QuartzManagerUtil.dispatchJobByCron(TaskExpiresRemindJob.class,cron,String.valueOf(summary.getId()));
 //                }
 
-                //重新生成超期调度
-                //后台打开了自动完成就不生成超期的定时任务
-                if(!BaseEnum.BooleanEnum.getBoolean(typeBean.getAutoComplete())) {
-                    String jobId = "TaskOverRemind_" + summary.getId();
-                    if (QuartzHolder.deleteJob(jobId)) {
-                        Map<String, String> jobParams = Maps.newHashMap();
-                        jobParams.put("taskId", summary.getId().toString());
-                        QuartzHolder.addJob(jobId, summary.getEndDate(), "taskOverRemindJob", jobParams);
-                    }
+                //生成超期提示消息定时任务
+                if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(typeBean.getAutoComplete())) {
+                    TaskJobUtil.createTaskOverRemindJob(summary);
                 }
             }
+            TaskJobUtil.creteTaskExpiresRemindJob(summary);
             if(content != null){
                 commonContentBean.setContent(content);
                 contentManager.updateCommonContentBean(commonContentBean);
@@ -4167,6 +4161,14 @@ public class TaskByTypeProcessController extends BaseController {
             taskByTypeManager.updateTaskMemberPhase(taskId.toString());
             //重新生成事项待办
             taskManager.saveTaskWaiteDoBeans(Arrays.asList(taskSummary),pid);
+
+            TaskTypeBean taskType = taskManager.findTaskTypeBeanByTaskId(taskSummary.getId());
+            //生成超期提示消息定时任务
+            if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())){
+                TaskJobUtil.createTaskOverRemindJob(taskSummary);
+            }
+            TaskJobUtil.creteTaskExpiresRemindJob(taskSummary);
+
         } catch (Exception e) {
             log.error("续报保存错误:",e);
             result.put("state","error");

+ 14 - 0
tip-front/src/main/java/com/minto/app/task/controller/TaskController.java

@@ -3837,6 +3837,13 @@ public class TaskController extends BaseController {
             summber.setEndDate(endDate);
             taskManager.updateTaskSummary(summber);
 
+            TaskTypeBean taskType = taskManager.findTaskTypeBeanByTaskId(summber.getId());
+            //生成超期提示消息定时任务
+            if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+                TaskJobUtil.createTaskOverRemindJob(summber);
+            }
+            TaskJobUtil.creteTaskExpiresRemindJob(summber);
+
             result.put("state", "success");
             result.put("message", "修改成功");
             result.put("title", title);
@@ -7284,6 +7291,13 @@ public class TaskController extends BaseController {
                     taskManager.saveOrUpdateAll(Arrays.asList(mp));
                 }
             }
+
+            //生成超期提示消息定时任务
+            if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskTypeBean.getAutoComplete())) {
+                TaskJobUtil.createTaskOverRemindJob(summaryBean);
+            }
+            TaskJobUtil.creteTaskExpiresRemindJob(summaryBean);
+
             //进行关联关系保存
             CommonResourceRelationBO bo = new CommonResourceRelationBO();
             bo.setCid(summaryBean.getOrgCorporationId());

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

@@ -17,6 +17,7 @@ import com.minto.app.task.manager.ITaskManager;
 import com.minto.app.task.service.TaskService;
 import com.minto.app.task.sms.SmsEnum;
 import com.minto.app.task.util.TaskByTypeUtil;
+import com.minto.app.task.util.TaskJobUtil;
 import com.minto.core.base.BaseEnum;
 import com.minto.core.ds.DBAgent;
 import com.minto.core.util.DateUtil;
@@ -265,6 +266,12 @@ public class TaskServiceImpl implements TaskService {
                 .setTaskPhaseReportConfigs(List.of(taskPhaseReportConfig)));
 
         DBAgent.save(task);
+        //生成超期提示消息定时任务
+        if(taskType==null || !BaseEnum.BooleanEnum.getBoolean(taskType.getAutoComplete())) {
+            TaskJobUtil.createTaskOverRemindJob(task);
+        }
+        TaskJobUtil.creteTaskExpiresRemindJob(task);
+        //生成
         return newTaskId;
     }
 

+ 44 - 0
tip-front/src/main/java/com/minto/app/task/util/TaskJobUtil.java

@@ -0,0 +1,44 @@
+package com.minto.app.task.util;
+
+import java.util.Date;
+import java.util.Map;
+
+import com.google.common.collect.Maps;
+import com.minto.app.task.beans.TaskSummaryBean;
+import com.minto.core.util.QuartzHolder;
+
+/**
+ * 应用模块名称<p>
+ * 代码描述<p>
+ *
+ * @author wany
+ * @since 2024/8/1
+ */
+public class TaskJobUtil{
+    public static void creteTaskExpiresRemindJob(TaskSummaryBean task){
+        //获取即将超期时间点
+        Date expireDate = TaskUtil.getExpireDate(task.getStartDate(), task.getEndDate(), 0.8);
+        if(expireDate.getTime() < System.currentTimeMillis()){
+            return;
+        }
+        String jobId = "TaskExpiresRemind_" + task.getId();
+        if(QuartzHolder.deleteJob(jobId)){
+            Map<String, String> jobParams = Maps.newHashMap();
+            jobParams.put("taskId", task.getId().toString());
+            QuartzHolder.addJob(jobId, expireDate, "taskExpiresRemindJob", jobParams);
+        }
+    }
+
+
+    public static void createTaskOverRemindJob(TaskSummaryBean summary){
+        String jobId = "TaskOverRemind_" + summary.getId();
+        if(summary.getEndDate().getTime() < System.currentTimeMillis()){
+            return;
+        }
+        if(QuartzHolder.deleteJob(jobId)){
+            Map<String, String> jobParams = Maps.newHashMap();
+            jobParams.put("taskId", summary.getId().toString());
+            QuartzHolder.addJob(jobId, summary.getEndDate(), "taskOverRemindJob", jobParams);
+        }
+    }
+}