From bd984da2376cb83a228eca7a5f9cb036513d047b Mon Sep 17 00:00:00 2001 From: dengqichen Date: Wed, 29 Oct 2025 16:57:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E7=8B=AC=E5=90=8C=E6=AD=A5GIT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deploy/dto/RepositoryGroupDTO.java | 5 +++ .../deploy/dto/RepositoryProjectDTO.java | 5 +++ .../IRepositoryBranchRepository.java | 9 +++++ .../IRepositoryProjectRepository.java | 9 +++++ .../impl/RepositoryGroupServiceImpl.java | 35 +++++++++++++++++++ .../impl/RepositoryProjectServiceImpl.java | 35 +++++++++++++++++++ 6 files changed, 98 insertions(+) diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryGroupDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryGroupDTO.java index 0a91cff3..081e1cbe 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryGroupDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryGroupDTO.java @@ -73,4 +73,9 @@ public class RepositoryGroupDTO extends BaseDTO { */ private Long externalSystemId; + /** + * 该仓库组下的项目数量(反显字段) + */ + private Long projectCount; + } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryProjectDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryProjectDTO.java index 7a8a3c44..fc10af56 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryProjectDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryProjectDTO.java @@ -36,4 +36,9 @@ public class RepositoryProjectDTO extends BaseDTO { private Long repoGroupId; private Long repoProjectId; + + /** + * 该项目下的分支数量(反显字段) + */ + private Long branchCount; } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryBranchRepository.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryBranchRepository.java index 5ec29efd..4a8d8bf9 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryBranchRepository.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryBranchRepository.java @@ -34,6 +34,15 @@ public interface IRepositoryBranchRepository extends IBaseRepository findByExternalSystemIdAndProjectIdAndDeletedFalse(Long externalSystemId, Long id); List findByExternalSystemIdAndDeletedFalse(Long externalSystemId); diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryProjectRepository.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryProjectRepository.java index 541b244f..e36bcda8 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryProjectRepository.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryProjectRepository.java @@ -27,6 +27,15 @@ public interface IRepositoryProjectRepository extends IBaseRepository findByExternalSystemId(Long externalSystemId); void deleteByExternalSystemId(Long externalSystemId); diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryGroupServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryGroupServiceImpl.java index 43f1d6c8..5fe96733 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryGroupServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryGroupServiceImpl.java @@ -12,6 +12,7 @@ import com.qqchen.deploy.backend.deploy.integration.response.GitGroupResponse; import com.qqchen.deploy.backend.deploy.query.RepositoryGroupQuery; import com.qqchen.deploy.backend.deploy.repository.IExternalSystemRepository; import com.qqchen.deploy.backend.deploy.repository.IRepositoryGroupRepository; +import com.qqchen.deploy.backend.deploy.repository.IRepositoryProjectRepository; import com.qqchen.deploy.backend.deploy.service.IRepositoryGroupService; import com.qqchen.deploy.backend.deploy.service.IRepositorySyncHistoryService; import com.qqchen.deploy.backend.framework.enums.ResponseCode; @@ -19,6 +20,9 @@ import com.qqchen.deploy.backend.framework.exception.BusinessException; import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -43,6 +47,9 @@ public class RepositoryGroupServiceImpl extends BaseServiceImpl findByExternalSystemId(Long externalSystemId) { return repositoryGroupConverter.toDtoList(repositoryGroupRepository.findByExternalSystemId(externalSystemId)); } + + @Override + public Page page(RepositoryGroupQuery query) { + Page page = super.page(query); + List result = page.getContent().stream().peek(group -> { + // 统计该仓库组下的项目数量 + Long projectCount = repositoryProjectRepository.countByExternalSystemIdAndRepoGroupIdAndDeletedFalse( + group.getExternalSystemId(), + group.getRepoGroupId() + ); + group.setProjectCount(projectCount); + }).collect(Collectors.toList()); + return new PageImpl<>(result, page.getPageable(), page.getTotalElements()); + } + + @Override + public List findAll(RepositoryGroupQuery query) { + List list = super.findAll(query); + list.forEach(group -> { + // 统计该仓库组下的项目数量 + Long projectCount = repositoryProjectRepository.countByExternalSystemIdAndRepoGroupIdAndDeletedFalse( + group.getExternalSystemId(), + group.getRepoGroupId() + ); + group.setProjectCount(projectCount); + }); + return list; + } } \ No newline at end of file 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 4696853f..21d6947a 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 @@ -14,6 +14,7 @@ import com.qqchen.deploy.backend.deploy.query.RepositoryProjectQuery; import com.qqchen.deploy.backend.deploy.repository.IExternalSystemRepository; import com.qqchen.deploy.backend.deploy.repository.IRepositoryGroupRepository; import com.qqchen.deploy.backend.deploy.repository.IRepositoryProjectRepository; +import com.qqchen.deploy.backend.deploy.repository.IRepositoryBranchRepository; import com.qqchen.deploy.backend.deploy.service.IRepositoryProjectService; import com.qqchen.deploy.backend.deploy.service.IRepositorySyncHistoryService; import com.qqchen.deploy.backend.framework.enums.ResponseCode; @@ -21,6 +22,9 @@ import com.qqchen.deploy.backend.framework.exception.BusinessException; import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; import org.springframework.orm.ObjectOptimisticLockingFailureException; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; @@ -55,6 +59,9 @@ public class RepositoryProjectServiceImpl extends BaseServiceImpl findByExternalSystemId(Long externalSystemId) { return repositoryProjectConverter.toDtoList(repositoryProjectRepository.findByExternalSystemId(externalSystemId)); } + + @Override + public Page page(RepositoryProjectQuery query) { + Page page = super.page(query); + List result = page.getContent().stream().peek(project -> { + // 统计该项目下的分支数量 + Long branchCount = repositoryBranchRepository.countByExternalSystemIdAndRepoProjectIdAndDeletedFalse( + project.getExternalSystemId(), + project.getRepoProjectId() + ); + project.setBranchCount(branchCount); + }).collect(Collectors.toList()); + return new PageImpl<>(result, page.getPageable(), page.getTotalElements()); + } + + @Override + public List findAll(RepositoryProjectQuery query) { + List list = super.findAll(query); + list.forEach(project -> { + // 统计该项目下的分支数量 + Long branchCount = repositoryBranchRepository.countByExternalSystemIdAndRepoProjectIdAndDeletedFalse( + project.getExternalSystemId(), + project.getRepoProjectId() + ); + project.setBranchCount(branchCount); + }); + return list; + } } \ No newline at end of file