wangliang преди 1 година
родител
ревизия
7155479f63

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

@@ -1,5 +1,8 @@
 package com.qmth.sop.business.bean.result;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.enums.TFCustomTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
@@ -13,6 +16,10 @@ import java.io.Serializable;
  */
 public class FlowTaskSmsResult implements Serializable {
 
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "服务单元id")
+    Long serviceId;
+
     @ApiModelProperty(value = "服务单元名称")
     String serviceName;
 
@@ -25,6 +32,48 @@ public class FlowTaskSmsResult implements Serializable {
     @ApiModelProperty(value = "用户手机号码")
     String mobileNumber;
 
+    @ApiModelProperty(value = "crm单号")
+    String crmNo;
+
+    @ApiModelProperty(value = "流程类型")
+    TFCustomTypeEnum type;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "用户id")
+    Long userId;
+
+    public Long getServiceId() {
+        return serviceId;
+    }
+
+    public void setServiceId(Long serviceId) {
+        this.serviceId = serviceId;
+    }
+
+    public String getCrmNo() {
+        return crmNo;
+    }
+
+    public void setCrmNo(String crmNo) {
+        this.crmNo = crmNo;
+    }
+
+    public TFCustomTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(TFCustomTypeEnum type) {
+        this.type = type;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
     public String getServiceName() {
         return serviceName;
     }

+ 6 - 1
sop-business/src/main/resources/mapper/TSJobRemindMapper.xml

@@ -4,13 +4,18 @@
 
     <select id="getFlowTaskRemindSmsInfo" resultType="com.qmth.sop.business.bean.result.FlowTaskSmsResult">
         select
+            tbc.id as serviceId,
             tbc.name as serviceName,
             sc.name as customName,
             su.real_name as realName,
-            su.mobile_number as mobileNumber
+            su.mobile_number as mobileNumber,
+            tfcfe.crm_no as crmNo,
+            tfcf.`type`,
+            tsjr.receive_user_id as userId
         from
             t_s_job_remind tsjr
                 left join t_f_custom_flow_entity tfcfe on tfcfe.code = tsjr.code
+                left join t_f_custom_flow tfcf on tfcf.id = tfcfe.t_f_custom_flow_id
                 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

+ 2 - 2
sop-common/src/main/java/com/qmth/sop/common/enums/MessageEnum.java

@@ -17,9 +17,9 @@ public enum MessageEnum {
 
     NOTICE_OF_PROJECT_EXCHANGE("系统计划变更审核通知", "${userName}您好,您提交的${serviceName}的${customName}SOP,类型为“${exchangeType}”的系统计划变更申请已处理完成!"),
 
-    NOTICE_OF_SOP_DONE("教务处/研究生SOP节点负责人通知", "${userName}您好,您已收到${customName}的${customName}SOP的${flowName}的待办任务!"),
+    NOTICE_OF_SOP_DONE("教务处/研究生SOP节点负责人通知", "${userName}您好,您已收到${serviceName}的${customName}SOP的${flowName}的待办任务!"),
 
-    NOTICE_OF_SOP_DONE_REMIND("教务处/研究生SOP提前提醒通知", "${userName}您好,${customName}的${customName}SOP有${flowName}待办任务即将到期,请及时处理!"),
+    NOTICE_OF_SOP_DONE_REMIND("教务处/研究生SOP提前提醒通知", "${userName}您好,${serviceName}的${customName}SOP有${flowName}待办任务即将到期,请及时处理!"),
 
     NOTICE_OF_SYSTEM_REMIND("系统通知公告通知", "${userName}您好,您收到标题为“${title}”的通知公告,请及时上线查阅!");
 

+ 47 - 9
sop-task/src/main/java/com/qmth/sop/task/job/RemindTaskJob.java

@@ -2,14 +2,18 @@ package com.qmth.sop.task.job;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.sop.business.bean.result.FlowTaskSmsResult;
+import com.qmth.sop.business.entity.SysMessage;
 import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.entity.TSJobRemind;
+import com.qmth.sop.business.service.SysMessageService;
 import com.qmth.sop.business.service.SysUserService;
 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.common.enums.JobQuartzTypeEnum;
 import com.qmth.sop.common.enums.JobTypeEnum;
+import com.qmth.sop.common.enums.MessageEnum;
+import com.qmth.sop.common.enums.MessageTypeEnum;
 import org.quartz.JobDataMap;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
@@ -19,10 +23,7 @@ import org.springframework.scheduling.quartz.QuartzJobBean;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * @Description: 流程任务执行job
@@ -43,6 +44,9 @@ public class RemindTaskJob extends QuartzJobBean {
     @Resource
     SysUserService sysUserService;
 
+    @Resource
+    SysMessageService sysMessageService;
+
     @Override
     @Transactional
     protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
@@ -55,15 +59,49 @@ public class RemindTaskJob extends QuartzJobBean {
                 if (Objects.nonNull(tsJobRemind)) {//数据还在则说明要发送提醒短信
                     if (tsJobRemind.getType() == JobQuartzTypeEnum.FLOW) {//流程发送短信
                         FlowTaskSmsResult flowTaskSmsResult = tsJobRemindService.getFlowTaskRemindSmsInfo(tsJobRemind.getId());
+                        Map<String, Object> templateParam = new HashMap<>();
+                        templateParam.put("userName", flowTaskSmsResult.getRealName());
+
+                        SysMessage sysMessage = null;
+                        String configKey = null, content = null;
                         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);
+                            if (tsJobRemind.getRemindType() == JobTypeEnum.BEFORE) {//教务处SOP和云阅卷SOP
+                                content = MessageEnum.NOTICE_OF_SOP_DONE_REMIND.getTemplate();
+                                content = content.replaceAll("\\$\\{userName\\}", flowTaskSmsResult.getRealName());
+                                content = content.replaceAll("\\$\\{serviceName\\}", flowTaskSmsResult.getServiceName());
+                                content = content.replaceAll("\\$\\{customName\\}", flowTaskSmsResult.getCustomName());
+                                content = content.replaceAll("\\$\\{flowName\\}", strs[0] + "【" + strs[1] + "】");
+
+                                configKey = SystemConstant.SMS_TPL_CODE;
+                                templateParam.put("serviceName", flowTaskSmsResult.getServiceName());
+                                templateParam.put("customName", flowTaskSmsResult.getCustomName());
+                                templateParam.put("flowName", strs[0] + "【" + strs[1] + "】");
+
+                                sysMessage = new SysMessage(flowTaskSmsResult.getCrmNo(), tsJobRemind.getCode(),
+                                        MessageTypeEnum.BEFORE,
+                                        flowTaskSmsResult.getType().name(), flowTaskSmsResult.getServiceId(), flowTaskSmsResult.getUserId(), content);
                             } else if (tsJobRemind.getRemindType() == JobTypeEnum.AFTER) {
-                                smsSendUtil.sendSms(flowTaskSmsResult.getMobileNumber(), SystemConstant.SMS_TPL_CODE, templateParam);
+                                content = MessageEnum.NOTICE_OF_DELAY_REMIND.getTemplate();
+                                content = content.replaceAll("\\$\\{userName\\}", flowTaskSmsResult.getRealName());
+                                content = content.replaceAll("\\$\\{serviceName\\}", flowTaskSmsResult.getServiceName());
+                                content = content.replaceAll("\\$\\{customName\\}", flowTaskSmsResult.getCustomName());
+                                content = content.replaceAll("\\$\\{flowName\\}", strs[0] + "【" + strs[1] + "】");
+
+                                configKey = SystemConstant.SMS_TPL_CODE;
+                                templateParam.put("serviceName", flowTaskSmsResult.getServiceName());
+                                templateParam.put("customName", flowTaskSmsResult.getCustomName());
+                                templateParam.put("flowName", strs[0] + "【" + strs[1] + "】");
+
+                                sysMessage = new SysMessage(flowTaskSmsResult.getCrmNo(), tsJobRemind.getCode(),
+                                        MessageTypeEnum.AFTER,
+                                        flowTaskSmsResult.getType().name(), flowTaskSmsResult.getServiceId(), flowTaskSmsResult.getUserId(), content);
                             }
+                            //发送消息
+                            sysMessageService.saveSysMessage(Arrays.asList(sysMessage));
+
+                            //发送短信
+                            smsSendUtil.sendSms(flowTaskSmsResult.getMobileNumber(), configKey, templateParam);
                         }
                     } else if (tsJobRemind.getType() == JobQuartzTypeEnum.NOTICE) {//公告发送短信
                         if (tsJobRemind.getRemindType() == JobTypeEnum.AFTER) {