Commit a449774f7eb824933358e4ba990caf5021f7300e

Authored by wangqian
1 parent 9364cced

到期提醒创建任务修改

urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/AssignTasksConstants.java
@@ -29,6 +29,11 @@ public class AssignTasksConstants { @@ -29,6 +29,11 @@ public class AssignTasksConstants {
29 29
30 /* 催办短信场景配置*/ 30 /* 催办短信场景配置*/
31 public static final int ASSIGN_TASK_SCENE = 6; 31 public static final int ASSIGN_TASK_SCENE = 6;
  32 + /* 到期短信场景配置*/
  33 + public static final int ASSIGN_TASK_REMIND_ADVANCE_SCENE = 7;
  34 + //截至日期3小时
  35 + public static final String REMIND_ADVANCE_HOURS = "3";
  36 +
32 /*办理人角色*/ 37 /*办理人角色*/
33 public static final String ASSIGN_ROLE_KEY = "zgs_leader"; 38 public static final String ASSIGN_ROLE_KEY = "zgs_leader";
34 /** 39 /**
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/ExpireRemindJob.java
@@ -39,9 +39,7 @@ import static com.zteits.urbanops.module.garden.service.assigntasksinfo.AssignTa @@ -39,9 +39,7 @@ import static com.zteits.urbanops.module.garden.service.assigntasksinfo.AssignTa
39 @Service 39 @Service
40 public class ExpireRemindJob implements Job { 40 public class ExpireRemindJob implements Job {
41 private static final Logger log = LoggerFactory.getLogger(ExpireRemindJob.class); 41 private static final Logger log = LoggerFactory.getLogger(ExpireRemindJob.class);
42 - private static final DateTimeFormatter DEADLINE_FORMATTER = DateTimeFormatter  
43 - .ofPattern(FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
44 - .withZone(ZoneId.of("GMT+8")); // 时区与之前配置一致,避免偏移 42 +
45 @Resource 43 @Resource
46 private AssignTasksInfoService assignTasksInfoService; 44 private AssignTasksInfoService assignTasksInfoService;
47 @Resource 45 @Resource
@@ -93,7 +91,7 @@ public class ExpireRemindJob implements Job { @@ -93,7 +91,7 @@ public class ExpireRemindJob implements Job {
93 executeRemindLogic(task); 91 executeRemindLogic(task);
94 92
95 // 4. 提醒成功后,更新任务状态+移除触发器(核心优化:成功也移除) 93 // 4. 提醒成功后,更新任务状态+移除触发器(核心优化:成功也移除)
96 - updateTaskRemindStatus(taskId); 94 + //updateTaskRemindStatus(taskId);
97 removeRemindJobSafely(taskId); 95 removeRemindJobSafely(taskId);
98 log.info("【到期提醒Job】执行成功,任务ID:{}", taskId); 96 log.info("【到期提醒Job】执行成功,任务ID:{}", taskId);
99 97
@@ -113,32 +111,26 @@ public class ExpireRemindJob implements Job { @@ -113,32 +111,26 @@ public class ExpireRemindJob implements Job {
113 private void executeRemindLogic(AssignTasksInfoDO task) { 111 private void executeRemindLogic(AssignTasksInfoDO task) {
114 String taskName = task.getTaskName(); 112 String taskName = task.getTaskName();
115 LocalDateTime deadline = task.getDeadline(); 113 LocalDateTime deadline = task.getDeadline();
116 - String formattedDeadline = Objects.nonNull(deadline)  
117 - ? DEADLINE_FORMATTER.format(deadline)  
118 - : ""; // 或 null  
119 - String remindContent = String.format("任务【%s】即将到期,到期时间:%s,请及时处理", taskName, deadline); 114 + String remindContent = String.format("您有【%s】上报任务,距离截止时间【%s】小时,请及时处理。", taskName, AssignTasksConstants.REMIND_ADVANCE_HOURS);
120 115
121 List<AdminUserRespDTO> matchUserList = assignTasksInfoService.getUsersByCompanyId(task.getCompanyId()); 116 List<AdminUserRespDTO> matchUserList = assignTasksInfoService.getUsersByCompanyId(task.getCompanyId());
122 Map<String, Object> templateParams = new HashMap<String, Object>(); 117 Map<String, Object> templateParams = new HashMap<String, Object>();
123 - templateParams.put("companyName", task.getCompanyName());  
124 templateParams.put("taskName", task.getTaskName()); 118 templateParams.put("taskName", task.getTaskName());
125 - templateParams.put("deadline", formattedDeadline); 119 + templateParams.put("hours", AssignTasksConstants.REMIND_ADVANCE_HOURS);
126 // 5. 发送短信通知 120 // 5. 发送短信通知
127 log.info("【到期提醒逻辑】发送短信 signMap: {}", JSONObject.toJSONString(templateParams)); 121 log.info("【到期提醒逻辑】发送短信 signMap: {}", JSONObject.toJSONString(templateParams));
128 - Boolean sendFlag = false;  
129 for (AdminUserRespDTO adminUserRespDTO : matchUserList) { 122 for (AdminUserRespDTO adminUserRespDTO : matchUserList) {
130 String phonenumber = adminUserRespDTO.getMobile(); 123 String phonenumber = adminUserRespDTO.getMobile();
131 if (StringUtils.isEmpty(phonenumber)) { 124 if (StringUtils.isEmpty(phonenumber)) {
132 continue; 125 continue;
133 } 126 }
134 SmsCodeSendReqDTO reqDTO = new SmsCodeSendReqDTO(); 127 SmsCodeSendReqDTO reqDTO = new SmsCodeSendReqDTO();
135 - reqDTO.setScene(AssignTasksConstants.ASSIGN_TASK_SCENE); 128 + reqDTO.setScene(AssignTasksConstants.ASSIGN_TASK_REMIND_ADVANCE_SCENE);
136 reqDTO.setMobile(phonenumber);//手机号 129 reqDTO.setMobile(phonenumber);//手机号
137 reqDTO.setTemplateParams(templateParams);//短信参数 130 reqDTO.setTemplateParams(templateParams);//短信参数
138 reqDTO.setCreateIp(LocalIpUtils.getLocalIp()); 131 reqDTO.setCreateIp(LocalIpUtils.getLocalIp());
139 smsCodeApi.openSendSmsCode(reqDTO); 132 smsCodeApi.openSendSmsCode(reqDTO);
140 log.info("提交单位任务成功,已通知填报人:手机号:{},任务ID={}", phonenumber, task.getId()); 133 log.info("提交单位任务成功,已通知填报人:手机号:{},任务ID={}", phonenumber, task.getId());
141 - sendFlag = true;  
142 } 134 }
143 log.info("【到期提醒逻辑】执行提醒,任务名称:{},到期时间:{},提醒内容:{}", taskName, deadline, remindContent); 135 log.info("【到期提醒逻辑】执行提醒,任务名称:{},到期时间:{},提醒内容:{}", taskName, deadline, remindContent);
144 } 136 }
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java
@@ -86,7 +86,7 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { @@ -86,7 +86,7 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService {
86 public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss"; 86 public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
87 87
88 // 提前提醒(3小时) 88 // 提前提醒(3小时)
89 - private static final long REMIND_ADVANCE_HOURS = 3L; 89 + private static final long REMIND_ADVANCE_HOURS = 4L;
90 90
91 // 1. 定义线程安全的格式化器(全局复用,无需重复创建) 91 // 1. 定义线程安全的格式化器(全局复用,无需重复创建)
92 private static final DateTimeFormatter DEADLINE_FORMATTER = DateTimeFormatter 92 private static final DateTimeFormatter DEADLINE_FORMATTER = DateTimeFormatter
@@ -191,8 +191,8 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { @@ -191,8 +191,8 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService {
191 LocalDateTime now = LocalDateTime.now(DEFAULT_ZONE); // 当前东八区时间 191 LocalDateTime now = LocalDateTime.now(DEFAULT_ZONE); // 当前东八区时间
192 LocalDateTime remindThreshold = now.plusHours(REMIND_ADVANCE_HOURS); 192 LocalDateTime remindThreshold = now.plusHours(REMIND_ADVANCE_HOURS);
193 193
194 - // 核心判断:截止时间 <= (当前时间+3小时) → 不足3小时,不创建定时任务  
195 - if (deadline.isBefore(remindThreshold) || deadline.isEqual(remindThreshold)) { 194 + // 核心判断:截止时间 <= (当前时间+3小时),不创建定时任务
  195 + if (deadline.isBefore(remindThreshold)) {
196 String formattedDeadline = deadline.format(DATE_FORMATTER); 196 String formattedDeadline = deadline.format(DATE_FORMATTER);
197 String formattedThreshold = remindThreshold.format(DATE_FORMATTER); 197 String formattedThreshold = remindThreshold.format(DATE_FORMATTER);
198 log.info("任务ID={} 无需创建定时任务:截止时间={},不足{}小时(阈值时间={})", 198 log.info("任务ID={} 无需创建定时任务:截止时间={},不足{}小时(阈值时间={})",