吉安感知网项目-后端
linwei
2026-05-22 1d2b7c3172a9a61634de47febd845d67fcf2f417
fix(workflow): 修复工单流程阶段组装逻辑

- 移除冗余的遍历工单阶段注释
- 添加已取消状态判断逻辑,当工单已取消时不组装后续阶段
- 新增isCancellationState方法用于检查流程记录中的取消状态
- 在取消状态下直接返回结束阶段,避免显示无效的后续执行阶段
1 files modified
25 ■■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderFlowServiceImpl.java 25 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderFlowServiceImpl.java
@@ -84,7 +84,6 @@
            currentStageCode = lastFlow.getFlowStatus();
        }
        // 3. 遍历所有工单阶段
        // 工单发布阶段
        stages.add(buildStage(WorkOrderStatusEnum.STAGE_WORK_ORDER_RELEASE.getStageDesc(), Arrays.asList(
                WorkOrderStatusEnum.PUBLISHING_ACCEPTING.getStageDesc(),
@@ -99,6 +98,11 @@
                WorkOrderStatusEnum.RESPONDING_CANCELED.getStageDesc()
        ), actualFlows, WorkOrderStatusEnum.STAGE_ORDER_RESPONSE.getMaxCode(), currentStageCode));
        // 如果当前状态是已取消,则不组装后续阶段
        if (isCancellationState(actualFlows)) {
            stages.add(new WorkOrderStageVO("结束", new ArrayList<>(), true));
            return stages;
        }
        // 执行中阶段
        stages.add(buildStage(WorkOrderStatusEnum.STAGE_IN_EXECUTION.getStageDesc(), Arrays.asList(
                WorkOrderStatusEnum.EXECUTING_TO_BE_COMPLETED.getStageDesc(),
@@ -205,6 +209,25 @@
    }
    /**
     * 判断流程记录中是否存在已取消状态
     *
     * @param actualFlows 实际流程记录列表
     * @return 如果存在已取消状态返回true,否则返回false
     */
    private boolean isCancellationState(List<GdWorkOrderFlowEntity> actualFlows) {
        if (actualFlows == null || actualFlows.isEmpty()) {
            return false;
        }
        // 遍历所有流程记录,检查是否存在已取消状态(23)
        for (GdWorkOrderFlowEntity flow : actualFlows) {
            if (WorkOrderStatusEnum.RESPONDING_CANCELED.getCode().equals(flow.getWorkStatus())) {
                return true;
            }
        }
        return false;
    }
    /**
     * 查找所有匹配的流程记录
     *
     * @param actualFlows 实际流程记录