Commit 9364ccedf6a2cf8463246392e6ec7bddf69aa992

Authored by wangqian
1 parent d558e0c6

到期提醒创建任务修改

urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasks/vo/AssignTasksSaveReqVO.java
... ... @@ -43,8 +43,11 @@ public class AssignTasksSaveReqVO {
43 43 private Integer parentFinish;
44 44  
45 45 @Schema(description = "整体完成时间(仅当parent_finish=1时有值)")
46   - @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
47   - private Date finishTime;
  46 + @JsonFormat(
  47 + pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND,
  48 + timezone = "GMT+8",
  49 + shape = JsonFormat.Shape.STRING
  50 + ) private Date finishTime;
48 51  
49 52 @Schema(description = "任务备注(如:特殊要求、注意事项等)")
50 53 private String note;
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java
... ... @@ -72,6 +72,19 @@ public class AssignTasksServiceImpl implements AssignTasksService {
72 72 @Transactional(rollbackFor = Exception.class)
73 73 @Override
74 74 public Long createAssignTasks(AssignTasksSaveReqVO createReqVO) {
  75 + // 核心校验逻辑
  76 + Date deadline = createReqVO.getDeadline();
  77 + // 1. 先校验deadline是否为空(避免空指针)
  78 + if (deadline == null) {
  79 + throw exception0(BAD_REQUEST.getCode(), "到期日不能为空");
  80 + }
  81 + // 2. 获取当前时间(绑定业务时区,避免时区偏差)
  82 + Date now = new Date();
  83 + // 3. 核心判断:到期日 小于 当前时间 → 抛出异常
  84 + if (deadline.before(now)) {
  85 + throw exception0(BAD_REQUEST.getCode(), "到期日不能小于当前日期");
  86 + }
  87 + //
75 88 // 插入
76 89 AssignTasksDO assignTasks = BeanUtils.toBean(createReqVO, AssignTasksDO.class);
77 90 assignTasksMapper.insert(assignTasks);
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java
... ... @@ -85,8 +85,8 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService {
85 85 // 时间格式常量(与之前保持一致)
86 86 public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
87 87  
88   - // 提前提醒的天数(3天)
89   - private static final long REMIND_ADVANCE_DAYS = 3L;
  88 + // 提前提醒(3小时)
  89 + private static final long REMIND_ADVANCE_HOURS = 3L;
90 90  
91 91 // 1. 定义线程安全的格式化器(全局复用,无需重复创建)
92 92 private static final DateTimeFormatter DEADLINE_FORMATTER = DateTimeFormatter
... ... @@ -179,7 +179,6 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService {
179 179 // add by 20260307 初始化单位积分
180 180 unitIntegralService.createUnitIntegral(CommonConstants.UNIT_INTEGRAL_UNIT_TYPE_01, String.valueOf(companyId), assignTaskInfo.getCompanyName());
181 181 try {
182   - //保存成功后创建定时器,3天执行
183 182 // 1. 获取截止时间并校验非空
184 183 LocalDateTime deadline = assignTasks.getDeadline();
185 184 if (deadline == null) {
... ... @@ -188,16 +187,16 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService {
188 187 return;
189 188 }
190 189  
191   - // 2. 计算:当前时间 + 3天 是否超过截止时间(即截止时间不足3天
  190 + // 2. 计算:当前时间 + 3小时 是否超过截止时间(即截止时间不足3小时
192 191 LocalDateTime now = LocalDateTime.now(DEFAULT_ZONE); // 当前东八区时间
193   - LocalDateTime remindThreshold = now.plusDays(REMIND_ADVANCE_DAYS);
  192 + LocalDateTime remindThreshold = now.plusHours(REMIND_ADVANCE_HOURS);
194 193  
195   - // 核心判断:截止时间 <= (当前时间+3天) → 不足3天,不创建定时任务
  194 + // 核心判断:截止时间 <= (当前时间+3小时) → 不足3小时,不创建定时任务
196 195 if (deadline.isBefore(remindThreshold) || deadline.isEqual(remindThreshold)) {
197 196 String formattedDeadline = deadline.format(DATE_FORMATTER);
198 197 String formattedThreshold = remindThreshold.format(DATE_FORMATTER);
199   - log.info("任务ID={} 无需创建定时任务:截止时间={},不足{}天(阈值时间={})",
200   - assignTaskInfo.getId(), formattedDeadline, REMIND_ADVANCE_DAYS, formattedThreshold);
  198 + log.info("任务ID={} 无需创建定时任务:截止时间={},不足{}小时(阈值时间={})",
  199 + assignTaskInfo.getId(), formattedDeadline, REMIND_ADVANCE_HOURS, formattedThreshold);
201 200 return; // 直接返回,不创建定时任务
202 201 }
203 202  
... ...
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/QuartzRemindService.java
... ... @@ -10,7 +10,6 @@ import org.springframework.stereotype.Service;
10 10 import java.text.SimpleDateFormat;
11 11 import java.util.Date;
12 12 import java.util.Set;
13   -import java.util.concurrent.TimeUnit;
14 13  
15 14 /**
16 15 * 动态注册到期提醒Quartz任务的服务
... ... @@ -36,8 +35,8 @@ public class QuartzRemindService {
36 35 throw new IllegalArgumentException("任务信息不完整,无法注册提醒");
37 36 }
38 37  
39   - // 2. 计算触发时间:到期时间 - 3天
40   - Date triggerTime = new Date(expireTime.getTime() - TimeUnit.DAYS.toMillis(3));
  38 + // 2. 计算触发时间:到期时间 - 3小时
  39 + Date triggerTime = new Date(expireTime.getTime() - 3 * 60 * 60 * 1000L);
41 40  
42 41 // 3. 定义JobKey(唯一标识:任务ID + 组名)
43 42 JobKey jobKey = new JobKey("REMIND_JOB_" + jobId, REMIND_JOB_GROUP);
... ...