diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasks/vo/AssignTasksSaveReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasks/vo/AssignTasksSaveReqVO.java index 9fb7007..e80ee92 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasks/vo/AssignTasksSaveReqVO.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasks/vo/AssignTasksSaveReqVO.java @@ -43,8 +43,11 @@ public class AssignTasksSaveReqVO { private Integer parentFinish; @Schema(description = "整体完成时间(仅当parent_finish=1时有值)") - @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private Date finishTime; + @JsonFormat( + pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, + timezone = "GMT+8", + shape = JsonFormat.Shape.STRING + ) private Date finishTime; @Schema(description = "任务备注(如:特殊要求、注意事项等)") private String note; diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java index d28d970..22059a3 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java @@ -72,6 +72,19 @@ public class AssignTasksServiceImpl implements AssignTasksService { @Transactional(rollbackFor = Exception.class) @Override public Long createAssignTasks(AssignTasksSaveReqVO createReqVO) { + // 核心校验逻辑 + Date deadline = createReqVO.getDeadline(); + // 1. 先校验deadline是否为空(避免空指针) + if (deadline == null) { + throw exception0(BAD_REQUEST.getCode(), "到期日不能为空"); + } + // 2. 获取当前时间(绑定业务时区,避免时区偏差) + Date now = new Date(); + // 3. 核心判断:到期日 小于 当前时间 → 抛出异常 + if (deadline.before(now)) { + throw exception0(BAD_REQUEST.getCode(), "到期日不能小于当前日期"); + } + // // 插入 AssignTasksDO assignTasks = BeanUtils.toBean(createReqVO, AssignTasksDO.class); assignTasksMapper.insert(assignTasks); diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java index 99d1009..b366ebc 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java @@ -85,8 +85,8 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { // 时间格式常量(与之前保持一致) public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss"; - // 提前提醒的天数(3天) - private static final long REMIND_ADVANCE_DAYS = 3L; + // 提前提醒(3小时) + private static final long REMIND_ADVANCE_HOURS = 3L; // 1. 定义线程安全的格式化器(全局复用,无需重复创建) private static final DateTimeFormatter DEADLINE_FORMATTER = DateTimeFormatter @@ -179,7 +179,6 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { // add by 20260307 初始化单位积分 unitIntegralService.createUnitIntegral(CommonConstants.UNIT_INTEGRAL_UNIT_TYPE_01, String.valueOf(companyId), assignTaskInfo.getCompanyName()); try { - //保存成功后创建定时器,3天执行 // 1. 获取截止时间并校验非空 LocalDateTime deadline = assignTasks.getDeadline(); if (deadline == null) { @@ -188,16 +187,16 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { return; } - // 2. 计算:当前时间 + 3天 是否超过截止时间(即截止时间不足3天) + // 2. 计算:当前时间 + 3小时 是否超过截止时间(即截止时间不足3小时) LocalDateTime now = LocalDateTime.now(DEFAULT_ZONE); // 当前东八区时间 - LocalDateTime remindThreshold = now.plusDays(REMIND_ADVANCE_DAYS); + LocalDateTime remindThreshold = now.plusHours(REMIND_ADVANCE_HOURS); - // 核心判断:截止时间 <= (当前时间+3天) → 不足3天,不创建定时任务 + // 核心判断:截止时间 <= (当前时间+3小时) → 不足3小时,不创建定时任务 if (deadline.isBefore(remindThreshold) || deadline.isEqual(remindThreshold)) { String formattedDeadline = deadline.format(DATE_FORMATTER); String formattedThreshold = remindThreshold.format(DATE_FORMATTER); - log.info("任务ID={} 无需创建定时任务:截止时间={},不足{}天(阈值时间={})", - assignTaskInfo.getId(), formattedDeadline, REMIND_ADVANCE_DAYS, formattedThreshold); + log.info("任务ID={} 无需创建定时任务:截止时间={},不足{}小时(阈值时间={})", + assignTaskInfo.getId(), formattedDeadline, REMIND_ADVANCE_HOURS, formattedThreshold); return; // 直接返回,不创建定时任务 } diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/QuartzRemindService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/QuartzRemindService.java index e44b45e..6a3f236 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/QuartzRemindService.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/QuartzRemindService.java @@ -10,7 +10,6 @@ import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Set; -import java.util.concurrent.TimeUnit; /** * 动态注册到期提醒Quartz任务的服务 @@ -36,8 +35,8 @@ public class QuartzRemindService { throw new IllegalArgumentException("任务信息不完整,无法注册提醒"); } - // 2. 计算触发时间:到期时间 - 3天 - Date triggerTime = new Date(expireTime.getTime() - TimeUnit.DAYS.toMillis(3)); + // 2. 计算触发时间:到期时间 - 3小时 + Date triggerTime = new Date(expireTime.getTime() - 3 * 60 * 60 * 1000L); // 3. 定义JobKey(唯一标识:任务ID + 组名) JobKey jobKey = new JobKey("REMIND_JOB_" + jobId, REMIND_JOB_GROUP);