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 | 76 | return; |
| 77 | 77 | } |
| 78 | 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 | 91 | // 3. 核心提醒逻辑(示例:短信/站内信/邮件) |
| 92 | 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 | 76 | |
| 77 | 77 | @Resource |
| 78 | 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 | 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 | 177 | unitIntegralService.createUnitIntegral(CommonConstants.UNIT_INTEGRAL_UNIT_TYPE_01, String.valueOf(companyId), assignTaskInfo.getCompanyName()); |
| 173 | 178 | try { |
| 174 | 179 | //保存成功后创建定时器,3小时执行 |
| 180 | + // 2. 安全转换LocalDateTime到Date(指定东八区,避免时区问题) | |
| 181 | + LocalDateTime deadline = assignTasks.getDeadline(); | |
| 175 | 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 | 193 | quartzRemindService.registerRemindJob(assignTaskInfo.getId(), triggerDate); |
| 180 | 194 | } catch (SchedulerException exception) { |
| 181 | 195 | throw exception0(BAD_REQUEST.getCode(),"创建到期定时提醒异常"); | ... | ... |