Commit 56ea79020f5629fd3a8099d8eb3d736969e605df
1 parent
5031fa57
派单任务到期3小时提醒修改
Showing
2 changed files
with
27 additions
and
13 deletions
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/ExpireRemindJob.java
| @@ -76,17 +76,17 @@ public class ExpireRemindJob implements Job { | @@ -76,17 +76,17 @@ public class ExpireRemindJob implements Job { | ||
| 76 | return; | 76 | return; |
| 77 | } | 77 | } |
| 78 | // 2.3 新增判断:到期时间距离当前时间小于3小时,无需提醒 | 78 | // 2.3 新增判断:到期时间距离当前时间小于3小时,无需提醒 |
| 79 | - LocalDateTime deadline = task.getDeadline(); | ||
| 80 | - LocalDateTime now = LocalDateTime.now(); | ||
| 81 | - // 计算当前时间到到期时间的时长(单位:小时) | ||
| 82 | - long hoursUntilDeadline = java.time.Duration.between(now, deadline).toHours(); | ||
| 83 | - // 核心判断:到期前不足3小时(包括已过期),不提醒 | ||
| 84 | - if (hoursUntilDeadline < 3) { | ||
| 85 | - log.info("【到期提醒Job】任务到期前不足3小时,无需提醒,任务ID:{},到期时间:{},当前时间:{}", | ||
| 86 | - taskId, deadline, now); | ||
| 87 | - removeRemindJobSafely(taskId); | ||
| 88 | - return; | ||
| 89 | - } | 79 | +// LocalDateTime deadline = task.getDeadline(); |
| 80 | +// LocalDateTime now = LocalDateTime.now(); | ||
| 81 | +// // 计算当前时间到到期时间的时长(单位:小时) | ||
| 82 | +// long hoursUntilDeadline = java.time.Duration.between(now, deadline).toHours(); | ||
| 83 | +// // 核心判断:到期前不足3小时(包括已过期),不提醒 | ||
| 84 | +// if (hoursUntilDeadline < 3) { | ||
| 85 | +// log.info("【到期提醒Job】任务到期前不足3小时,无需提醒,任务ID:{},到期时间:{},当前时间:{}", | ||
| 86 | +// taskId, deadline, now); | ||
| 87 | +// removeRemindJobSafely(taskId); | ||
| 88 | +// return; | ||
| 89 | +// } | ||
| 90 | 90 | ||
| 91 | // 3. 核心提醒逻辑(示例:短信/站内信/邮件) | 91 | // 3. 核心提醒逻辑(示例:短信/站内信/邮件) |
| 92 | executeRemindLogic(task); | 92 | executeRemindLogic(task); |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java
| @@ -76,6 +76,11 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | @@ -76,6 +76,11 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | ||
| 76 | 76 | ||
| 77 | @Resource | 77 | @Resource |
| 78 | private QuartzRemindService quartzRemindService; | 78 | private QuartzRemindService quartzRemindService; |
| 79 | + // 定义固定时区(推荐东八区,避免服务器时区影响) | ||
| 80 | + private static final ZoneId DEFAULT_ZONE = ZoneId.of("Asia/Shanghai"); | ||
| 81 | + // 定义时间格式化器,统一日志输出格式 | ||
| 82 | + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); | ||
| 83 | + | ||
| 79 | 84 | ||
| 80 | // 时间格式常量(与之前保持一致) | 85 | // 时间格式常量(与之前保持一致) |
| 81 | 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"; |
| @@ -172,10 +177,19 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | @@ -172,10 +177,19 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | ||
| 172 | unitIntegralService.createUnitIntegral(CommonConstants.UNIT_INTEGRAL_UNIT_TYPE_01, String.valueOf(companyId), assignTaskInfo.getCompanyName()); | 177 | unitIntegralService.createUnitIntegral(CommonConstants.UNIT_INTEGRAL_UNIT_TYPE_01, String.valueOf(companyId), assignTaskInfo.getCompanyName()); |
| 173 | try { | 178 | try { |
| 174 | //保存成功后创建定时器,3小时执行 | 179 | //保存成功后创建定时器,3小时执行 |
| 180 | + // 2. 安全转换LocalDateTime到Date(指定东八区,避免时区问题) | ||
| 181 | + LocalDateTime deadline = assignTasks.getDeadline(); | ||
| 175 | Date triggerDate = Date.from( | 182 | Date triggerDate = Date.from( |
| 176 | - assignTasks.getDeadline().atZone(ZoneId.systemDefault()) // 绑定时区 | ||
| 177 | - .toInstant() // 转为Instant(含时区的时间戳) | 183 | + deadline.atZone(DEFAULT_ZONE) // 绑定东八区(业务时区) |
| 184 | + .toInstant() // 转为Instant | ||
| 178 | ); | 185 | ); |
| 186 | + | ||
| 187 | + // 3. 规范日志输出(使用占位符,格式化时间) | ||
| 188 | + String formattedDeadline = deadline.format(DATE_FORMATTER); | ||
| 189 | + log.info("创建定时任务:任务ID={}, 截止时间(LocalDateTime)={}, 转换后Date时间={}", | ||
| 190 | + assignTaskInfo.getId(), | ||
| 191 | + formattedDeadline, | ||
| 192 | + triggerDate); | ||
| 179 | quartzRemindService.registerRemindJob(assignTaskInfo.getId(), triggerDate); | 193 | quartzRemindService.registerRemindJob(assignTaskInfo.getId(), triggerDate); |
| 180 | } catch (SchedulerException exception) { | 194 | } catch (SchedulerException exception) { |
| 181 | throw exception0(BAD_REQUEST.getCode(),"创建到期定时提醒异常"); | 195 | throw exception0(BAD_REQUEST.getCode(),"创建到期定时提醒异常"); |