| | |
| | | |
| | | /** |
| | | * 计算巡检任务状态 |
| | | * 优先级:已过期 > 巡检中 > 待巡检 |
| | | * 优先级:已完成巡检 > 巡检中(已过期) > 巡检中 > 已过期 > 待巡检 |
| | | * @param inspectionTask 巡检任务 |
| | | * @param timingTaskMap 定时任务Map |
| | | * @param now 当前时间 |
| | | * @return 状态:EXPIRED-已过期,IN_PROGRESS-巡检中,PENDING-待巡检 |
| | | * @return 状态:COMPLETED-已完成巡检,IN_PROGRESS_EXPIRED-巡检中(已过期),IN_PROGRESS-巡检中,EXPIRED-已过期,PENDING-待巡检 |
| | | */ |
| | | private String calculateStatus(InspectionTask inspectionTask, Map<Long, TimingTask> timingTaskMap, LocalDateTime now) { |
| | | // 1. 判断是否已过期 |
| | | if(inspectionTask.getTimingTaskId() == null){ |
| | | return "EXPIRED"; |
| | | } |
| | | boolean isExpired = false; |
| | | // 判断是否已过期 |
| | | if (inspectionTask.getTimingTaskId() != null) { |
| | | TimingTask timingTask = timingTaskMap.get(inspectionTask.getTimingTaskId()); |
| | | if (timingTask != null && timingTask.getNextExecutionTime() != null) { |
| | | if (now.isAfter(timingTask.getNextExecutionTime())) { |
| | | return "EXPIRED"; |
| | | } |
| | | isExpired = now.isAfter(timingTask.getNextExecutionTime()); |
| | | } |
| | | }else { |
| | | return "EXPIRED"; |
| | | } |
| | | |
| | | // 1. 判断是否已完成巡检(三个异常字段都不为null) |
| | | if (inspectionTask.getHasExceptionBefore() != null |
| | | && inspectionTask.getHasExceptionAfter() != null |
| | | && inspectionTask.getHasExceptionIssue() != null) { |
| | | return "COMPLETED"; |
| | | } |
| | | |
| | | // 2. 判断是否巡检中(任一异常字段不为null) |
| | | if (inspectionTask.getHasExceptionBefore() != null |
| | | || inspectionTask.getHasExceptionAfter() != null |
| | | || inspectionTask.getHasExceptionIssue() != null) { |
| | | return "IN_PROGRESS"; |
| | | return isExpired ? "IN_PROGRESS_EXPIRED" : "IN_PROGRESS"; |
| | | } |
| | | |
| | | // 3. 待巡检 |
| | | // 3. 已过期 |
| | | if (isExpired) { |
| | | return "EXPIRED"; |
| | | } |
| | | |
| | | // 4. 待巡检 |
| | | return "PENDING"; |
| | | } |
| | | |