打印了JENKINS节点日志
This commit is contained in:
parent
e8f6102067
commit
d0f2e78ee7
@ -29,6 +29,9 @@ public class TeamApplicationDTO extends BaseDTO {
|
||||
@Schema(description = "部署系统ID(Jenkins系统)")
|
||||
private Long deploySystemId;
|
||||
|
||||
@Schema(description = "部署系统名称")
|
||||
private String deploySystemName;
|
||||
|
||||
@Schema(description = "部署任务ID(Jenkins Job)")
|
||||
private String deployJob;
|
||||
|
||||
|
||||
@ -45,4 +45,12 @@ public interface IRepositoryGroupRepository extends IBaseRepository<RepositoryGr
|
||||
* 根据Git系统组ID、外部系统ID查询仓库组
|
||||
*/
|
||||
Optional<RepositoryGroup> findByRepoGroupIdAndExternalSystemIdAndDeletedFalse(Long repoGroupId, Long externalSystemId);
|
||||
|
||||
/**
|
||||
* 根据Git系统组ID列表批量查询仓库组(用于填充扩展字段)
|
||||
*
|
||||
* @param repoGroupIds Git系统组ID列表
|
||||
* @return 仓库组列表
|
||||
*/
|
||||
List<RepositoryGroup> findByRepoGroupIdIn(List<Long> repoGroupIds);
|
||||
}
|
||||
@ -324,20 +324,21 @@ public class RepositoryProjectServiceImpl extends BaseServiceImpl<RepositoryProj
|
||||
return;
|
||||
}
|
||||
|
||||
// 1. 收集所有仓库组ID
|
||||
// 1. 收集所有仓库组的 repo_group_id(Git系统的组ID,不是数据库主键)
|
||||
Set<Long> repoGroupIds = projects.stream()
|
||||
.map(RepositoryProjectDTO::getRepoGroupId)
|
||||
.filter(id -> id != null)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 2. 批量查询仓库组信息
|
||||
// 2. 批量查询仓库组信息(根据 repo_group_id 字段查询,不是主键 id)
|
||||
Map<Long, RepositoryGroup> repoGroupMap = Collections.emptyMap();
|
||||
if (!repoGroupIds.isEmpty()) {
|
||||
repoGroupMap = repositoryGroupRepository.findAllById(repoGroupIds).stream()
|
||||
.collect(Collectors.toMap(RepositoryGroup::getId, Function.identity()));
|
||||
List<Long> repoGroupIdList = new ArrayList<>(repoGroupIds);
|
||||
repoGroupMap = repositoryGroupRepository.findByRepoGroupIdIn(repoGroupIdList).stream()
|
||||
.collect(Collectors.toMap(RepositoryGroup::getRepoGroupId, Function.identity()));
|
||||
}
|
||||
|
||||
// 3. 填充仓库组名称
|
||||
// 3. 填充仓库组名称(使用 repo_group_id 作为 key)
|
||||
Map<Long, RepositoryGroup> finalRepoGroupMap = repoGroupMap;
|
||||
projects.forEach(project -> {
|
||||
if (project.getRepoGroupId() != null) {
|
||||
|
||||
@ -8,7 +8,9 @@ import com.qqchen.deploy.backend.deploy.entity.Environment;
|
||||
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.repository.IApplicationRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IExternalSystemRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IDeployRecordRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IEnvironmentRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.ITeamApplicationRepository;
|
||||
@ -51,6 +53,9 @@ public class TeamApplicationServiceImpl extends BaseServiceImpl<TeamApplication,
|
||||
@Resource
|
||||
private IWorkflowDefinitionRepository workflowDefinitionRepository;
|
||||
|
||||
@Resource
|
||||
private IExternalSystemRepository externalSystemRepository;
|
||||
|
||||
@Resource
|
||||
private TeamApplicationConverter teamApplicationConverter;
|
||||
|
||||
@ -80,7 +85,7 @@ public class TeamApplicationServiceImpl extends BaseServiceImpl<TeamApplication,
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量填充扩展字段:teamName、applicationName、applicationCode、environmentName
|
||||
* 批量填充扩展字段:teamName、applicationName、applicationCode、environmentName、workflowDefinitionName、deploySystemName
|
||||
*
|
||||
* <p>使用批量查询避免N+1问题
|
||||
*/
|
||||
@ -110,6 +115,11 @@ public class TeamApplicationServiceImpl extends BaseServiceImpl<TeamApplication,
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
Set<Long> deploySystemIds = teamApps.stream()
|
||||
.map(TeamApplicationDTO::getDeploySystemId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 2. 批量查询团队信息
|
||||
Map<Long, Team> teamMap = new HashMap<>();
|
||||
if (!teamIds.isEmpty()) {
|
||||
@ -142,7 +152,15 @@ public class TeamApplicationServiceImpl extends BaseServiceImpl<TeamApplication,
|
||||
);
|
||||
}
|
||||
|
||||
// 6. 填充扩展字段
|
||||
// 6. 批量查询外部系统信息
|
||||
Map<Long, ExternalSystem> externalSystemMap = new HashMap<>();
|
||||
if (!deploySystemIds.isEmpty()) {
|
||||
externalSystemRepository.findAllById(deploySystemIds).forEach(system ->
|
||||
externalSystemMap.put(system.getId(), system)
|
||||
);
|
||||
}
|
||||
|
||||
// 7. 填充扩展字段
|
||||
teamApps.forEach(teamApp -> {
|
||||
// 填充团队名称
|
||||
if (teamApp.getTeamId() != null) {
|
||||
@ -176,6 +194,14 @@ public class TeamApplicationServiceImpl extends BaseServiceImpl<TeamApplication,
|
||||
teamApp.setWorkflowDefinitionName(workflow.getName());
|
||||
}
|
||||
}
|
||||
|
||||
// 填充部署系统名称
|
||||
if (teamApp.getDeploySystemId() != null) {
|
||||
ExternalSystem system = externalSystemMap.get(teamApp.getDeploySystemId());
|
||||
if (system != null) {
|
||||
teamApp.setDeploySystemName(system.getName());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,53 @@
|
||||
package com.qqchen.deploy.backend.workflow.dto;
|
||||
|
||||
import com.qqchen.deploy.backend.workflow.enums.LogLevel;
|
||||
import com.qqchen.deploy.backend.workflow.enums.LogSource;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 工作流节点日志 DTO
|
||||
* <p>
|
||||
* 日志存储在 Redis Stream 中,不再使用 MySQL,此类仅用于数据传输
|
||||
*
|
||||
* @author qqchen
|
||||
* @since 2025-11-03
|
||||
*/
|
||||
@Data
|
||||
public class WorkflowNodeLogDTO {
|
||||
|
||||
/**
|
||||
* 流程实例ID(Flowable processInstanceId)
|
||||
*/
|
||||
private String processInstanceId;
|
||||
|
||||
/**
|
||||
* 节点ID(Flowable nodeId, 例如: sid_xxx)
|
||||
*/
|
||||
private String nodeId;
|
||||
|
||||
/**
|
||||
* 日志序号(保证同一节点内日志有序,从1开始递增)
|
||||
*/
|
||||
private Long sequenceId;
|
||||
|
||||
/**
|
||||
* 时间戳(Unix毫秒)
|
||||
*/
|
||||
private Long timestamp;
|
||||
|
||||
/**
|
||||
* 日志级别(INFO, WARN, ERROR, DEBUG)
|
||||
*/
|
||||
private LogLevel level;
|
||||
|
||||
/**
|
||||
* 日志来源(JENKINS, FLOWABLE, SHELL, NOTIFICATION)
|
||||
*/
|
||||
private LogSource source;
|
||||
|
||||
/**
|
||||
* 日志内容
|
||||
*/
|
||||
private String message;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user