wangliang 1 éve
szülő
commit
11490071b2

+ 2 - 2
sop-business/src/main/java/com/qmth/sop/business/activiti/listener/ProcessEventListener.java

@@ -83,12 +83,12 @@ public class ProcessEventListener implements ActivitiEventListener, Serializable
                                 && tfFlowLog.getApproveOperation() != FlowApproveOperationEnum.FINISH) {
                             List<TSJobRemind> tsJobRemindArrayList = new ArrayList<>();
                             if (Objects.nonNull(task.getAssignee())) {
-                                tsJobRemindArrayList.add(new TSJobRemind(tfCustomFlowEntity.getCode(), Long.parseLong(task.getId()), tfCustomFlow.getType().getTitle(), JobTypeEnum.AFTER, Long.parseLong(task.getAssignee()), tfFlowLog.getApproveOperation(), sysUser.getId()));
+                                tsJobRemindArrayList.add(new TSJobRemind(JobQuartzTypeEnum.FLOW, tfCustomFlowEntity.getCode(), Long.parseLong(task.getId()), tfCustomFlow.getType().getTitle() + ";" + task.getTaskDefinitionKey(), JobTypeEnum.AFTER, Long.parseLong(task.getAssignee()), tfFlowLog.getApproveOperation(), sysUser.getId()));
                             } else {
                                 List<IdentityLink> identityLinkList = taskService.getIdentityLinksForTask(task.getId());
                                 if (!CollectionUtils.isEmpty(identityLinkList)) {
                                     for (IdentityLink i : identityLinkList) {
-                                        tsJobRemindArrayList.add(new TSJobRemind(tfCustomFlowEntity.getCode(), Long.parseLong(i.getTaskId()), tfCustomFlow.getType().getTitle(), JobTypeEnum.AFTER, Long.parseLong(i.getUserId()), tfFlowLog.getApproveOperation(), sysUser.getId()));
+                                        tsJobRemindArrayList.add(new TSJobRemind(JobQuartzTypeEnum.FLOW, tfCustomFlowEntity.getCode(), Long.parseLong(i.getTaskId()), tfCustomFlow.getType().getTitle() + ";" + task.getTaskDefinitionKey(), JobTypeEnum.AFTER, Long.parseLong(i.getUserId()), tfFlowLog.getApproveOperation(), sysUser.getId()));
                                     }
                                 }
                             }

+ 59 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/result/FlowTaskSmsResult.java

@@ -0,0 +1,59 @@
+package com.qmth.sop.business.bean.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 流程短信提醒 result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2023/2/17
+ */
+public class FlowTaskSmsResult implements Serializable {
+
+    @ApiModelProperty(value = "服务单元名称")
+    String serviceName;
+
+    @ApiModelProperty(value = "客户名称")
+    String customName;
+
+    @ApiModelProperty(value = "用户真实姓名")
+    String realName;
+
+    @ApiModelProperty(value = "用户手机号码")
+    String mobileNumber;
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public String getCustomName() {
+        return customName;
+    }
+
+    public void setCustomName(String customName) {
+        this.customName = customName;
+    }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public String getMobileNumber() {
+        return mobileNumber;
+    }
+
+    public void setMobileNumber(String mobileNumber) {
+        this.mobileNumber = mobileNumber;
+    }
+}

+ 5 - 5
sop-business/src/main/java/com/qmth/sop/business/entity/TSJobLog.java

@@ -2,7 +2,7 @@ package com.qmth.sop.business.entity;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.sop.common.enums.JobEnum;
+import com.qmth.sop.common.enums.JobQuartzTypeEnum;
 import com.qmth.sop.common.enums.JobTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -30,8 +30,8 @@ public class TSJobLog implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long jobRemindId;
 
-    @ApiModelProperty(value = "任务类型")
-    private JobEnum type;
+    @ApiModelProperty(value = "类型,FLOW:流程,NOTICE:公告")
+    private JobQuartzTypeEnum type;
 
     @ApiModelProperty(value = "编码")
     private String code;
@@ -69,11 +69,11 @@ public class TSJobLog implements Serializable {
         this.jobRemindId = jobRemindId;
     }
 
-    public JobEnum getType() {
+    public JobQuartzTypeEnum getType() {
         return type;
     }
 
-    public void setType(JobEnum type) {
+    public void setType(JobQuartzTypeEnum type) {
         this.type = type;
     }
 

+ 12 - 16
sop-business/src/main/java/com/qmth/sop/business/entity/TSJobRemind.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.sop.common.contant.SystemConstant;
 import com.qmth.sop.common.enums.FlowApproveOperationEnum;
+import com.qmth.sop.common.enums.JobQuartzTypeEnum;
 import com.qmth.sop.common.enums.JobTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -27,6 +28,9 @@ public class TSJobRemind implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 
+    @ApiModelProperty(value = "类型,FLOW:流程,NOTICE:公告")
+    private JobQuartzTypeEnum type;
+
     @ApiModelProperty(value = "编码")
     private String code;
 
@@ -46,9 +50,6 @@ public class TSJobRemind implements Serializable {
     @ApiModelProperty(value = "执行字段")
     private String execField;
 
-    @ApiModelProperty(value = "是否执行,0:未执行,1:已执行")
-    private Boolean exec;
-
     @ApiModelProperty(value = "接收人id")
     @JsonSerialize(using = ToStringSerializer.class)
     private Long receiveUserId;
@@ -70,13 +71,13 @@ public class TSJobRemind implements Serializable {
 
     }
 
-    public TSJobRemind(String code, Long objId, String objName, JobTypeEnum remindType, Long receiveUserId, FlowApproveOperationEnum approveOperation, Long userId) {
+    public TSJobRemind(JobQuartzTypeEnum type, String code, Long objId, String objName, JobTypeEnum remindType, Long receiveUserId, FlowApproveOperationEnum approveOperation, Long userId) {
         this.id = SystemConstant.getDbUuid();
+        this.type = type;
         this.code = code;
         this.objId = objId;
         this.objName = objName;
         this.remindType = remindType;
-        this.exec = false;
         this.receiveUserId = receiveUserId;
         this.approveOperation = approveOperation;
         this.createId = userId;
@@ -84,9 +85,12 @@ public class TSJobRemind implements Serializable {
         this.enable = true;
     }
 
-    public void updateExecInfo(Long execTime) {
-        this.execTime = execTime;
-        this.exec = true;
+    public JobQuartzTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(JobQuartzTypeEnum type) {
+        this.type = type;
     }
 
     public Boolean getEnable() {
@@ -169,14 +173,6 @@ public class TSJobRemind implements Serializable {
         this.execField = execField;
     }
 
-    public Boolean getExec() {
-        return exec;
-    }
-
-    public void setExec(Boolean exec) {
-        this.exec = exec;
-    }
-
     public Long getCreateId() {
         return createId;
     }

+ 9 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TSJobRemindMapper.java

@@ -1,7 +1,9 @@
 package com.qmth.sop.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.bean.result.FlowTaskSmsResult;
 import com.qmth.sop.business.entity.TSJobRemind;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +15,11 @@ import com.qmth.sop.business.entity.TSJobRemind;
  */
 public interface TSJobRemindMapper extends BaseMapper<TSJobRemind> {
 
+    /**
+     * 获取流程任务发送短信内容
+     *
+     * @param id
+     * @return
+     */
+    FlowTaskSmsResult getFlowTaskRemindSmsInfo(@Param("id") Long id);
 }

+ 9 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TSJobRemindService.java

@@ -1,6 +1,7 @@
 package com.qmth.sop.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.bean.result.FlowTaskSmsResult;
 import com.qmth.sop.business.entity.TSJobRemind;
 
 import java.util.List;
@@ -30,4 +31,12 @@ public interface TSJobRemindService extends IService<TSJobRemind> {
      * @return
      */
     Boolean updateJobRemind(Long taskId);
+
+    /**
+     * 获取流程任务发送短信内容
+     *
+     * @param id
+     * @return
+     */
+    FlowTaskSmsResult getFlowTaskRemindSmsInfo(Long id);
 }

+ 12 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TSJobRemindServiceImpl.java

@@ -2,6 +2,7 @@ package com.qmth.sop.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.bean.result.FlowTaskSmsResult;
 import com.qmth.sop.business.entity.TSJobRemind;
 import com.qmth.sop.business.mapper.TSJobRemindMapper;
 import com.qmth.sop.business.service.TSJobRemindService;
@@ -47,4 +48,15 @@ public class TSJobRemindServiceImpl extends ServiceImpl<TSJobRemindMapper, TSJob
                 .eq(TSJobRemind::getObjId, taskId)
                 .set(TSJobRemind::getEnable, false));
     }
+
+    /**
+     * 获取流程任务发送短信内容
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public FlowTaskSmsResult getFlowTaskRemindSmsInfo(Long id) {
+        return this.baseMapper.getFlowTaskRemindSmsInfo(id);
+    }
 }

+ 23 - 1
sop-business/src/main/resources/db/log/wangliang_update_log.sql

@@ -628,4 +628,26 @@ ALTER TABLE t_s_job_remind ADD enable TINYINT DEFAULT 1
     COMMENT '是否启用,0:停用,1:启用' NOT NULL after approve_operation;
 
 ALTER TABLE t_s_job_remind CHANGE COLUMN exec_time exec_time BIGINT
-    COMMENT '执行时间' NULL;
+    COMMENT '执行时间' NULL;
+
+--2023.8.18update
+INSERT INTO sys_config
+(id, org_id, config_key, config_name, config_value, remark, enable, sort, create_id, create_time, update_id, update_time)
+VALUES(22, NULL, 'notice.job.after.time', '公告超时提醒任务时间(单位:分)', '30', NULL, 1, 1, 1, NULL, NULL, NULL);
+
+UPDATE sys_config
+SET org_id=NULL, config_key='flow.job.before.time', config_name='流程提前提醒任务时间(单位:分)', config_value='720', remark=NULL, enable=1, sort=1, create_id=1, create_time=NULL, update_id=NULL, update_time=NULL
+WHERE id=20;
+UPDATE sys_config
+SET org_id=NULL, config_key='flow.job.after.time', config_name='流程超时提醒任务时间(单位:分)', config_value='1440', remark=NULL, enable=1, sort=1, create_id=1, create_time=NULL, update_id=NULL, update_time=NULL
+WHERE id=21;
+
+ALTER TABLE t_s_job_remind CHANGE COLUMN exec type TINYINT DEFAULT 0
+    COMMENT '类型,FLOW:流程,NOTICE:公告' NOT NULL;
+
+ALTER TABLE t_s_job_remind MODIFY COLUMN `type` VARCHAR(20) NOT NULL COMMENT '类型,FLOW:流程,NOTICE:公告';
+
+ALTER TABLE t_s_job_remind CHANGE `type` `type` varchar(20) CHARACTER SET utf8mb4 NOT NULL COMMENT '类型,FLOW:流程,NOTICE:公告' AFTER id;
+
+ALTER TABLE t_s_job_log CHANGE COLUMN type type VARCHAR(20)
+    COMMENT '类型,FLOW:流程,NOTICE:公告' NOT NULL;

+ 15 - 0
sop-business/src/main/resources/mapper/TSJobRemindMapper.xml

@@ -2,4 +2,19 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.sop.business.mapper.TSJobRemindMapper">
 
+    <select id="getFlowTaskRemindSmsInfo" resultType="com.qmth.sop.business.bean.result.FlowTaskSmsResult">
+        select
+            tbc.name as serviceName,
+            sc.name as customName,
+            su.real_name as realName,
+            su.mobile_number as mobileNumber
+        from
+            t_s_job_remind tsjr
+                left join t_f_custom_flow_entity tfcfe on tfcfe.code = tsjr.code
+                left join t_b_crm tbc on tbc.crm_no = tfcfe.crm_no
+                left join sys_custom sc on sc.id = tbc.custom_id
+                left join sys_user su on su.id = tsjr.receive_user_id
+        where
+            tsjr.id = #{id}
+    </select>
 </mapper>

+ 27 - 2
sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java

@@ -120,8 +120,9 @@ public class SystemConstant {
     public static final String SMS_SIGN_NAME = "sms.sign.name";
     public static final String SMS_TPL_CODE = "sms.tpl.code";
     public static final String FLOW_CODE_LENGTH = "flow.code.length";
-    public static final String JOB_BEFORE_TIME = "job.before.time";
-    public static final String JOB_AFTER_TIME = "job.after.time";
+    public static final String FLOW_JOB_BEFORE_TIME = "flow.job.before.time";
+    public static final String FLOW_JOB_AFTER_TIME = "flow.job.after.time";
+    public static final String NOTICE_JOB_AFTER_TIME = "notice.job.after.time";
 
     /**
      * api前缀
@@ -334,6 +335,30 @@ public class SystemConstant {
         return newDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
     }
 
+    /**
+     * 指定时间相加
+     *
+     * @param duration
+     * @return
+     */
+    public static Long processMiniutePlus(Long time, Duration duration) {
+        LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(time / 1000, 0, ZoneOffset.ofHours(8));
+        LocalDateTime newDateTime = localDateTime.plus(duration);
+        return newDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
+    }
+
+    /**
+     * 指定时间相减
+     *
+     * @param duration
+     * @return
+     */
+    public static Long processMiniuteMinus(Long time, Duration duration) {
+        LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(time / 1000, 0, ZoneOffset.ofHours(8));
+        LocalDateTime newDateTime = localDateTime.minus(duration);
+        return newDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
+    }
+
     /**
      * string id 转化为long
      *

+ 25 - 0
sop-common/src/main/java/com/qmth/sop/common/enums/JobQuartzTypeEnum.java

@@ -0,0 +1,25 @@
+package com.qmth.sop.common.enums;
+
+/**
+ * @Description: 任务执行类型enum
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/1/24
+ */
+public enum JobQuartzTypeEnum {
+
+    FLOW("流程"),
+
+    NOTICE("公告");
+
+    private String title;
+
+    private JobQuartzTypeEnum(String title) {
+        this.title = title;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+}

+ 41 - 5
sop-task/src/main/java/com/qmth/sop/task/job/FlowTaskQuartzJob.java

@@ -1,17 +1,27 @@
 package com.qmth.sop.task.job;
 
+import com.qmth.sop.business.bean.result.FlowTaskSmsResult;
+import com.qmth.sop.business.entity.TSJobRemind;
+import com.qmth.sop.business.service.TSJobRemindService;
+import com.qmth.sop.business.util.SmsSendUtil;
 import com.qmth.sop.common.contant.SystemConstant;
-import com.qmth.sop.task.job.service.JobService;
+import com.qmth.sop.common.enums.JobQuartzTypeEnum;
+import com.qmth.sop.common.enums.JobTypeEnum;
+import org.quartz.JobDetail;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.scheduling.quartz.QuartzJobBean;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 /**
- * @Description: 流程任务提醒job
+ * @Description: 流程任务执行job
  * @Param:
  * @return:
  * @Author: wangliang
@@ -21,12 +31,38 @@ public class FlowTaskQuartzJob extends QuartzJobBean {
     private final static Logger log = LoggerFactory.getLogger(FlowTaskQuartzJob.class);
 
     @Resource
-    JobService jobService;
+    SmsSendUtil smsSendUtil;
+
+    @Resource
+    TSJobRemindService tsJobRemindService;
 
     @Override
-    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+    @Transactional
+    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
+        log.info("flowTaskQuartzJob,context:{}", context);
         try {
-            jobService.flowTaskRemindTask();
+            JobDetail jobDetail = context.getJobDetail();
+            String[] strings = jobDetail.getKey().toString().split("\\.");
+            if (Objects.nonNull(strings[1])) {
+                TSJobRemind tsJobRemind = tsJobRemindService.getById(Long.parseLong(strings[1]));
+                if (Objects.nonNull(tsJobRemind)) {//数据还在则说明要发送提醒短信
+                    if (tsJobRemind.getType() == JobQuartzTypeEnum.FLOW) {//流程发送短信
+                        FlowTaskSmsResult flowTaskSmsResult = tsJobRemindService.getFlowTaskRemindSmsInfo(tsJobRemind.getId());
+                        if (Objects.nonNull(flowTaskSmsResult)) {
+                            String[] strs = tsJobRemind.getObjName().split(";");
+                            Map<String, Object> templateParam = new HashMap<>();
+                            templateParam.put("code", "test");
+                            if (tsJobRemind.getRemindType() == JobTypeEnum.BEFORE) {
+                                smsSendUtil.sendSms(flowTaskSmsResult.getMobileNumber(), SystemConstant.SMS_TPL_CODE, templateParam);
+                            } else if (tsJobRemind.getRemindType() == JobTypeEnum.AFTER) {
+                                smsSendUtil.sendSms(flowTaskSmsResult.getMobileNumber(), SystemConstant.SMS_TPL_CODE, templateParam);
+                            }
+                        }
+                    } else if (tsJobRemind.getType() == JobQuartzTypeEnum.NOTICE) {//公告发送短信
+
+                    }
+                }
+            }
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
         }

+ 26 - 20
sop-task/src/main/java/com/qmth/sop/task/job/service/impl/JobServiceImpl.java

@@ -8,6 +8,7 @@ import com.qmth.sop.business.service.TSJobRemindService;
 import com.qmth.sop.common.contant.SystemConstant;
 import com.qmth.sop.common.enums.ExceptionResultEnum;
 import com.qmth.sop.common.enums.JobEnum;
+import com.qmth.sop.common.enums.JobQuartzTypeEnum;
 import com.qmth.sop.task.job.FlowTaskQuartzJob;
 import com.qmth.sop.task.job.service.JobService;
 import com.qmth.sop.task.service.QuartzService;
@@ -47,31 +48,36 @@ public class JobServiceImpl implements JobService {
     @Override
     @Transactional
     public void flowTaskRemindTask() {
-        List<TSJobRemind> tsJobRemindList = tsJobRemindService.list(new QueryWrapper<TSJobRemind>().lambda().eq(TSJobRemind::getExec, false).last("limit 0,100"));
+        log.info("flowTaskRemindTask is come in");
+        List<TSJobRemind> tsJobRemindList = tsJobRemindService.list(new QueryWrapper<TSJobRemind>().lambda().isNull(TSJobRemind::getExecTime));
         if (!CollectionUtils.isEmpty(tsJobRemindList)) {
             List<TSJobRemind> tsJobRemindUpdateList = new ArrayList<>(tsJobRemindList.size());
             List<Long> tsJobRemindIdList = new ArrayList<>(tsJobRemindList.size());
             for (TSJobRemind t : tsJobRemindList) {
                 if (Objects.nonNull(t.getEnable()) && t.getEnable()) {//新建定时任务
-                    switch (t.getRemindType()) {
-                        case BEFORE://提前提醒
-                            SysConfig sysConfigBefore = commonCacheService.addSysConfigCache(SystemConstant.JOB_BEFORE_TIME);
-                            Optional.ofNullable(sysConfigBefore).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("提前提醒任务时间未设置"));
-                            Long execTime = SystemConstant.processMiniuteMinus(Duration.ofHours(Long.parseLong(sysConfigBefore.getConfigValue())));
-                            t.updateExecInfo(execTime);
-                            this.setJobTime(execTime, t.getObjId().toString(), t, FlowTaskQuartzJob.class, JobEnum.FLOW_TASK_REMIND_QUARTZ_JOB_GROUP);
-                            tsJobRemindUpdateList.add(t);
-                            break;
-                        case AFTER://超时提醒
-                            SysConfig sysConfigAfter = commonCacheService.addSysConfigCache(SystemConstant.JOB_AFTER_TIME);
-                            Optional.ofNullable(sysConfigAfter).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("超时提醒任务时间未设置"));
-                            execTime = SystemConstant.processMiniutePlus(Duration.ofHours(Long.parseLong(sysConfigAfter.getConfigValue())));
-                            t.updateExecInfo(execTime);
-                            this.setJobTime(execTime, t.getObjId().toString(), t, FlowTaskQuartzJob.class, JobEnum.FLOW_TASK_REMIND_QUARTZ_JOB_GROUP);
-                            tsJobRemindUpdateList.add(t);
-                            break;
-                        default:
-                            break;
+                    if (t.getType() == JobQuartzTypeEnum.FLOW) {//流程
+                        switch (t.getRemindType()) {
+                            case BEFORE://提前提醒
+                                SysConfig sysConfigBefore = commonCacheService.addSysConfigCache(SystemConstant.FLOW_JOB_BEFORE_TIME);
+                                Optional.ofNullable(sysConfigBefore).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("提前提醒任务时间未设置"));
+                                Long execTime = SystemConstant.processMiniuteMinus(t.getCreateTime(), Duration.ofMinutes(Long.parseLong(sysConfigBefore.getConfigValue())));
+                                t.setExecTime(execTime);
+                                this.setJobTime(execTime, t.getId().toString(), t, FlowTaskQuartzJob.class, JobEnum.FLOW_TASK_REMIND_QUARTZ_JOB_GROUP);
+                                tsJobRemindUpdateList.add(t);
+                                break;
+                            case AFTER://超时提醒
+                                SysConfig sysConfigAfter = commonCacheService.addSysConfigCache(SystemConstant.FLOW_JOB_AFTER_TIME);
+                                Optional.ofNullable(sysConfigAfter).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("超时提醒任务时间未设置"));
+                                execTime = SystemConstant.processMiniutePlus(t.getCreateTime(), Duration.ofMinutes(Long.parseLong(sysConfigAfter.getConfigValue())));
+                                t.setExecTime(execTime);
+                                this.setJobTime(execTime, t.getId().toString(), t, FlowTaskQuartzJob.class, JobEnum.FLOW_TASK_REMIND_QUARTZ_JOB_GROUP);
+                                tsJobRemindUpdateList.add(t);
+                                break;
+                            default:
+                                break;
+                        }
+                    } else if (t.getType() == JobQuartzTypeEnum.FLOW) {//通告
+
                     }
                 } else if (Objects.nonNull(t.getEnable()) && !t.getEnable()) {
                     //禁用需删除定时任务