Commit 9364ccedf6a2cf8463246392e6ec7bddf69aa992
1 parent
d558e0c6
到期提醒创建任务修改
Showing
4 changed files
with
27 additions
and
13 deletions
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); | ... | ... |