应用迁移到团队应用里配置GIT

This commit is contained in:
dengqichen 2025-11-11 15:34:16 +08:00
parent 9d42dd1ba3
commit 4f28a9d3e5
7 changed files with 80 additions and 63 deletions

View File

@ -2,7 +2,6 @@ package com.qqchen.deploy.backend.deploy.dto;
import com.qqchen.deploy.backend.deploy.enums.DevelopmentLanguageTypeEnum;
import com.qqchen.deploy.backend.framework.dto.BaseDTO;
import com.qqchen.deploy.backend.system.model.ExternalSystemDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
@ -24,27 +23,17 @@ public class ApplicationDTO extends BaseDTO {
@NotNull(message = "开发语言")
private DevelopmentLanguageTypeEnum language;
@Schema(description = "代码仓库项目ID")
private Long repoProjectId;
@Schema(description = "应用分类ID")
private Long applicationCategoryId;
@Schema(description = "三方系统ID")
private Long externalSystemId;
@Schema(description = "是否启用")
private Boolean enabled;
@NotNull(message = "排序号不能为空")
private Integer sort;
private RepositoryProjectDTO repositoryProject;
private ApplicationCategoryDTO applicationCategory;
private ExternalSystemDTO externalSystem;
@Schema(description = "关联的团队数量")
private Long teamCount;

View File

@ -26,6 +26,18 @@ public class TeamApplicationDTO extends BaseDTO {
@Schema(description = "分支名称", example = "develop")
private String branch;
@Schema(description = "代码源系统IDGit系统")
private Long codeSourceSystemId;
@Schema(description = "代码源系统名称")
private String codeSourceSystemName;
@Schema(description = "代码源项目IDGit项目ID")
private Long codeSourceProjectId;
@Schema(description = "代码源项目名称")
private String codeSourceProjectName;
@Schema(description = "部署系统IDJenkins系统")
private Long deploySystemId;

View File

@ -42,24 +42,12 @@ public class Application extends Entity<Long> {
@Column(name = "language")
private DevelopmentLanguageTypeEnum language;
/**
* 代码仓库项目ID
*/
@Column(name = "repo_project_id")
private Long repoProjectId;
/**
* 应用分类ID
*/
@Column(name = "application_category_id")
private Long applicationCategoryId;
/**
* 三方系统ID关联外部系统
*/
@Column(name = "external_system_id")
private Long externalSystemId;
/**
* 排序号
*/

View File

@ -44,6 +44,18 @@ public class TeamApplication extends Entity<Long> {
@Column(name = "branch", length = 100)
private String branch;
/**
* 代码源系统ID关联sys_external_systemtype=GIT
*/
@Column(name = "code_source_system_id")
private Long codeSourceSystemId;
/**
* 代码源项目IDGit项目ID
*/
@Column(name = "code_source_project_id")
private Long codeSourceProjectId;
/**
* 部署系统ID关联sys_external_systemtype=JENKINS
*/

View File

@ -86,32 +86,6 @@ public class ApplicationServiceImpl extends BaseServiceImpl<Application, Applica
);
}
// 批量查询代码仓库项目
List<Long> repoProjectIds = content.stream()
.map(ApplicationDTO::getRepoProjectId)
.filter(java.util.Objects::nonNull)
.distinct()
.collect(toList());
java.util.Map<Long, RepositoryProjectDTO> repoProjectMap = new java.util.HashMap<>();
if (!repoProjectIds.isEmpty()) {
repositoryProjectRepository.findByRepoProjectIdIn(repoProjectIds).forEach(repoProject ->
repoProjectMap.put(repoProject.getRepoProjectId(), repositoryProjectConverter.toDto(repoProject))
);
}
// 批量查询三方系统
List<Long> externalSystemIds = content.stream()
.map(ApplicationDTO::getExternalSystemId)
.filter(java.util.Objects::nonNull)
.distinct()
.collect(toList());
java.util.Map<Long, ExternalSystemDTO> externalSystemMap = new java.util.HashMap<>();
if (!externalSystemIds.isEmpty()) {
externalSystemRepository.findAllById(externalSystemIds).forEach(externalSystem ->
externalSystemMap.put(externalSystem.getId(), externalSystemConverter.toDto(externalSystem))
);
}
// 批量统计团队数量
List<Long> applicationIds = content.stream()
.map(ApplicationDTO::getId)
@ -131,12 +105,6 @@ public class ApplicationServiceImpl extends BaseServiceImpl<Application, Applica
if (application.getApplicationCategoryId() != null) {
application.setApplicationCategory(categoryMap.get(application.getApplicationCategoryId()));
}
if (application.getRepoProjectId() != null) {
application.setRepositoryProject(repoProjectMap.get(application.getRepoProjectId()));
}
if (application.getExternalSystemId() != null) {
application.setExternalSystem(externalSystemMap.get(application.getExternalSystemId()));
}
application.setTeamCount(teamCountMap.getOrDefault(application.getId(), 0L));
});

View File

@ -9,8 +9,10 @@ import com.qqchen.deploy.backend.deploy.entity.Team;
import com.qqchen.deploy.backend.deploy.entity.TeamApplication;
import com.qqchen.deploy.backend.deploy.query.TeamApplicationQuery;
import com.qqchen.deploy.backend.deploy.entity.ExternalSystem;
import com.qqchen.deploy.backend.deploy.entity.RepositoryProject;
import com.qqchen.deploy.backend.deploy.repository.IApplicationRepository;
import com.qqchen.deploy.backend.deploy.repository.IExternalSystemRepository;
import com.qqchen.deploy.backend.deploy.repository.IRepositoryProjectRepository;
import com.qqchen.deploy.backend.deploy.repository.IDeployRecordRepository;
import com.qqchen.deploy.backend.deploy.repository.IEnvironmentRepository;
import com.qqchen.deploy.backend.deploy.repository.ITeamApplicationRepository;
@ -56,6 +58,9 @@ public class TeamApplicationServiceImpl extends BaseServiceImpl<TeamApplication,
@Resource
private IExternalSystemRepository externalSystemRepository;
@Resource
private IRepositoryProjectRepository repositoryProjectRepository;
@Resource
private TeamApplicationConverter teamApplicationConverter;
@ -120,6 +125,16 @@ public class TeamApplicationServiceImpl extends BaseServiceImpl<TeamApplication,
.filter(Objects::nonNull)
.collect(Collectors.toSet());
Set<Long> codeSourceSystemIds = teamApps.stream()
.map(TeamApplicationDTO::getCodeSourceSystemId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
Set<Long> codeSourceProjectIds = teamApps.stream()
.map(TeamApplicationDTO::getCodeSourceProjectId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
// 2. 批量查询团队信息
Map<Long, Team> teamMap = new HashMap<>();
if (!teamIds.isEmpty()) {
@ -152,15 +167,31 @@ public class TeamApplicationServiceImpl extends BaseServiceImpl<TeamApplication,
);
}
// 6. 批量查询部系统信息
Map<Long, ExternalSystem> externalSystemMap = new HashMap<>();
// 6. 批量查询系统信息Jenkins
Map<Long, ExternalSystem> deploySystemMap = new HashMap<>();
if (!deploySystemIds.isEmpty()) {
externalSystemRepository.findAllById(deploySystemIds).forEach(system ->
externalSystemMap.put(system.getId(), system)
deploySystemMap.put(system.getId(), system)
);
}
// 7. 填充扩展字段
// 7. 批量查询代码源系统信息Git
Map<Long, ExternalSystem> codeSourceSystemMap = new HashMap<>();
if (!codeSourceSystemIds.isEmpty()) {
externalSystemRepository.findAllById(codeSourceSystemIds).forEach(system ->
codeSourceSystemMap.put(system.getId(), system)
);
}
// 8. 批量查询代码源项目信息
Map<Long, RepositoryProject> codeSourceProjectMap = new HashMap<>();
if (!codeSourceProjectIds.isEmpty()) {
repositoryProjectRepository.findAllById(codeSourceProjectIds).forEach(project ->
codeSourceProjectMap.put(project.getId(), project)
);
}
// 9. 填充扩展字段
teamApps.forEach(teamApp -> {
// 填充团队名称
if (teamApp.getTeamId() != null) {
@ -197,11 +228,27 @@ public class TeamApplicationServiceImpl extends BaseServiceImpl<TeamApplication,
// 填充部署系统名称
if (teamApp.getDeploySystemId() != null) {
ExternalSystem system = externalSystemMap.get(teamApp.getDeploySystemId());
ExternalSystem system = deploySystemMap.get(teamApp.getDeploySystemId());
if (system != null) {
teamApp.setDeploySystemName(system.getName());
}
}
// 填充代码源系统名称
if (teamApp.getCodeSourceSystemId() != null) {
ExternalSystem system = codeSourceSystemMap.get(teamApp.getCodeSourceSystemId());
if (system != null) {
teamApp.setCodeSourceSystemName(system.getName());
}
}
// 填充代码源项目名称
if (teamApp.getCodeSourceProjectId() != null) {
RepositoryProject project = codeSourceProjectMap.get(teamApp.getCodeSourceProjectId());
if (project != null) {
teamApp.setCodeSourceProjectName(project.getName());
}
}
});
}

View File

@ -701,9 +701,7 @@ CREATE TABLE deploy_application
app_name VARCHAR(100) NOT NULL COMMENT '应用名称',
app_desc VARCHAR(255) NULL COMMENT '应用描述',
language VARCHAR(50) NULL COMMENT '开发语言JAVA、PYTHON、NODEJS',
repo_project_id BIGINT NULL COMMENT '代码仓库项目ID',
application_category_id BIGINT NULL COMMENT '所属应用分类ID',
external_system_id BIGINT NULL COMMENT '三方系统ID关联外部系统',
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用0禁用1启用',
sort INT NOT NULL DEFAULT 0 COMMENT '排序号',
-- 基础字段
@ -810,6 +808,8 @@ CREATE TABLE deploy_team_application
application_id BIGINT NOT NULL COMMENT '应用ID',
environment_id BIGINT NOT NULL COMMENT '环境ID',
branch VARCHAR(100) NULL COMMENT '分支名称',
code_source_system_id BIGINT NULL COMMENT '代码源系统ID关联sys_external_systemtype=GIT',
code_source_project_id BIGINT NULL COMMENT '代码源项目IDGit项目ID',
deploy_system_id BIGINT NULL COMMENT '部署系统ID关联sys_external_systemtype=JENKINS',
deploy_job VARCHAR(100) NULL COMMENT '部署任务ID关联deploy_jenkins_job',
workflow_definition_id BIGINT NULL COMMENT '工作流定义ID关联workflow_definition',
@ -818,12 +818,13 @@ CREATE TABLE deploy_team_application
INDEX idx_team (team_id),
INDEX idx_application (application_id),
INDEX idx_environment (environment_id),
INDEX idx_code_source_system (code_source_system_id),
INDEX idx_deploy_system (deploy_system_id),
INDEX idx_deploy_job (deploy_job),
INDEX idx_workflow_definition (workflow_definition_id),
CONSTRAINT fk_team_app_team FOREIGN KEY (team_id) REFERENCES deploy_team (id),
CONSTRAINT fk_team_app_application FOREIGN KEY (application_id) REFERENCES deploy_application (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='团队应用关联表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='团队应用关联表(包含代码源和部署配置)';
-- 团队配置表
CREATE TABLE deploy_team_environment_config