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,8 +43,11 @@ public class AssignTasksSaveReqVO { | ||
| 43 | private Integer parentFinish; | 43 | private Integer parentFinish; |
| 44 | 44 | ||
| 45 | @Schema(description = "整体完成时间(仅当parent_finish=1时有值)") | 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 | @Schema(description = "任务备注(如:特殊要求、注意事项等)") | 52 | @Schema(description = "任务备注(如:特殊要求、注意事项等)") |
| 50 | private String note; | 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,6 +72,19 @@ public class AssignTasksServiceImpl implements AssignTasksService { | ||
| 72 | @Transactional(rollbackFor = Exception.class) | 72 | @Transactional(rollbackFor = Exception.class) |
| 73 | @Override | 73 | @Override |
| 74 | public Long createAssignTasks(AssignTasksSaveReqVO createReqVO) { | 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 | AssignTasksDO assignTasks = BeanUtils.toBean(createReqVO, AssignTasksDO.class); | 89 | AssignTasksDO assignTasks = BeanUtils.toBean(createReqVO, AssignTasksDO.class); |
| 77 | assignTasksMapper.insert(assignTasks); | 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,8 +85,8 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | ||
| 85 | // 时间格式常量(与之前保持一致) | 85 | // 时间格式常量(与之前保持一致) |
| 86 | 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"; |
| 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 | // 1. 定义线程安全的格式化器(全局复用,无需重复创建) | 91 | // 1. 定义线程安全的格式化器(全局复用,无需重复创建) |
| 92 | private static final DateTimeFormatter DEADLINE_FORMATTER = DateTimeFormatter | 92 | private static final DateTimeFormatter DEADLINE_FORMATTER = DateTimeFormatter |
| @@ -179,7 +179,6 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | @@ -179,7 +179,6 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | ||
| 179 | // add by 20260307 初始化单位积分 | 179 | // add by 20260307 初始化单位积分 |
| 180 | unitIntegralService.createUnitIntegral(CommonConstants.UNIT_INTEGRAL_UNIT_TYPE_01, String.valueOf(companyId), assignTaskInfo.getCompanyName()); | 180 | unitIntegralService.createUnitIntegral(CommonConstants.UNIT_INTEGRAL_UNIT_TYPE_01, String.valueOf(companyId), assignTaskInfo.getCompanyName()); |
| 181 | try { | 181 | try { |
| 182 | - //保存成功后创建定时器,3天执行 | ||
| 183 | // 1. 获取截止时间并校验非空 | 182 | // 1. 获取截止时间并校验非空 |
| 184 | LocalDateTime deadline = assignTasks.getDeadline(); | 183 | LocalDateTime deadline = assignTasks.getDeadline(); |
| 185 | if (deadline == null) { | 184 | if (deadline == null) { |
| @@ -188,16 +187,16 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | @@ -188,16 +187,16 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | ||
| 188 | return; | 187 | return; |
| 189 | } | 188 | } |
| 190 | 189 | ||
| 191 | - // 2. 计算:当前时间 + 3天 是否超过截止时间(即截止时间不足3天) | 190 | + // 2. 计算:当前时间 + 3小时 是否超过截止时间(即截止时间不足3小时) |
| 192 | LocalDateTime now = LocalDateTime.now(DEFAULT_ZONE); // 当前东八区时间 | 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 | if (deadline.isBefore(remindThreshold) || deadline.isEqual(remindThreshold)) { | 195 | if (deadline.isBefore(remindThreshold) || deadline.isEqual(remindThreshold)) { |
| 197 | String formattedDeadline = deadline.format(DATE_FORMATTER); | 196 | String formattedDeadline = deadline.format(DATE_FORMATTER); |
| 198 | String formattedThreshold = remindThreshold.format(DATE_FORMATTER); | 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 | return; // 直接返回,不创建定时任务 | 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,7 +10,6 @@ import org.springframework.stereotype.Service; | ||
| 10 | import java.text.SimpleDateFormat; | 10 | import java.text.SimpleDateFormat; |
| 11 | import java.util.Date; | 11 | import java.util.Date; |
| 12 | import java.util.Set; | 12 | import java.util.Set; |
| 13 | -import java.util.concurrent.TimeUnit; | ||
| 14 | 13 | ||
| 15 | /** | 14 | /** |
| 16 | * 动态注册到期提醒Quartz任务的服务 | 15 | * 动态注册到期提醒Quartz任务的服务 |
| @@ -36,8 +35,8 @@ public class QuartzRemindService { | @@ -36,8 +35,8 @@ public class QuartzRemindService { | ||
| 36 | throw new IllegalArgumentException("任务信息不完整,无法注册提醒"); | 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 | // 3. 定义JobKey(唯一标识:任务ID + 组名) | 41 | // 3. 定义JobKey(唯一标识:任务ID + 组名) |
| 43 | JobKey jobKey = new JobKey("REMIND_JOB_" + jobId, REMIND_JOB_GROUP); | 42 | JobKey jobKey = new JobKey("REMIND_JOB_" + jobId, REMIND_JOB_GROUP); |