| | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 巡查任务表 服务实现类 |
| | |
| | | .eq(GdPatrolTaskEntity::getWorkOrderId, task.getWorkOrderId())); |
| | | |
| | | // 检查是否所有子任务都审核成功(除了被撤回和验收拒绝的) |
| | | boolean allSubTasksAudited = subTasks.stream() |
| | | // 过滤掉当前任务本身 |
| | | .filter(subTask -> !subTask.getId().equals(task.getId())) |
| | | .map(GdPatrolTaskEntity::getTaskStatus) |
| | | .filter(Objects::nonNull) |
| | | // 过滤掉撤回或验收拒绝的任务 |
| | | .filter(status -> !status.equals(PatrolTaskStatusEnum.WITHDRAWN.getValue()) && |
| | | !status.equals(PatrolTaskStatusEnum.REJECTED_ACCEPTANCE.getValue())) |
| | | // 判断是否有小于待审核的任务 |
| | | .anyMatch(status -> status.compareTo(PatrolTaskStatusEnum.PENDING_AUDIT.getValue()) < 0); |
| | | boolean allSubTasksAudited = isAllSubTasksAudited(subTasks, task, PatrolTaskStatusEnum.PENDING_AUDIT); |
| | | if (!allSubTasksAudited) { |
| | | // 执行工单状态更新逻辑 |
| | | return updateWorkOrderStatusAndFlow(task.getWorkOrderId(), |
| | |
| | | .eq(GdPatrolTaskEntity::getWorkOrderId, task.getWorkOrderId())); |
| | | |
| | | // 检查是否所有子任务都验收通过(除了被撤回和验收拒绝的) |
| | | boolean allSubTasksAudited = subTasks.stream() |
| | | // 过滤掉当前任务本身 |
| | | .filter(subTask -> !subTask.getId().equals(task.getId())) |
| | | .map(GdPatrolTaskEntity::getTaskStatus) |
| | | .filter(Objects::nonNull) |
| | | // 过滤掉撤回或验收拒绝的任务 |
| | | .filter(status -> !status.equals(PatrolTaskStatusEnum.WITHDRAWN.getValue()) && |
| | | !status.equals(PatrolTaskStatusEnum.REJECTED_ACCEPTANCE.getValue())) |
| | | // 判断是否有小于验收通过的任务 |
| | | .anyMatch(status -> status.compareTo(PatrolTaskStatusEnum.ACCEPTANCE_PASSED.getValue()) < 0); |
| | | boolean allSubTasksAudited = isAllSubTasksAudited(subTasks, task, PatrolTaskStatusEnum.ACCEPTANCE_PASSED); |
| | | // 这里可以根据allSubTasksAudited的结果执行后续逻辑,比如更新工单状态等 |
| | | if (!allSubTasksAudited) { |
| | | // 1.验收通过,生成报告 |
| | |
| | | return b; |
| | | } |
| | | |
| | | /** |
| | | * @param subTasks |
| | | * @param task |
| | | * @param pendingAudit |
| | | * @return |
| | | */ |
| | | private static boolean isAllSubTasksAudited(List<GdPatrolTaskEntity> subTasks, GdPatrolTaskEntity task, PatrolTaskStatusEnum pendingAudit) { |
| | | List<String> validStatusList = subTasks.stream() |
| | | // 过滤掉当前任务本身 |
| | | .filter(subTask -> !subTask.getId().equals(task.getId())) |
| | | .map(GdPatrolTaskEntity::getTaskStatus) |
| | | .filter(Objects::nonNull) |
| | | // 过滤掉撤回或验收拒绝的任务 |
| | | .filter(status -> !status.equals(PatrolTaskStatusEnum.WITHDRAWN.getValue()) && |
| | | !status.equals(PatrolTaskStatusEnum.REJECTED_ACCEPTANCE.getValue())) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 如果过滤后没有有效任务,直接返回false |
| | | if (validStatusList.isEmpty()) { |
| | | return false; |
| | | } |
| | | |
| | | // 判断是否有小于待审核的任务 |
| | | boolean allSubTasksAudited = validStatusList.stream() |
| | | .anyMatch(status -> status.compareTo(pendingAudit.getValue()) < 0); |
| | | return allSubTasksAudited; |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 更新工单状态并保存流转记录 |