| | |
| | | * @throws RuntimeException 当任务不存在、状态不允许转换或操作失败时抛出 |
| | | */ |
| | | @Override |
| | | // @Transactional(rollbackFor = Exception.class) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean auditPatrolTask(GdPatrolTaskAuditParam auditParam) { |
| | | // 1. 获取巡查任务 |
| | | GdPatrolTaskEntity task = getById(auditParam.getId()); |
| | |
| | | |
| | | // 检查是否所有子任务都审核成功(除了被撤回和验收拒绝的) |
| | | 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); |
| | | if (allSubTasksAudited) { |
| | | if (!allSubTasksAudited) { |
| | | // 执行工单状态更新逻辑 |
| | | return updateWorkOrderStatusAndFlow(task.getWorkOrderId(), |
| | | WorkOrderStatusEnum.EXECUTING_TO_BE_COMPLETED); |
| | |
| | | |
| | | // 检查是否所有子任务都验收通过(除了被撤回和验收拒绝的) |
| | | 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); |
| | | // 判断是否有小于验收通过的任务 |
| | | .anyMatch(status -> status.compareTo(PatrolTaskStatusEnum.ACCEPTANCE_PASSED.getValue()) < 0); |
| | | // 这里可以根据allSubTasksAudited的结果执行后续逻辑,比如更新工单状态等 |
| | | if (allSubTasksAudited) { |
| | | if (!allSubTasksAudited) { |
| | | // 1.验收通过,生成报告 |
| | | asyncExportPatrolReport(task.getId()); |
| | | // 2.执行工单状态更新逻辑 |