fix:数据查询,优化文件类型数据字典
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package com.sdm.data.model.req;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class SimulationParameterItem {
|
||||
@Schema(description = "参数名")
|
||||
private String parameterName;
|
||||
|
||||
@@ -14,8 +14,11 @@ import com.sdm.common.entity.enums.NodeTypeEnum;
|
||||
import com.sdm.common.entity.req.data.TagReq;
|
||||
import com.sdm.common.entity.req.export.FileAnalysisExportExcelFormat;
|
||||
import com.sdm.common.entity.req.export.FileAnalysisExportExcelParam;
|
||||
import com.sdm.common.entity.req.project.GetAllTasksByDisciplineReq;
|
||||
import com.sdm.common.entity.resp.PageDataResp;
|
||||
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
|
||||
import com.sdm.common.feign.inter.project.ISimulationTaskFeignClient;
|
||||
import com.sdm.common.service.FileBizTypeService;
|
||||
import com.sdm.common.utils.*;
|
||||
import com.sdm.data.bo.ExportOperate;
|
||||
import com.sdm.data.model.entity.FileMetadataInfo;
|
||||
@@ -70,9 +73,26 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
|
||||
@Resource
|
||||
private DictTagHelper dictTagHelper;
|
||||
|
||||
@Autowired
|
||||
ISimulationTaskFeignClient simulationTaskFeignClient;
|
||||
|
||||
@Autowired
|
||||
FileBizTypeService fileBizTypeService;
|
||||
|
||||
|
||||
@Override
|
||||
public SdmResponse<PageDataResp<List<SimulationTaskResultCurveResp>>> getSimulationTaskFile(GetSimulationTaskFileReq req) {
|
||||
// 传了学科字段,需要根据学科获取对应的任务,再和已传的学科做交集处理
|
||||
if(ObjectUtils.isNotEmpty(req.getOwnDisciplineName())) {
|
||||
List<String> disciplineToTaskUUID = getDisciplineToTaskUUID(List.of(req.getOwnDisciplineName()));
|
||||
if(ObjectUtils.isNotEmpty(req.getTagReq())
|
||||
&& ObjectUtils.isNotEmpty(req.getTagReq().getTaskId())){
|
||||
disciplineToTaskUUID.retainAll(parseCsv(req.getTagReq().getTaskId()));
|
||||
}
|
||||
|
||||
req.getTagReq().setTaskId(String.join(",", disciplineToTaskUUID));
|
||||
}
|
||||
|
||||
|
||||
// level=task,或者tagReq不为空且tagReq.taskId不为空且tagReq.runId为空,查询工况下的文件
|
||||
if (NodeTypeEnum.TASK.getValue().equals(req.getLevel()) ||
|
||||
@@ -81,13 +101,11 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
|
||||
&& ObjectUtils.isNotEmpty(req.getTagReq().getTaskId())
|
||||
&& ObjectUtils.isEmpty(req.getTagReq().getRunId())
|
||||
)) {
|
||||
Long taskDirId = resolveTaskDirId(req);
|
||||
if (ObjectUtils.isEmpty(taskDirId)) {
|
||||
Set<Long> taskDirIds = resolveTaskDirId(req);
|
||||
if (ObjectUtils.isEmpty(taskDirIds)) {
|
||||
return PageUtils.getJsonObjectSdmResponse(new ArrayList<>(), new PageInfo<>());
|
||||
}
|
||||
QueryBigFileReq queryBigFileReq = new QueryBigFileReq();
|
||||
queryBigFileReq.setDirId(taskDirId);
|
||||
return getTaskLevelFile(req, queryBigFileReq);
|
||||
return getTaskLevelFile(req, taskDirIds);
|
||||
}
|
||||
|
||||
List<Long> fileIdsByDictTags = null;
|
||||
@@ -148,6 +166,21 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
|
||||
return PageUtils.getJsonObjectSdmResponse(finalResultList, pageInfo);
|
||||
}
|
||||
|
||||
private List<String> getDisciplineToTaskUUID(List<String> disciplines){
|
||||
// 调用feign获取每个学科对应的任务UUID列表
|
||||
GetAllTasksByDisciplineReq req = new GetAllTasksByDisciplineReq();
|
||||
req.setDisciplines(disciplines);
|
||||
SdmResponse<Map<String, List<String>>> disciplineTasksResponse = simulationTaskFeignClient.getAllTasksByDiscipline(req);
|
||||
|
||||
if (!disciplineTasksResponse.isSuccess() || com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(disciplineTasksResponse.getData())) {
|
||||
log.warn("获取学科对应的任务列表失败");
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 获取所有学科对应的任务UUID列表
|
||||
return disciplineTasksResponse.getData().values().stream().flatMap(Collection::stream).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 复用listBigFile的逻辑:在目录范围内根据dictTags筛出文件ID
|
||||
@@ -249,26 +282,25 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
|
||||
.toList();
|
||||
}
|
||||
|
||||
private Long resolveTaskDirId(GetSimulationTaskFileReq req) {
|
||||
private Set<Long> resolveTaskDirId(GetSimulationTaskFileReq req) {
|
||||
if (ObjectUtils.isNotEmpty(req.getDirId())) {
|
||||
return req.getDirId();
|
||||
return Set.of(req.getDirId());
|
||||
}
|
||||
TagReq tagReq = req.getTagReq();
|
||||
if (ObjectUtils.isNotEmpty(tagReq) && StringUtils.isNotBlank(tagReq.getTaskId())) {
|
||||
List<String> taskIds = parseCsv(tagReq.getTaskId());
|
||||
String targetTaskId = CollectionUtils.isNotEmpty(taskIds) ? taskIds.get(taskIds.size() - 1) : null;
|
||||
if (StringUtils.isNotBlank(targetTaskId)) {
|
||||
FileMetadataInfo fileMetadataInfo = fileMetadataInfoService.lambdaQuery()
|
||||
if (CollectionUtils.isNotEmpty(taskIds)) {
|
||||
List<FileMetadataInfo> taskDirs = fileMetadataInfoService.lambdaQuery()
|
||||
.eq(FileMetadataInfo::getTenantId, ThreadLocalContext.getTenantId())
|
||||
.eq(FileMetadataInfo::getRelatedResourceUuid, targetTaskId)
|
||||
.in(FileMetadataInfo::getRelatedResourceUuid, taskIds)
|
||||
.isNull(FileMetadataInfo::getDeletedAt)
|
||||
.one();
|
||||
if (ObjectUtils.isNotEmpty(fileMetadataInfo)) {
|
||||
return fileMetadataInfo.getId();
|
||||
.list();
|
||||
if (CollectionUtils.isNotEmpty(taskDirs)) {
|
||||
return taskDirs.stream().map(FileMetadataInfo::getId).collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
|
||||
@@ -327,33 +359,33 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
|
||||
};
|
||||
}
|
||||
|
||||
private SdmResponse<PageDataResp<List<SimulationTaskResultCurveResp>>> getTaskLevelFile(GetSimulationTaskFileReq req, QueryBigFileReq queryBigFileReq) {
|
||||
private SdmResponse<PageDataResp<List<SimulationTaskResultCurveResp>>> getTaskLevelFile(GetSimulationTaskFileReq req, Set<Long> dirIds ) {
|
||||
// level=task,查task下的交付物文件夹 再根据fileType查具体的云图文件、曲线文件夹下的文件
|
||||
List<FileMetadataInfo> deliverableFileInfoList = fileMetadataInfoService.lambdaQuery()
|
||||
.eq(FileMetadataInfo::getParentId, queryBigFileReq.getDirId())
|
||||
.in(FileMetadataInfo::getParentId, dirIds)
|
||||
.eq(FileMetadataInfo::getOriginalName, CommonConstants.DELIVERABLE_DIR_NAME)
|
||||
.isNull(FileMetadataInfo::getDeletedAt)
|
||||
.eq(FileMetadataInfo::getTenantId, ThreadLocalContext.getTenantId())
|
||||
.list();
|
||||
if (CollectionUtils.isNotEmpty(deliverableFileInfoList)) {
|
||||
// 交付物文件夹id
|
||||
Long deliverableDirId = deliverableFileInfoList.get(0).getId();
|
||||
Set<Long> deliverableDirIds = deliverableFileInfoList.stream().map(FileMetadataInfo::getId).collect(Collectors.toSet());
|
||||
// 云图/曲线/文件夹名称
|
||||
String secondDirName = FileBizTypeEnum.getDirNameByValue(req.getFileBizType());
|
||||
List<String> fileNames = Arrays.stream(req.getFileTypeDictValue().split(",")).map(fileType -> fileBizTypeService.getFileName(fileType)).toList();
|
||||
List<FileMetadataInfo> secondDirFileMetadataInfoList = fileMetadataInfoService.lambdaQuery()
|
||||
.eq(FileMetadataInfo::getParentId, deliverableDirId)
|
||||
.eq(FileMetadataInfo::getOriginalName, secondDirName)
|
||||
.in(FileMetadataInfo::getParentId, deliverableDirIds)
|
||||
.in(FileMetadataInfo::getOriginalName, fileNames)
|
||||
.isNull(FileMetadataInfo::getDeletedAt)
|
||||
.eq(FileMetadataInfo::getTenantId, ThreadLocalContext.getTenantId())
|
||||
.list();
|
||||
if (CollectionUtils.isNotEmpty(secondDirFileMetadataInfoList)) {
|
||||
// 云图/曲线/文件夹id
|
||||
Long secondDirId = secondDirFileMetadataInfoList.get(0).getId();
|
||||
Set<Long> secondDirIds = secondDirFileMetadataInfoList.stream().map(FileMetadataInfo::getId).collect(Collectors.toSet());
|
||||
|
||||
// 最后查云图/曲线/文件夹底下的文件
|
||||
PageHelper.startPage(req.getCurrent(), req.getSize());
|
||||
List<FileMetadataInfo> fileMetadataInfoList = fileMetadataInfoService.lambdaQuery()
|
||||
.eq(FileMetadataInfo::getParentId, secondDirId)
|
||||
.in(FileMetadataInfo::getParentId, secondDirIds)
|
||||
.eq(FileMetadataInfo::getTenantId, ThreadLocalContext.getTenantId())
|
||||
.isNull(FileMetadataInfo::getDeletedAt)
|
||||
.eq(FileMetadataInfo::getIsLatest, true)
|
||||
|
||||
@@ -390,17 +390,6 @@ public class DimensionTemplateServiceImpl extends ServiceImpl<DimensionTemplateM
|
||||
childDto.setTotalName(totalName);
|
||||
}
|
||||
|
||||
// 目前已经移除了学科节点,学科信息作为task节点的字段附属信息
|
||||
if (ObjectUtils.isNotEmpty(childDto.getOwntaskId()) ||
|
||||
(NodeTypeEnum.TASK.getValue().equalsIgnoreCase(childDto.getRelatedResourceUuidOwnType()) && ObjectUtils.isNotEmpty(childDto.getRelatedResourceUuid()))) {
|
||||
GetTaskDetailReq getTaskDetailReq = new GetTaskDetailReq();
|
||||
getTaskDetailReq.setRelatedResourceUuid(ObjectUtils.isNotEmpty(childDto.getOwntaskId()) ? childDto.getOwntaskId() : childDto.getRelatedResourceUuid());
|
||||
SdmResponse<SpdmTaskVo> taskDetail = simulationTaskFeignClient.getTaskDetail(getTaskDetailReq);
|
||||
if (taskDetail.isSuccess()) {
|
||||
childDto.setOwnDisciplineName(taskDetail.getData().getDiscipline());
|
||||
}
|
||||
}
|
||||
|
||||
allChildren.add(childDto);
|
||||
groupedChildren.computeIfAbsent(fileInfo.getOriginalName(), key -> new ArrayList<>()).add(childDto);
|
||||
}
|
||||
@@ -421,7 +410,7 @@ public class DimensionTemplateServiceImpl extends ServiceImpl<DimensionTemplateM
|
||||
}
|
||||
long start4= System.currentTimeMillis();
|
||||
|
||||
// 批量设置文件的节点信息tag1-tag10
|
||||
// 批量设置文件的节点信息tag1-tag10,学科信息
|
||||
hierarchyHelper.setTagReqFromFileMetadataBatch(allChildren, FileMetadataInfoResp::getId);
|
||||
long start5 = System.currentTimeMillis();
|
||||
// 批量填充文件类型标签信息
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
package com.sdm.data.service.impl;
|
||||
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.common.ThreadLocalContext;
|
||||
import com.sdm.common.entity.enums.NodeTypeEnum;
|
||||
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
|
||||
import com.sdm.common.entity.req.project.GetTaskDetailReq;
|
||||
import com.sdm.common.entity.resp.project.SpdmTaskVo;
|
||||
import com.sdm.common.feign.inter.project.ISimulationTaskFeignClient;
|
||||
import com.sdm.common.service.TagMapService;
|
||||
import com.sdm.common.utils.FileSizeUtils;
|
||||
import com.sdm.data.model.entity.FileMetadataInfo;
|
||||
import com.sdm.data.service.IFileMetadataInfoService;
|
||||
@@ -29,6 +33,12 @@ public class FileMetadataHierarchyHelper {
|
||||
@Autowired
|
||||
private IFileMetadataInfoService fileMetadataInfoService;
|
||||
|
||||
@Autowired
|
||||
private ISimulationTaskFeignClient simulationTaskFeignClient;
|
||||
|
||||
@Autowired
|
||||
private TagMapService tagMapService;
|
||||
|
||||
/**
|
||||
* 默认递归深度限制
|
||||
*/
|
||||
@@ -236,13 +246,25 @@ public class FileMetadataHierarchyHelper {
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量为响应对象设置tagReq(合并单条逻辑,避免重复查询)
|
||||
* 批量为响应对象设置 tagReq(合并单条逻辑,避免重复查询)
|
||||
*
|
||||
* @param respList 响应对象列表
|
||||
* @param idGetter 获取文件ID的函数
|
||||
* @param idGetter 获取文件 ID 的函数
|
||||
* @param <T> 响应对象类型
|
||||
*/
|
||||
public <T> void setTagReqFromFileMetadataBatch(List<T> respList, Function<T, Long> idGetter) {
|
||||
setTagReqFromFileMetadataBatch(respList, idGetter, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量为响应对象设置 tagReq 和学科属性(可控制是否设置学科信息)
|
||||
*
|
||||
* @param respList 响应对象列表
|
||||
* @param idGetter 获取文件 ID 的函数
|
||||
* @param enableDiscipline 是否设置学科信息
|
||||
* @param <T> 响应对象类型
|
||||
*/
|
||||
public <T> void setTagReqFromFileMetadataBatch(List<T> respList, Function<T, Long> idGetter, boolean enableDiscipline) {
|
||||
if (CollectionUtils.isEmpty(respList) || idGetter == null) {
|
||||
return;
|
||||
}
|
||||
@@ -265,6 +287,25 @@ public class FileMetadataHierarchyHelper {
|
||||
Map<Long, FileMetadataInfo> fileMap = files.stream()
|
||||
.collect(Collectors.toMap(FileMetadataInfo::getId, item -> item, (left, right) -> left));
|
||||
|
||||
// 如果需要设置学科信息,先收集所有 taskId 并获取任务数据
|
||||
Map<String, SpdmTaskVo> taskMap = null;
|
||||
if (enableDiscipline) {
|
||||
Set<String> taskUuidSet = files.stream()
|
||||
.map(FileMetadataInfo::getTaskId)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (CollectionUtils.isNotEmpty(taskUuidSet)) {
|
||||
GetTaskDetailReq req = new GetTaskDetailReq();
|
||||
req.setRelatedResourceUuidList(new ArrayList<>(taskUuidSet));
|
||||
SdmResponse<Map<String, SpdmTaskVo>> mapSdmResponse = simulationTaskFeignClient.batchGetTaskDetailByUuids(req);
|
||||
taskMap = mapSdmResponse.getData();
|
||||
if (taskMap == null) {
|
||||
taskMap = new HashMap<>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, String> uuidNameMap = buildUuidNameMap(files);
|
||||
|
||||
for (T resp : respList) {
|
||||
@@ -274,23 +315,101 @@ public class FileMetadataHierarchyHelper {
|
||||
}
|
||||
FileMetadataInfo file = fileMap.get(fileId);
|
||||
if (file != null) {
|
||||
setTagReqFromFileMetadataInternal(file, resp, uuidNameMap);
|
||||
setTagReqFromFileMetadataInternal(file, resp, uuidNameMap, taskMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接使用FileMetadataInfo中已存储的tag1~tag10、taskId、runId构建并设置tagReq
|
||||
* 并基于relatedResourceUuid查询对应originalName填充tagName/taskName/runName
|
||||
* 直接使用 FileMetadataInfo 中已存储的 tag1~tag10、taskId、runId 构建并设置 tagReq
|
||||
* 并基于 relatedResourceUuid 查询对应 originalName 填充 tagName/taskName/runName
|
||||
*/
|
||||
public <T> void setTagReqFromFileMetadata(FileMetadataInfo file, T resp) {
|
||||
setTagReqFromFileMetadata(file, resp, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接使用 FileMetadataInfo 中已存储的 tag1~tag10、taskId、runId 构建并设置 tagReq 和学科属性
|
||||
* 并基于 relatedResourceUuid 查询对应 originalName 填充 tagName/taskName/runName
|
||||
*
|
||||
* @param file 文件元数据
|
||||
* @param resp 响应对象
|
||||
* @param enableDiscipline 是否设置学科信息
|
||||
*/
|
||||
public <T> void setTagReqFromFileMetadata(FileMetadataInfo file, T resp, boolean enableDiscipline) {
|
||||
if (Objects.isNull(file) || Objects.isNull(resp)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, String> uuidNameMap = buildUuidNameMap(Collections.singletonList(file));
|
||||
setTagReqFromFileMetadataInternal(file, resp, uuidNameMap);
|
||||
|
||||
// 如果需要设置学科信息,获取任务数据
|
||||
Map<String, SpdmTaskVo> taskMap = null;
|
||||
if (enableDiscipline && StringUtils.isNotBlank(file.getTaskId())) {
|
||||
GetTaskDetailReq req = new GetTaskDetailReq();
|
||||
req.setRelatedResourceUuidList(Collections.singletonList(file.getTaskId()));
|
||||
SdmResponse<Map<String, SpdmTaskVo>> mapSdmResponse = simulationTaskFeignClient.batchGetTaskDetailByUuids(req);
|
||||
taskMap = mapSdmResponse.getData();
|
||||
if (taskMap == null) {
|
||||
taskMap = new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
setTagReqFromFileMetadataInternal(file, resp, uuidNameMap, taskMap);
|
||||
}
|
||||
|
||||
private <T> void setTagReqFromFileMetadataInternal(FileMetadataInfo file, T resp, Map<String, String> uuidNameMap, Map<String, SpdmTaskVo> taskMap) {
|
||||
try {
|
||||
Class<?> tagReqClass = Class.forName("com.sdm.common.entity.req.data.TagReq");
|
||||
Object tagReq = tagReqClass.getDeclaredConstructor().newInstance();
|
||||
|
||||
List<String> tagValues = new ArrayList<>();
|
||||
for (int i = 1; i <= 10; i++) {
|
||||
Object tagValue = FileMetadataInfo.class.getMethod("getTag" + i).invoke(file);
|
||||
String value = Objects.toString(tagValue, null);
|
||||
tagValues.add(value);
|
||||
tagReqClass.getMethod("setTag" + i, String.class).invoke(tagReq, value);
|
||||
}
|
||||
|
||||
String taskId = file.getTaskId();
|
||||
String runId = file.getRunId();
|
||||
tagReqClass.getMethod("setTaskId", String.class).invoke(tagReq, taskId);
|
||||
tagReqClass.getMethod("setRunId", String.class).invoke(tagReq, runId);
|
||||
|
||||
for (int i = 1; i <= 10; i++) {
|
||||
String tagValue = tagValues.get(i - 1);
|
||||
List<String> uuidChain = parseUuidChain(tagValue);
|
||||
String tagName = uuidChain.stream()
|
||||
.map(uuidNameMap::get)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.collect(Collectors.joining("/"));
|
||||
tagReqClass.getMethod("setTag" + i + "Name", String.class).invoke(tagReq, tagName);
|
||||
}
|
||||
tagReqClass.getMethod("setTaskName", String.class).invoke(tagReq, uuidNameMap.get(taskId));
|
||||
tagReqClass.getMethod("setRunName", String.class).invoke(tagReq, uuidNameMap.get(runId));
|
||||
|
||||
resp.getClass().getMethod("setTagReq", tagReqClass).invoke(resp, tagReq);
|
||||
|
||||
// 设置学科信息
|
||||
if (taskMap != null && StringUtils.isNotBlank(taskId)) {
|
||||
SpdmTaskVo taskVo = taskMap.get(taskId);
|
||||
if (taskVo != null) {
|
||||
String disciplineName = taskVo.getDiscipline();
|
||||
if (StringUtils.isNotBlank(disciplineName)) {
|
||||
resp.getClass().getMethod("setOwnDisciplineName", String.class).invoke(resp, disciplineName);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.warn("设置 tagReq 失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 uuidNameMap: key=tag1UUid ,value=项目名称
|
||||
* @param files
|
||||
* @return
|
||||
*/
|
||||
private Map<String, String> buildUuidNameMap(List<FileMetadataInfo> files) {
|
||||
Set<String> relatedUuids = new HashSet<>();
|
||||
for (FileMetadataInfo file : files) {
|
||||
@@ -334,42 +453,6 @@ public class FileMetadataHierarchyHelper {
|
||||
));
|
||||
}
|
||||
|
||||
private <T> void setTagReqFromFileMetadataInternal(FileMetadataInfo file, T resp, Map<String, String> uuidNameMap) {
|
||||
try {
|
||||
Class<?> tagReqClass = Class.forName("com.sdm.common.entity.req.data.TagReq");
|
||||
Object tagReq = tagReqClass.getDeclaredConstructor().newInstance();
|
||||
|
||||
List<String> tagValues = new ArrayList<>();
|
||||
for (int i = 1; i <= 10; i++) {
|
||||
Object tagValue = FileMetadataInfo.class.getMethod("getTag" + i).invoke(file);
|
||||
String value = Objects.toString(tagValue, null);
|
||||
tagValues.add(value);
|
||||
tagReqClass.getMethod("setTag" + i, String.class).invoke(tagReq, value);
|
||||
}
|
||||
|
||||
String taskId = file.getTaskId();
|
||||
String runId = file.getRunId();
|
||||
tagReqClass.getMethod("setTaskId", String.class).invoke(tagReq, taskId);
|
||||
tagReqClass.getMethod("setRunId", String.class).invoke(tagReq, runId);
|
||||
|
||||
for (int i = 1; i <= 10; i++) {
|
||||
String tagValue = tagValues.get(i - 1);
|
||||
List<String> uuidChain = parseUuidChain(tagValue);
|
||||
String tagName = uuidChain.stream()
|
||||
.map(uuidNameMap::get)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.collect(Collectors.joining("/"));
|
||||
tagReqClass.getMethod("setTag" + i + "Name", String.class).invoke(tagReq, tagName);
|
||||
}
|
||||
tagReqClass.getMethod("setTaskName", String.class).invoke(tagReq, uuidNameMap.get(taskId));
|
||||
tagReqClass.getMethod("setRunName", String.class).invoke(tagReq, uuidNameMap.get(runId));
|
||||
|
||||
resp.getClass().getMethod("setTagReq", tagReqClass).invoke(resp, tagReq);
|
||||
} catch (Exception e) {
|
||||
log.warn("设置tagReq失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析逗号拼接的uuid链
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user