diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/ExpireRemindJob.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/ExpireRemindJob.java index 23188a0..f20b6cd 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/ExpireRemindJob.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/job/task/ExpireRemindJob.java @@ -76,17 +76,17 @@ public class ExpireRemindJob implements Job { return; } // 2.3 新增判断:到期时间距离当前时间小于3小时,无需提醒 - LocalDateTime deadline = task.getDeadline(); - LocalDateTime now = LocalDateTime.now(); - // 计算当前时间到到期时间的时长(单位:小时) - long hoursUntilDeadline = java.time.Duration.between(now, deadline).toHours(); - // 核心判断:到期前不足3小时(包括已过期),不提醒 - if (hoursUntilDeadline < 3) { - log.info("【到期提醒Job】任务到期前不足3小时,无需提醒,任务ID:{},到期时间:{},当前时间:{}", - taskId, deadline, now); - removeRemindJobSafely(taskId); - return; - } +// LocalDateTime deadline = task.getDeadline(); +// LocalDateTime now = LocalDateTime.now(); +// // 计算当前时间到到期时间的时长(单位:小时) +// long hoursUntilDeadline = java.time.Duration.between(now, deadline).toHours(); +// // 核心判断:到期前不足3小时(包括已过期),不提醒 +// if (hoursUntilDeadline < 3) { +// log.info("【到期提醒Job】任务到期前不足3小时,无需提醒,任务ID:{},到期时间:{},当前时间:{}", +// taskId, deadline, now); +// removeRemindJobSafely(taskId); +// return; +// } // 3. 核心提醒逻辑(示例:短信/站内信/邮件) executeRemindLogic(task); diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java index 85bfdbc..559e801 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java @@ -76,6 +76,11 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { @Resource private QuartzRemindService quartzRemindService; + // 定义固定时区(推荐东八区,避免服务器时区影响) + private static final ZoneId DEFAULT_ZONE = ZoneId.of("Asia/Shanghai"); + // 定义时间格式化器,统一日志输出格式 + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); + // 时间格式常量(与之前保持一致) 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 { unitIntegralService.createUnitIntegral(CommonConstants.UNIT_INTEGRAL_UNIT_TYPE_01, String.valueOf(companyId), assignTaskInfo.getCompanyName()); try { //保存成功后创建定时器,3小时执行 + // 2. 安全转换LocalDateTime到Date(指定东八区,避免时区问题) + LocalDateTime deadline = assignTasks.getDeadline(); Date triggerDate = Date.from( - assignTasks.getDeadline().atZone(ZoneId.systemDefault()) // 绑定时区 - .toInstant() // 转为Instant(含时区的时间戳) + deadline.atZone(DEFAULT_ZONE) // 绑定东八区(业务时区) + .toInstant() // 转为Instant ); + + // 3. 规范日志输出(使用占位符,格式化时间) + String formattedDeadline = deadline.format(DATE_FORMATTER); + log.info("创建定时任务:任务ID={}, 截止时间(LocalDateTime)={}, 转换后Date时间={}", + assignTaskInfo.getId(), + formattedDeadline, + triggerDate); quartzRemindService.registerRemindJob(assignTaskInfo.getId(), triggerDate); } catch (SchedulerException exception) { throw exception0(BAD_REQUEST.getCode(),"创建到期定时提醒异常");