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