Commit 56ea79020f5629fd3a8099d8eb3d736969e605df

Authored by wangqian
1 parent 5031fa57

派单任务到期3小时提醒修改

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(),"创建到期定时提醒异常");
... ...