Commit 1b1565f3674328ae9d004ad9082ce9f95ec0889e
1 parent
ce252f1e
到期任务增加日志
Showing
2 changed files
with
19 additions
and
13 deletions
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 |