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,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);