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