diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryProjectServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryProjectServiceImpl.java index 0c20e6bd..bd7cd38b 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryProjectServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryProjectServiceImpl.java @@ -330,25 +330,36 @@ public class RepositoryProjectServiceImpl extends BaseServiceImpl repoGroupIds = projects.stream() .map(RepositoryProjectDTO::getRepoGroupId) .filter(id -> id != null) .collect(Collectors.toSet()); + + Set externalSystemIds = projects.stream() + .map(RepositoryProjectDTO::getExternalSystemId) + .filter(id -> id != null) + .collect(Collectors.toSet()); - // 2. 批量查询仓库组信息(根据 repo_group_id 字段查询,不是主键 id) - Map repoGroupMap = Collections.emptyMap(); + // 2. 批量查询仓库组信息(需要同时匹配 repo_group_id 和 external_system_id) + Map repoGroupMap = Collections.emptyMap(); if (!repoGroupIds.isEmpty()) { List repoGroupIdList = new ArrayList<>(repoGroupIds); + // 使用复合键:externalSystemId + "_" + repoGroupId 避免不同系统的 ID 冲突 repoGroupMap = repositoryGroupRepository.findByRepoGroupIdIn(repoGroupIdList).stream() - .collect(Collectors.toMap(RepositoryGroup::getRepoGroupId, Function.identity())); + .filter(group -> externalSystemIds.contains(group.getExternalSystemId())) + .collect(Collectors.toMap( + group -> group.getExternalSystemId() + "_" + group.getRepoGroupId(), + Function.identity() + )); } - // 3. 填充仓库组名称(使用 repo_group_id 作为 key) - Map finalRepoGroupMap = repoGroupMap; + // 3. 填充仓库组名称(使用复合键:externalSystemId + "_" + repoGroupId) + Map finalRepoGroupMap = repoGroupMap; projects.forEach(project -> { - if (project.getRepoGroupId() != null) { - RepositoryGroup group = finalRepoGroupMap.get(project.getRepoGroupId()); + if (project.getRepoGroupId() != null && project.getExternalSystemId() != null) { + String key = project.getExternalSystemId() + "_" + project.getRepoGroupId(); + RepositoryGroup group = finalRepoGroupMap.get(key); if (group != null) { project.setRepoGroupName(group.getName()); }