吉安感知网项目-后端
linwei
2026-01-21 350c6c907be54665cef1e5ff006581ff2773a04e
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
@@ -232,6 +232,36 @@
                return gdWorkOrderFlowService.save(flowEntity);
            }
        }
        // 7. 验收通过
        if (auditStatus == 7) {
            // 查询同一个工单下的所有子任务
            List<GdPatrolTaskEntity> subTasks = list(Wrappers.<GdPatrolTaskEntity>lambdaQuery()
                    .eq(GdPatrolTaskEntity::getWorkOrderId, task.getWorkOrderId()));
            // 检查是否所有子任务都审核成功(除了被撤回和验收拒绝的)
            boolean allSubTasksAudited = checkAllSubTasksAcceptancePassed(subTasks);
            // 这里可以根据allSubTasksAudited的结果执行后续逻辑,比如更新工单状态等
            if (allSubTasksAudited) {
                // 执行工单状态更新逻辑
                // 注意:需要注入工单相关的Service才能执行更新
                GdWorkOrderEntity gdWorkOrderEntity = new GdWorkOrderEntity();
                gdWorkOrderEntity.setId(task.getWorkOrderId());
                gdWorkOrderEntity.setWorkOrderStatus(WorkOrderStatusEnum.ACCEPTED_TO_BE_SETTLED.getCode());
                Integer b1 = baseMapper.updateWorkOrderById(gdWorkOrderEntity);
                if (b1 > 0) {
                    // 6. 保存流转记录:使用枚举设置flowName
                    GdWorkOrderFlowEntity flowEntity = new GdWorkOrderFlowEntity();
                    flowEntity.setCreateUser(AuthUtil.getUserId());
                    flowEntity.setWorkOrderId(task.getWorkOrderId());
                    flowEntity.setFlowName(WorkOrderStatusEnum.ACCEPTED_TO_BE_SETTLED.getDesc());
                    flowEntity.setFlowDesc(AuthUtil.getUserName() + " " + org.springblade.core.tool.utils.DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss") + " 更新了任务信息,状态转换为:" + WorkOrderStatusEnum.ACCEPTED_TO_BE_SETTLED.getDesc());
                    flowEntity.setOperator(AuthUtil.getUserName());
                    flowEntity.setType(WorkOrderTypeEnum.PATROL_TASK.getValue());
                    flowEntity.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
                    return gdWorkOrderFlowService.save(flowEntity);
                }
            }
        }
        return b;
    }
@@ -268,6 +298,38 @@
        return statusEnum == PatrolTaskStatusEnum.AUDIT_PASSED;
    }
    /**
     * 判断单个任务是否验收通过
     *
     * @param statusEnum 任务状态枚举
     * @return 是否验收通过
     */
    private boolean isTaskAcceptancePassed(PatrolTaskStatusEnum statusEnum) {
        // 验收通过的任务状态包括:验收通过
        return statusEnum == PatrolTaskStatusEnum.ACCEPTANCE_PASSED;
    }
    /**
     * 检查是否所有子任务都验收通过(除了被撤回和验收拒绝的)
     *
     * @param subTasks 子任务列表
     * @return 是否所有子任务都验收通过
     */
    private boolean checkAllSubTasksAcceptancePassed(List<GdPatrolTaskEntity> subTasks) {
        for (GdPatrolTaskEntity subTask : subTasks) {
            String taskStatus = subTask.getTaskStatus();
            PatrolTaskStatusEnum statusEnum = PatrolTaskStatusEnum.getByValue(taskStatus);
            // 如果任务状态不是验收通过状态,且不是被撤回和验收拒绝的,则返回false
            if (!isTaskAcceptancePassed(statusEnum) &&
                    statusEnum != PatrolTaskStatusEnum.WITHDRAWN &&
                    statusEnum != PatrolTaskStatusEnum.REJECTED_ACCEPTANCE) {
                return false;
            }
        }
        return true;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean republishPatrolTask(GdPatrolTaskEntity taskEntity) {