lyh
2025-04-08 7513d898c2f588151a29b2436546f31b0dd13afd
lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java
@@ -916,6 +916,63 @@
        return Result.OK();
    }
    /**
     * 判断多个任务是否处于同一流程节点
     * @param taskIds 逗号分隔的任务ID字符串
     * @return 统一结果封装
     */
    @Override
    public Result isSameNode(String taskIds) {
        // 1. 参数校验
        if (StringUtils.isBlank(taskIds)) {
            return Result.error("任务ID不能为空");
        }
        // 2. 分割任务ID
        String[] taskIdArray = taskIds.split(",");
        if (taskIdArray.length == 0) {
            return Result.error("未提供有效的任务ID");
        }
        // 3. 单任务直接返回true
        if (taskIdArray.length == 1) {
            return Result.ok(true);
        }
        // 4. 多任务检查逻辑
        String referenceNodeId = null;
        String currentNodeId = null;
        for (String taskId : taskIdArray) {
            // 4.1 查询任务实例
            Task task = taskService.createTaskQuery()
                    .taskId(taskId.trim())
                    .singleResult();
            // 4.2 任务不存在处理
            if (task == null) {
                return Result.error("任务不存在: " + taskId);
            }
            // 4.3 获取节点标识(TaskDefinitionKey)
            currentNodeId = task.getTaskDefinitionKey();
            // 4.4 首次遍历初始化参考节点
            if (referenceNodeId == null) {
                referenceNodeId = currentNodeId;
                continue;
            }
            // 4.5 节点不一致直接返回
            if (!referenceNodeId.equals(currentNodeId)) {
                return Result.ok("节点不一致");
            }
        }
        // 5. 所有任务节点一致
        return Result.ok(currentNodeId);
    }
    /**
     * 代办任务列表
     *
@@ -984,26 +1041,17 @@
        flowMyBusinessDto.setCurrentUser(username);
        IPage<FlowTaskDto> flowTaskDtoIPage = flowMyBusinessService.getPageListMyBusiness(page,flowMyBusinessDto);
        flowTaskDtoIPage.getRecords().forEach(flowTaskDto -> {
            // 流程定义信息
            ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
                    .processDefinitionId(flowTaskDto.getProcessDefinitionId())
                    .singleResult();
            flowTaskDto.setDeployId(pd.getDeploymentId());
            flowTaskDto.setProcDefName(pd.getName());
            flowTaskDto.setProcDefVersion(pd.getVersion());
            flowTaskDto.setCategory(pd.getCategory());
            // 流程发起人信息
            HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
                    .processInstanceId(flowTaskDto.getTaskId())
                    .processInstanceId(flowTaskDto.getProcInsId())
                    .singleResult();
            SysUser startUser = iFlowThirdService.getUserByUsername(historicProcessInstance.getStartUserId());
            flowTaskDto.setStartUserId(startUser.getUsername());
            flowTaskDto.setStartUserName(startUser.getRealname());
            List<String> departNamesByUsername = iFlowThirdService.getDepartNamesByUsername(historicProcessInstance.getStartUserId());
            flowTaskDto.setStartDeptName(CollUtil.join(departNamesByUsername,","));
            flowTaskDto.setTaskId(flowTaskDto.getHisProcInsId());
        });
        return Result.OK(page);
        return Result.OK(flowTaskDtoIPage);
    }
    private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {