From 7bfc716eb55fbd23c8387ef5d2b281e2b8bfe1ed Mon Sep 17 00:00:00 2001 From: asp_ly Date: Sun, 29 Dec 2024 19:31:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=9F=E6=88=90=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E6=9C=8D=E5=8A=A1=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/JenkinsManagerApiController.java | 7 +++++ .../JenkinsManagerApiController.java | 1 + .../deploy/dto/JenkinsInstanceDTO.java | 29 +++++++++++++++++++ .../deploy/service/IJenkinsBuildService.java | 8 +++++ .../deploy/service/IJenkinsJobService.java | 9 ++++++ .../service/IJenkinsManagerService.java | 4 +++ .../deploy/service/IJenkinsViewService.java | 9 ++++++ .../service/impl/JenkinsBuildServiceImpl.java | 7 +++++ .../service/impl/JenkinsJobServiceImpl.java | 10 +++++++ .../impl/JenkinsManagerServiceImpl.java | 28 ++++++++++++++++++ .../service/impl/JenkinsViewServiceImpl.java | 11 +++++++ 11 files changed, 123 insertions(+) create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/controller/JenkinsManagerApiController.java create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/JenkinsInstanceDTO.java diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/JenkinsManagerApiController.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/JenkinsManagerApiController.java index fdf19cb2..dbdda5ae 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/JenkinsManagerApiController.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/JenkinsManagerApiController.java @@ -1,5 +1,6 @@ package com.qqchen.deploy.backend.deploy.api; +import com.qqchen.deploy.backend.deploy.dto.JenkinsInstanceDTO; import com.qqchen.deploy.backend.deploy.service.IJenkinsManagerService; import com.qqchen.deploy.backend.framework.api.Response; import io.swagger.v3.oas.annotations.Operation; @@ -56,4 +57,10 @@ public class JenkinsManagerApiController { jenkinsManagerService.syncBuilds(externalSystemId); return Response.success(); } + + @Operation(summary = "获取Jenkins实例信息") + @GetMapping("/{externalSystemId}/instance") + public Response instance(@Parameter(description = "外部系统ID", required = true) @PathVariable Long externalSystemId) { + return Response.success(jenkinsManagerService.instance(externalSystemId)); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/controller/JenkinsManagerApiController.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/controller/JenkinsManagerApiController.java new file mode 100644 index 00000000..0519ecba --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/controller/JenkinsManagerApiController.java @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/JenkinsInstanceDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/JenkinsInstanceDTO.java new file mode 100644 index 00000000..a82d207b --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/JenkinsInstanceDTO.java @@ -0,0 +1,29 @@ +package com.qqchen.deploy.backend.deploy.dto; + +import com.qqchen.deploy.backend.deploy.entity.JenkinsJob; +import com.qqchen.deploy.backend.deploy.entity.JenkinsView; +import com.qqchen.deploy.backend.framework.dto.BaseDTO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * Jenkins工作 DTO + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class JenkinsInstanceDTO extends BaseDTO { + + private int totalViews; + + private int totalJobs; + + private int totalBuilds; + + private List jenkinsViewList; + + private List jenkinsJobList; + +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsBuildService.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsBuildService.java index e921bf41..1ff00c89 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsBuildService.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsBuildService.java @@ -38,4 +38,12 @@ public interface IJenkinsBuildService extends IBaseService findByExternalSystemId(Long externalSystemId); } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsManagerService.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsManagerService.java index 48e2e0ec..901dad9c 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsManagerService.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsManagerService.java @@ -1,5 +1,7 @@ package com.qqchen.deploy.backend.deploy.service; +import com.qqchen.deploy.backend.deploy.dto.JenkinsInstanceDTO; + /** * Jenkins管理服务接口 */ @@ -32,4 +34,6 @@ public interface IJenkinsManagerService { * @param externalSystemId 外部系统ID */ void syncBuilds(Long externalSystemId); + + JenkinsInstanceDTO instance(Long externalSystemId); } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsViewService.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsViewService.java index 61848d85..238f9891 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsViewService.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsViewService.java @@ -4,6 +4,7 @@ import com.qqchen.deploy.backend.deploy.entity.JenkinsView; import com.qqchen.deploy.backend.deploy.dto.JenkinsViewDTO; import com.qqchen.deploy.backend.deploy.query.JenkinsViewQuery; import com.qqchen.deploy.backend.framework.service.IBaseService; +import java.util.List; /** * Jenkins视图 Service接口 @@ -17,4 +18,12 @@ public interface IJenkinsViewService extends IBaseService findByExternalSystemId(Long externalSystemId); } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsBuildServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsBuildServiceImpl.java index 8dc77194..e44ed77a 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsBuildServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsBuildServiceImpl.java @@ -7,6 +7,7 @@ import com.qqchen.deploy.backend.deploy.entity.JenkinsBuild; import com.qqchen.deploy.backend.deploy.entity.JenkinsJob; import com.qqchen.deploy.backend.deploy.entity.JenkinsView; import com.qqchen.deploy.backend.deploy.dto.JenkinsBuildDTO; +import com.qqchen.deploy.backend.deploy.entity.QJenkinsBuild; import com.qqchen.deploy.backend.deploy.query.JenkinsBuildQuery; import com.qqchen.deploy.backend.deploy.integration.IJenkinsServiceIntegration; import com.qqchen.deploy.backend.deploy.integration.response.JenkinsBuildResponse; @@ -179,4 +180,10 @@ public class JenkinsBuildServiceImpl extends BaseServiceImpl 0; }; } + + @Override + public List findByExternalSystemId(Long externalSystemId) { + JenkinsJobQuery query = new JenkinsJobQuery(); + query.setExternalSystemId(externalSystemId); + return super.findAll(query); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsManagerServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsManagerServiceImpl.java index 45fde9ea..4a768a07 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsManagerServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsManagerServiceImpl.java @@ -1,5 +1,10 @@ package com.qqchen.deploy.backend.deploy.service.impl; +import com.qqchen.deploy.backend.deploy.dto.JenkinsInstanceDTO; +import com.qqchen.deploy.backend.deploy.dto.JenkinsJobDTO; +import com.qqchen.deploy.backend.deploy.dto.JenkinsViewDTO; +import com.qqchen.deploy.backend.deploy.entity.JenkinsJob; +import com.qqchen.deploy.backend.deploy.entity.JenkinsView; import com.qqchen.deploy.backend.deploy.service.IJenkinsManagerService; import com.qqchen.deploy.backend.deploy.service.IJenkinsViewService; import com.qqchen.deploy.backend.deploy.service.IJenkinsJobService; @@ -8,6 +13,7 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; /** * Jenkins管理服务实现 @@ -67,4 +73,26 @@ public class JenkinsManagerServiceImpl implements IJenkinsManagerService { Integer buildCount = jenkinsBuildService.syncAllBuilds(externalSystemId); log.info("Successfully synchronized {} builds", buildCount); } + + @Override + public JenkinsInstanceDTO instance(Long externalSystemId) { + // 1. 创建返回对象 + JenkinsInstanceDTO instanceDTO = new JenkinsInstanceDTO(); + + // 2. 获取视图列表 + List views = jenkinsViewService.findByExternalSystemId(externalSystemId); + instanceDTO.setJenkinsViewList(views); + instanceDTO.setTotalViews(views.size()); + + // 3. 获取任务列表 + List jobs = jenkinsJobService.findByExternalSystemId(externalSystemId); + instanceDTO.setJenkinsJobList(jobs); + instanceDTO.setTotalJobs(jobs.size()); + + // 4. 获取构建总数 + Long totalBuilds = jenkinsBuildService.countByExternalSystemId(externalSystemId); + instanceDTO.setTotalBuilds(totalBuilds.intValue()); + + return instanceDTO; + } } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsViewServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsViewServiceImpl.java index 460d4c94..e193bad8 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsViewServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsViewServiceImpl.java @@ -1,5 +1,6 @@ package com.qqchen.deploy.backend.deploy.service.impl; +import com.qqchen.deploy.backend.deploy.converter.JenkinsViewConverter; import com.qqchen.deploy.backend.deploy.entity.ExternalSystem; import com.qqchen.deploy.backend.deploy.entity.JenkinsView; import com.qqchen.deploy.backend.deploy.dto.JenkinsViewDTO; @@ -38,6 +39,9 @@ public class JenkinsViewServiceImpl extends BaseServiceImpl findByExternalSystemId(Long externalSystemId) { + JenkinsViewQuery query = new JenkinsViewQuery(); + query.setExternalSystemId(externalSystemId); + return super.findAll(query); + } } \ No newline at end of file