| | |
| | | currentStageCode = lastFlow.getFlowStatus(); |
| | | } |
| | | |
| | | // 3. 遍历所有工单阶段 |
| | | // 工单发布阶段 |
| | | stages.add(buildStage(WorkOrderStatusEnum.STAGE_WORK_ORDER_RELEASE.getStageDesc(), Arrays.asList( |
| | | WorkOrderStatusEnum.PUBLISHING_ACCEPTING.getStageDesc(), |
| | |
| | | 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(), |
| | |
| | | private WorkOrderStageVO buildStage(String stageName, List<String> statusNames, List<GdWorkOrderFlowEntity> actualFlows, String flowStatus, String currentStageCode) { |
| | | List<WorkOrderStatusDetailVO> statuses = new ArrayList<>(); |
| | | |
| | | // 检查该阶段是否在当前阶段之后 |
| | | // 注意:即使流程回退,之前到达过的阶段仍然需要显示其记录 |
| | | // 而是让所有阶段都能显示其已到达的状态,只对未到达的状态进行处理 |
| | | // boolean isStageAfterCurrent = false; |
| | | // try { |
| | | // int stageCode = Integer.parseInt(flowStatus); |
| | | // int currentCode = Integer.parseInt(currentStageCode); |
| | | // isStageAfterCurrent = stageCode > currentCode; |
| | | // } catch (NumberFormatException e) { |
| | | // // 如果转换失败,默认不视为在当前阶段之后 |
| | | // } |
| | | |
| | | // 临时列表,用于收集所有状态详情 |
| | | List<WorkOrderStatusDetailVO> tempStatuses = new ArrayList<>(); |
| | | |
| | |
| | | } |
| | | }); |
| | | |
| | | // 为每个排序后的流程记录创建状态详情 |
| | | // 无论阶段是否在当前阶段之后,只要有匹配的流程记录,就标记为已到达 |
| | | for (GdWorkOrderFlowEntity matchingFlow : matchingFlows) { |
| | | tempStatuses.add(new WorkOrderStatusDetailVO( |
| | |
| | | } |
| | | |
| | | /** |
| | | * 判断流程记录中是否存在已取消状态 |
| | | * |
| | | * @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 实际流程记录 |