Commit e386f50f2c2cd7212317bba9308d5b7788f11628
1 parent
1b1565f3
到期任务优化
Showing
3 changed files
with
38 additions
and
38 deletions
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<AssignTasksInfoDO> { |
| 46 | 46 | * 批量更新“是否超时”字段 |
| 47 | 47 | */ |
| 48 | 48 | public int batchUpdateIsOverdue(@Param("list") List<AssignTasksInfoDO> taskInfoList); |
| 49 | + | |
| 50 | + /*查询超时派单*/ | |
| 51 | + public List<AssignTasksInfoDO> selectOutTimeAssignTaskInfo(); | |
| 49 | 52 | } | ... | ... |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java
| ... | ... | @@ -238,48 +238,28 @@ public class AssignTasksServiceImpl implements AssignTasksService { |
| 238 | 238 | String batchId = String.valueOf(System.currentTimeMillis()); // 批次ID,便于日志追踪 |
| 239 | 239 | log.info("[派单超时处理-{}] 开始处理超时派单,当前时间:{}", batchId, now); |
| 240 | 240 | try { |
| 241 | - // 2. 查询所有“未完成的派单”(parentFinish=0) | |
| 242 | - List<AssignTasksDO> assignTasks = assignTasksMapper.selectList(AssignTasksDO::getParentFinish,0); | |
| 243 | - if (CollectionUtils.isEmpty(assignTasks)) { | |
| 244 | - log.info("[派单超时处理-{}] 无未完成的派单,无需处理", batchId); | |
| 241 | + List<AssignTasksInfoDO> timeoutTaskInfos = new ArrayList<>(); | |
| 242 | + List<AssignTasksInfoDO> taskInfoList = assiAssignTasksInfoMapper.selectOutTimeAssignTaskInfo(); | |
| 243 | + if (CollectionUtils.isEmpty(taskInfoList)) { | |
| 244 | + log.info("[派单超时处理-{}] 无超时派单,无需处理", batchId); | |
| 245 | 245 | return 0; |
| 246 | 246 | } |
| 247 | - log.info("[派单超时处理-{}] 查询到{}条未完成的派单", batchId, assignTasks.size()); | |
| 248 | - | |
| 249 | - List<AssignTasksInfoDO> timeoutTaskInfos = new ArrayList<>(); | |
| 250 | - | |
| 251 | - for (AssignTasksDO assignTasksDO : assignTasks) { | |
| 252 | - Long taskId = assignTasksDO.getId(); | |
| 253 | - //查询所有符合条件的派单详情(taskId in 列表 + finish=0) | |
| 254 | - LambdaQueryWrapper<AssignTasksInfoDO> queryWrapper = Wrappers.lambdaQuery(); | |
| 255 | - queryWrapper.eq(AssignTasksInfoDO::getFinish, 0); | |
| 256 | - queryWrapper.eq(AssignTasksInfoDO::getTaskId, assignTasksDO.getId()); | |
| 257 | - queryWrapper.eq(AssignTasksInfoDO::getIsOverdue, 0); | |
| 258 | - List<AssignTasksInfoDO> taskInfoList = assiAssignTasksInfoMapper.selectList(queryWrapper); | |
| 259 | - if (CollectionUtils.isEmpty(taskInfoList)) { | |
| 260 | - log.info("[派单超时处理-{}] 派单ID:{} 无未完成/未超时的详情,跳过", batchId, taskId); | |
| 261 | - continue; | |
| 262 | - } | |
| 263 | - | |
| 264 | - // 4. 筛选“已超时”的派单详情(截止时间 < 当前时间) | |
| 265 | - for (AssignTasksInfoDO taskInfo : taskInfoList) { | |
| 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) { | |
| 275 | - taskInfo.setIsOverdue(1); // 标记为超时 | |
| 276 | - timeoutTaskInfos.add(taskInfo); | |
| 277 | - log.debug("[派单超时处理-{}] 派单详情ID:{} 已超时(截止时间:{})", | |
| 278 | - batchId, taskInfo.getId(), deadline); | |
| 279 | - } | |
| 247 | + // 4. 筛选“已超时”的派单详情(截止时间 < 当前时间) | |
| 248 | + for (AssignTasksInfoDO taskInfo : taskInfoList) { | |
| 249 | + Long detailId = taskInfo.getId(); | |
| 250 | + LocalDateTime deadline = taskInfo.getDeadline(); | |
| 251 | + String deadlineStr = deadline.format(DateUtils.DATE_TIME_FORMATTER); | |
| 252 | + String nowStr = now.format(DateUtils.DATE_TIME_FORMATTER); | |
| 253 | + boolean isOverdue = deadline.isBefore(now); | |
| 254 | + log.info("[派单超时处理-{}] 派单详情ID:{} 时间对比 - 截止时间(deadline):{},当前时间(now):{},是否超时:{}", | |
| 255 | + batchId, detailId, deadlineStr, nowStr, isOverdue); | |
| 256 | + if (isOverdue) { | |
| 257 | + taskInfo.setIsOverdue(1); // 标记为超时 | |
| 258 | + timeoutTaskInfos.add(taskInfo); | |
| 259 | + log.debug("[派单超时处理-{}] 派单详情ID:{} 已超时(截止时间:{})", | |
| 260 | + batchId, taskInfo.getId(), deadline); | |
| 280 | 261 | } |
| 281 | 262 | } |
| 282 | - | |
| 283 | 263 | if (CollectionUtils.isEmpty(timeoutTaskInfos)) { |
| 284 | 264 | log.info("[派单超时处理-{}] 无超时的派单详情,无需更新", batchId); |
| 285 | 265 | return 0; | ... | ... |
urbanops-module-garden/src/main/resources/mapper/assigntasksinfo/AssignTasksInfoMapper.xml
| ... | ... | @@ -25,4 +25,21 @@ |
| 25 | 25 | and finish = 0 |
| 26 | 26 | </update> |
| 27 | 27 | |
| 28 | + <select id="selectOutTimeAssignTaskInfo" resultType="com.zteits.urbanops.module.garden.dal.dataobject.assigntasksinfo.AssignTasksInfoDO" > | |
| 29 | + SELECT | |
| 30 | + t.* | |
| 31 | + FROM | |
| 32 | + garden_assign_tasks_info t | |
| 33 | + LEFT JOIN | |
| 34 | + garden_assign_tasks a | |
| 35 | + ON t.task_id = a.id | |
| 36 | + AND a.parent_finish = 0 | |
| 37 | + AND a.deleted = 0 | |
| 38 | + WHERE | |
| 39 | + t.finish = 0 | |
| 40 | + AND t.deleted = 0 | |
| 41 | + AND t.is_overdue = 0; | |
| 42 | + </select> | |
| 43 | + | |
| 44 | + | |
| 28 | 45 | </mapper> | ... | ... |