refactor(headless): 优化维度值映射处理逻辑并添加查询响应中的代理ID字段
Some checks failed
supersonic CentOS CI / build (21) (push) Has been cancelled
supersonic mac CI / build (21) (push) Has been cancelled
supersonic ubuntu CI / build (21) (push) Has been cancelled
supersonic windows CI / build (21) (push) Has been cancelled

- 简化了维度值映射列表的删除操作代码结构
- 移除了不必要的空行以提高代码可读性
- 在查询响应对象中添加了agentId字段
- 优化了流式处理的链式调用方式
- 调整了数据集服务查询方法的参数构建方式
This commit is contained in:
jerryjzhang
2026-04-01 14:24:31 +08:00
parent 507af43b73
commit 8a4bccab10
3 changed files with 15 additions and 17 deletions

View File

@@ -13,6 +13,7 @@ public class QueryResp {
private Long questionId; private Long questionId;
private Date createTime; private Date createTime;
private Long chatId; private Long chatId;
private Integer agentId;
private Integer score; private Integer score;
private String feedback; private String feedback;
private String queryText; private String queryText;

View File

@@ -475,40 +475,39 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
if (StringUtils.isNotEmpty(dimensionDO.getDimValueMaps())) { if (StringUtils.isNotEmpty(dimensionDO.getDimValueMaps())) {
dimValueMapList = JsonUtil.toList(dimensionDO.getDimValueMaps(), DimValueMap.class); dimValueMapList = JsonUtil.toList(dimensionDO.getDimValueMaps(), DimValueMap.class);
} }
// 预先处理请求列表,设置默认的 techName // 预先处理请求列表,设置默认的 techName
for (DimValueMap dimValueMap : req.getDimValueMaps()) { for (DimValueMap dimValueMap : req.getDimValueMaps()) {
if (StringUtils.isEmpty(dimValueMap.getTechName())) { if (StringUtils.isEmpty(dimValueMap.getTechName())) {
dimValueMap.setTechName(dimValueMap.getValue()); dimValueMap.setTechName(dimValueMap.getValue());
} }
} }
// 构建现有数据的 Map用于快速查找 (value -> DimValueMap) // 构建现有数据的 Map用于快速查找 (value -> DimValueMap)
Map<String, DimValueMap> existingMap = dimValueMapList.stream() Map<String, DimValueMap> existingMap = dimValueMapList.stream()
.collect(Collectors.toMap(DimValueMap::getValue, v -> v, (v1, v2) -> v2)); .collect(Collectors.toMap(DimValueMap::getValue, v -> v, (v1, v2) -> v2));
// 收集需要删除的 valuesalias 为空的) // 收集需要删除的 valuesalias 为空的)
Set<String> valuesToDelete = req.getDimValueMaps().stream() Set<String> valuesToDelete = req.getDimValueMaps().stream()
.filter(dimValueMap -> CollectionUtils.isEmpty(dimValueMap.getAlias())) .filter(dimValueMap -> CollectionUtils.isEmpty(dimValueMap.getAlias()))
.map(DimValueMap::getValue) .map(DimValueMap::getValue).collect(Collectors.toSet());
.collect(Collectors.toSet());
// 一次性删除所有需要删除的数据 // 一次性删除所有需要删除的数据
if (!valuesToDelete.isEmpty()) { if (!valuesToDelete.isEmpty()) {
dimValueMapList = dimValueMapList.stream() dimValueMapList =
.filter(map -> !valuesToDelete.contains(map.getValue())) dimValueMapList.stream().filter(map -> !valuesToDelete.contains(map.getValue()))
.collect(Collectors.toList()); .collect(Collectors.toList());
// 同时从 existingMap 中移除 // 同时从 existingMap 中移除
existingMap.keySet().removeAll(valuesToDelete); existingMap.keySet().removeAll(valuesToDelete);
} }
// 处理新增和更新 // 处理新增和更新
for (DimValueMap dimValueMap : req.getDimValueMaps()) { for (DimValueMap dimValueMap : req.getDimValueMaps()) {
// 跳过需要删除的 // 跳过需要删除的
if (CollectionUtils.isEmpty(dimValueMap.getAlias())) { if (CollectionUtils.isEmpty(dimValueMap.getAlias())) {
continue; continue;
} }
String value = dimValueMap.getValue(); String value = dimValueMap.getValue();
if (!existingMap.containsKey(value)) { if (!existingMap.containsKey(value)) {
// 新增 // 新增
@@ -520,7 +519,7 @@ public class DimensionServiceImpl extends ServiceImpl<DimensionDOMapper, Dimensi
existing.setAlias(dimValueMap.getAlias()); existing.setAlias(dimValueMap.getAlias());
} }
} }
dimensionDO.setDimValueMaps(JsonUtil.toString(dimValueMapList)); dimensionDO.setDimValueMaps(JsonUtil.toString(dimValueMapList));
updateById(dimensionDO); updateById(dimensionDO);
return true; return true;

View File

@@ -413,13 +413,11 @@ public class SchemaServiceImpl implements SchemaService {
public List<ItemResp> getDomainDataSetTree() { public List<ItemResp> getDomainDataSetTree() {
List<DomainResp> domainResps = domainService.getDomainList(); List<DomainResp> domainResps = domainService.getDomainList();
List<ItemResp> itemResps = domainResps.stream().map(domain -> new ItemResp(domain.getId(), List<ItemResp> itemResps = domainResps.stream().map(domain -> new ItemResp(domain.getId(),
domain.getParentId(), domain.getName(), TypeEnums.DOMAIN)) domain.getParentId(), domain.getName(), TypeEnums.DOMAIN)).toList();
.toList();
Map<Long, ItemResp> itemRespMap = Map<Long, ItemResp> itemRespMap =
itemResps.stream().collect(Collectors.toMap(ItemResp::getId, item -> item)); itemResps.stream().collect(Collectors.toMap(ItemResp::getId, item -> item));
List<DataSetResp> dataSetResps = dataSetService.getDataSetList(MetaFilter.builder() List<DataSetResp> dataSetResps = dataSetService
.status(StatusEnum.ONLINE.getCode()) .getDataSetList(MetaFilter.builder().status(StatusEnum.ONLINE.getCode()).build());
.build());
for (DataSetResp dataSetResp : dataSetResps) { for (DataSetResp dataSetResp : dataSetResps) {
ItemResp itemResp = itemRespMap.get(dataSetResp.getDomainId()); ItemResp itemResp = itemRespMap.get(dataSetResp.getDomainId());
if (itemResp != null) { if (itemResp != null) {