From e386f50f2c2cd7212317bba9308d5b7788f11628 Mon Sep 17 00:00:00 2001 From: wangqian <1406304305@qq.com> Date: Fri, 13 Mar 2026 16:36:42 +0800 Subject: [PATCH] 到期任务优化 --- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/assigntasksinfo/AssignTasksInfoMapper.java | 3 +++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java | 56 ++++++++++++++++++-------------------------------------- urbanops-module-garden/src/main/resources/mapper/assigntasksinfo/AssignTasksInfoMapper.xml | 17 +++++++++++++++++ 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/assigntasksinfo/AssignTasksInfoMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/assigntasksinfo/AssignTasksInfoMapper.java index 7ed9554..e761082 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/assigntasksinfo/AssignTasksInfoMapper.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/assigntasksinfo/AssignTasksInfoMapper.java @@ -46,4 +46,7 @@ public interface AssignTasksInfoMapper extends BaseMapperX { * 批量更新“是否超时”字段 */ public int batchUpdateIsOverdue(@Param("list") List taskInfoList); + + /*查询超时派单*/ + public List selectOutTimeAssignTaskInfo(); } 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 cf15402..5e40b16 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 @@ -238,48 +238,28 @@ public class AssignTasksServiceImpl implements AssignTasksService { String batchId = String.valueOf(System.currentTimeMillis()); // 批次ID,便于日志追踪 log.info("[派单超时处理-{}] 开始处理超时派单,当前时间:{}", batchId, now); try { - // 2. 查询所有“未完成的派单”(parentFinish=0) - List assignTasks = assignTasksMapper.selectList(AssignTasksDO::getParentFinish,0); - if (CollectionUtils.isEmpty(assignTasks)) { - log.info("[派单超时处理-{}] 无未完成的派单,无需处理", batchId); + List timeoutTaskInfos = new ArrayList<>(); + List taskInfoList = assiAssignTasksInfoMapper.selectOutTimeAssignTaskInfo(); + if (CollectionUtils.isEmpty(taskInfoList)) { + log.info("[派单超时处理-{}] 无超时派单,无需处理", batchId); return 0; } - log.info("[派单超时处理-{}] 查询到{}条未完成的派单", batchId, assignTasks.size()); - - List timeoutTaskInfos = new ArrayList<>(); - - for (AssignTasksDO assignTasksDO : assignTasks) { - Long taskId = assignTasksDO.getId(); - //查询所有符合条件的派单详情(taskId in 列表 + finish=0) - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(AssignTasksInfoDO::getFinish, 0); - queryWrapper.eq(AssignTasksInfoDO::getTaskId, assignTasksDO.getId()); - queryWrapper.eq(AssignTasksInfoDO::getIsOverdue, 0); - List taskInfoList = assiAssignTasksInfoMapper.selectList(queryWrapper); - if (CollectionUtils.isEmpty(taskInfoList)) { - log.info("[派单超时处理-{}] 派单ID:{} 无未完成/未超时的详情,跳过", batchId, taskId); - continue; - } - - // 4. 筛选“已超时”的派单详情(截止时间 < 当前时间) - for (AssignTasksInfoDO taskInfo : taskInfoList) { - // 4.1 - Long detailId = taskInfo.getId(); - LocalDateTime deadline = taskInfo.getDeadline(); - String deadlineStr = deadline.format(DateUtils.DATE_TIME_FORMATTER); - String nowStr = now.format(DateUtils.DATE_TIME_FORMATTER); - boolean isOverdue = deadline.isBefore(now); - log.info("[派单超时处理-{}] 派单详情ID:{} 时间对比 - 截止时间(deadline):{},当前时间(now):{},是否超时:{}", - batchId, detailId, deadlineStr, nowStr, isOverdue); - if (isOverdue) { - taskInfo.setIsOverdue(1); // 标记为超时 - timeoutTaskInfos.add(taskInfo); - log.debug("[派单超时处理-{}] 派单详情ID:{} 已超时(截止时间:{})", - batchId, taskInfo.getId(), deadline); - } + // 4. 筛选“已超时”的派单详情(截止时间 < 当前时间) + for (AssignTasksInfoDO taskInfo : taskInfoList) { + Long detailId = taskInfo.getId(); + LocalDateTime deadline = taskInfo.getDeadline(); + String deadlineStr = deadline.format(DateUtils.DATE_TIME_FORMATTER); + String nowStr = now.format(DateUtils.DATE_TIME_FORMATTER); + boolean isOverdue = deadline.isBefore(now); + log.info("[派单超时处理-{}] 派单详情ID:{} 时间对比 - 截止时间(deadline):{},当前时间(now):{},是否超时:{}", + batchId, detailId, deadlineStr, nowStr, isOverdue); + if (isOverdue) { + taskInfo.setIsOverdue(1); // 标记为超时 + timeoutTaskInfos.add(taskInfo); + log.debug("[派单超时处理-{}] 派单详情ID:{} 已超时(截止时间:{})", + batchId, taskInfo.getId(), deadline); } } - if (CollectionUtils.isEmpty(timeoutTaskInfos)) { log.info("[派单超时处理-{}] 无超时的派单详情,无需更新", batchId); return 0; diff --git a/urbanops-module-garden/src/main/resources/mapper/assigntasksinfo/AssignTasksInfoMapper.xml b/urbanops-module-garden/src/main/resources/mapper/assigntasksinfo/AssignTasksInfoMapper.xml index c178e12..ead055a 100644 --- a/urbanops-module-garden/src/main/resources/mapper/assigntasksinfo/AssignTasksInfoMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/assigntasksinfo/AssignTasksInfoMapper.xml @@ -25,4 +25,21 @@ and finish = 0 + + + -- libgit2 0.21.4