Commit 1b1565f3674328ae9d004ad9082ce9f95ec0889e

Authored by wangqian
1 parent ce252f1e

到期任务增加日志

urbanops-framework/urbanops-common/src/main/java/com/zteits/urbanops/framework/common/util/date/DateUtils.java
@@ -32,6 +32,7 @@ public class DateUtils { @@ -32,6 +32,7 @@ public class DateUtils {
32 public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss"; 32 public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
33 33
34 public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); 34 public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
  35 + public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
35 36
36 37
37 /** 38 /**
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java
@@ -20,7 +20,6 @@ import com.zteits.urbanops.module.garden.service.assigntasksinfo.QuartzRemindSer @@ -20,7 +20,6 @@ import com.zteits.urbanops.module.garden.service.assigntasksinfo.QuartzRemindSer
20 import com.zteits.urbanops.module.garden.service.unitintegraltotal.UnitIntegralService; 20 import com.zteits.urbanops.module.garden.service.unitintegraltotal.UnitIntegralService;
21 import com.zteits.urbanops.module.system.api.permission.RoleApi; 21 import com.zteits.urbanops.module.system.api.permission.RoleApi;
22 import com.zteits.urbanops.module.system.api.user.AdminUserApi; 22 import com.zteits.urbanops.module.system.api.user.AdminUserApi;
23 -import com.zteits.urbanops.module.system.api.user.dto.AdminUserRespDTO;  
24 import jakarta.annotation.Resource; 23 import jakarta.annotation.Resource;
25 import lombok.extern.slf4j.Slf4j; 24 import lombok.extern.slf4j.Slf4j;
26 import org.quartz.SchedulerException; 25 import org.quartz.SchedulerException;
@@ -30,9 +29,7 @@ import org.springframework.util.CollectionUtils; @@ -30,9 +29,7 @@ import org.springframework.util.CollectionUtils;
30 import org.springframework.validation.annotation.Validated; 29 import org.springframework.validation.annotation.Validated;
31 30
32 import java.time.LocalDateTime; 31 import java.time.LocalDateTime;
33 -import java.time.ZoneId;  
34 import java.util.*; 32 import java.util.*;
35 -import java.util.function.Function;  
36 import java.util.stream.Collectors; 33 import java.util.stream.Collectors;
37 34
38 import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; 35 import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST;
@@ -238,20 +235,21 @@ public class AssignTasksServiceImpl implements AssignTasksService { @@ -238,20 +235,21 @@ public class AssignTasksServiceImpl implements AssignTasksService {
238 // 1. 初始化统计变量:记录更新成功的超时记录数 235 // 1. 初始化统计变量:记录更新成功的超时记录数
239 int updatedCount = 0; 236 int updatedCount = 0;
240 LocalDateTime now = LocalDateTime.now(); // 提前获取当前时间(同一批处理时间一致) 237 LocalDateTime now = LocalDateTime.now(); // 提前获取当前时间(同一批处理时间一致)
241 - log.info("开始处理超时派单,当前时间:{}", now);  
242 - 238 + String batchId = String.valueOf(System.currentTimeMillis()); // 批次ID,便于日志追踪
  239 + log.info("[派单超时处理-{}] 开始处理超时派单,当前时间:{}", batchId, now);
243 try { 240 try {
244 // 2. 查询所有“未完成的派单”(parentFinish=0) 241 // 2. 查询所有“未完成的派单”(parentFinish=0)
245 List<AssignTasksDO> assignTasks = assignTasksMapper.selectList(AssignTasksDO::getParentFinish,0); 242 List<AssignTasksDO> assignTasks = assignTasksMapper.selectList(AssignTasksDO::getParentFinish,0);
246 -  
247 if (CollectionUtils.isEmpty(assignTasks)) { 243 if (CollectionUtils.isEmpty(assignTasks)) {
248 - log.info("无未完成的派单,无需处理"); 244 + log.info("[派单超时处理-{}] 无未完成的派单,无需处理", batchId);
249 return 0; 245 return 0;
250 } 246 }
  247 + log.info("[派单超时处理-{}] 查询到{}条未完成的派单", batchId, assignTasks.size());
251 248
252 List<AssignTasksInfoDO> timeoutTaskInfos = new ArrayList<>(); 249 List<AssignTasksInfoDO> timeoutTaskInfos = new ArrayList<>();
253 250
254 for (AssignTasksDO assignTasksDO : assignTasks) { 251 for (AssignTasksDO assignTasksDO : assignTasks) {
  252 + Long taskId = assignTasksDO.getId();
255 //查询所有符合条件的派单详情(taskId in 列表 + finish=0) 253 //查询所有符合条件的派单详情(taskId in 列表 + finish=0)
256 LambdaQueryWrapper<AssignTasksInfoDO> queryWrapper = Wrappers.lambdaQuery(); 254 LambdaQueryWrapper<AssignTasksInfoDO> queryWrapper = Wrappers.lambdaQuery();
257 queryWrapper.eq(AssignTasksInfoDO::getFinish, 0); 255 queryWrapper.eq(AssignTasksInfoDO::getFinish, 0);
@@ -259,24 +257,31 @@ public class AssignTasksServiceImpl implements AssignTasksService { @@ -259,24 +257,31 @@ public class AssignTasksServiceImpl implements AssignTasksService {
259 queryWrapper.eq(AssignTasksInfoDO::getIsOverdue, 0); 257 queryWrapper.eq(AssignTasksInfoDO::getIsOverdue, 0);
260 List<AssignTasksInfoDO> taskInfoList = assiAssignTasksInfoMapper.selectList(queryWrapper); 258 List<AssignTasksInfoDO> taskInfoList = assiAssignTasksInfoMapper.selectList(queryWrapper);
261 if (CollectionUtils.isEmpty(taskInfoList)) { 259 if (CollectionUtils.isEmpty(taskInfoList)) {
262 - log.info("未找到未完成的派单详情,无需处理"); 260 + log.info("[派单超时处理-{}] 派单ID:{} 无未完成/未超时的详情,跳过", batchId, taskId);
263 continue; 261 continue;
264 } 262 }
265 263
266 // 4. 筛选“已超时”的派单详情(截止时间 < 当前时间) 264 // 4. 筛选“已超时”的派单详情(截止时间 < 当前时间)
267 for (AssignTasksInfoDO taskInfo : taskInfoList) { 265 for (AssignTasksInfoDO taskInfo : taskInfoList) {
268 - // 4.1 转换:将数据库的Date  
269 - LocalDateTime deadline = assignTasks.get(0).getDeadline();  
270 - // 4.2 比较:截止时间早于当前时间 → 超时  
271 - if (deadline.isBefore(now)) { 266 + // 4.1
  267 + Long detailId = taskInfo.getId();
  268 + LocalDateTime deadline = taskInfo.getDeadline();
  269 + String deadlineStr = deadline.format(DateUtils.DATE_TIME_FORMATTER);
  270 + String nowStr = now.format(DateUtils.DATE_TIME_FORMATTER);
  271 + boolean isOverdue = deadline.isBefore(now);
  272 + log.info("[派单超时处理-{}] 派单详情ID:{} 时间对比 - 截止时间(deadline):{},当前时间(now):{},是否超时:{}",
  273 + batchId, detailId, deadlineStr, nowStr, isOverdue);
  274 + if (isOverdue) {
272 taskInfo.setIsOverdue(1); // 标记为超时 275 taskInfo.setIsOverdue(1); // 标记为超时
273 timeoutTaskInfos.add(taskInfo); 276 timeoutTaskInfos.add(taskInfo);
  277 + log.debug("[派单超时处理-{}] 派单详情ID:{} 已超时(截止时间:{})",
  278 + batchId, taskInfo.getId(), deadline);
274 } 279 }
275 } 280 }
276 } 281 }
277 282
278 if (CollectionUtils.isEmpty(timeoutTaskInfos)) { 283 if (CollectionUtils.isEmpty(timeoutTaskInfos)) {
279 - log.info("无超时的派单详情,无需更新"); 284 + log.info("[派单超时处理-{}] 无超时的派单详情,无需更新", batchId);
280 return 0; 285 return 0;
281 } 286 }
282 287