diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/DimensionDO.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/DimensionDO.java index adfc8f52e..5b289dcd7 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/DimensionDO.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/DimensionDO.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.headless.server.persistence.dataobject; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -50,6 +51,7 @@ public class DimensionDO { private String dataType; + @TableField(exist = false) private int isTag; private String ext; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/MetricDO.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/MetricDO.java index 048192882..6f6759039 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/MetricDO.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/MetricDO.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.headless.server.persistence.dataobject; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -105,4 +106,6 @@ public class MetricDO { private Integer isPublish; + @TableField(exist = false) + private int isTag; } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java index 1136010df..b0fbe7272 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java @@ -19,7 +19,6 @@ import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException; import com.tencent.supersonic.headless.api.pojo.DimValueMap; import com.tencent.supersonic.headless.api.pojo.ModelDetail; import com.tencent.supersonic.headless.api.pojo.enums.ModelDefineType; -import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType; import com.tencent.supersonic.headless.api.pojo.request.DimensionReq; import com.tencent.supersonic.headless.api.pojo.request.MetaBatchReq; import com.tencent.supersonic.headless.api.pojo.request.PageDimensionReq; @@ -28,16 +27,13 @@ import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp; import com.tencent.supersonic.headless.api.pojo.response.DimensionResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp; import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; -import com.tencent.supersonic.headless.api.pojo.response.TagItem; import com.tencent.supersonic.headless.server.persistence.dataobject.DimensionDO; -import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO; import com.tencent.supersonic.headless.server.persistence.mapper.DimensionDOMapper; import com.tencent.supersonic.headless.server.persistence.repository.DimensionRepository; import com.tencent.supersonic.headless.server.pojo.DimensionFilter; import com.tencent.supersonic.headless.server.pojo.DimensionsFilter; import com.tencent.supersonic.headless.api.pojo.MetaFilter; import com.tencent.supersonic.headless.server.pojo.ModelFilter; -import com.tencent.supersonic.headless.server.pojo.TagFilter; import com.tencent.supersonic.headless.server.service.DatabaseService; import com.tencent.supersonic.headless.server.service.DimensionService; import com.tencent.supersonic.headless.server.service.ModelRelaService; @@ -60,7 +56,6 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; @Service @@ -264,21 +259,6 @@ public class DimensionServiceImpl extends ServiceImpl dimensionDOS = dimensionRepository.getDimension(dimensionFilter); List dimensionResps = convertList(dimensionDOS); - List dimensionIds = dimensionResps.stream().map(dimensionResp -> dimensionResp.getId()) - .collect(Collectors.toList()); - List tagItems = tagMetaService.getTagItems(dimensionIds, TagDefineType.DIMENSION); - Map itemIdToTagItem = tagItems.stream() - .collect(Collectors.toMap(tag -> tag.getItemId(), tag -> tag, (newTag, oldTag) -> newTag)); - - if (Objects.nonNull(itemIdToTagItem)) { - dimensionResps.stream().forEach(dimensionResp -> { - Long metricRespId = dimensionResp.getId(); - if (itemIdToTagItem.containsKey(metricRespId)) { - dimensionResp.setIsTag(itemIdToTagItem.get(metricRespId).getIsTag()); - } - }); - } - if (!CollectionUtils.isEmpty(metaFilter.getFieldsDepend())) { return filterByField(dimensionResps, metaFilter.getFieldsDepend()); } @@ -332,33 +312,9 @@ public class DimensionServiceImpl extends ServiceImpl dimensionResps) { - if (CollectionUtils.isEmpty(dimensionResps)) { - return; - } - TagFilter tagFilter = new TagFilter(); - tagFilter.setTagDefineType(TagDefineType.DIMENSION); - List dimensionIds = dimensionResps.stream().map(dimension -> dimension.getId()) - .collect(Collectors.toList()); - tagFilter.setItemIds(dimensionIds); - Map keyAndTagMap = tagMetaService.getTagDOList(tagFilter).stream() - .collect(Collectors.toMap(tag -> tag.getItemId(), tag -> tag, - (newTag, oldTag) -> newTag)); - if (Objects.nonNull(keyAndTagMap)) { - dimensionResps.stream().forEach(dim -> { - if (keyAndTagMap.containsKey(dim.getId())) { - dim.setIsTag(1); - } else { - dim.setIsTag(0); - } - }); - } - } - @Override public List mockAlias(DimensionReq dimensionReq, String mockType, User user) { String mockAlias = aliasGenerateHelper.generateAlias(mockType, dimensionReq.getName(), diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java index f9f3b109b..6a182180b 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java @@ -29,7 +29,6 @@ import com.tencent.supersonic.headless.api.pojo.SchemaElementType; import com.tencent.supersonic.headless.api.pojo.SchemaItem; import com.tencent.supersonic.headless.api.pojo.enums.MapModeEnum; import com.tencent.supersonic.headless.api.pojo.enums.MetricDefineType; -import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType; import com.tencent.supersonic.headless.api.pojo.request.MetaBatchReq; import com.tencent.supersonic.headless.api.pojo.request.MetricBaseReq; import com.tencent.supersonic.headless.api.pojo.request.MetricReq; @@ -43,12 +42,10 @@ import com.tencent.supersonic.headless.api.pojo.response.DimensionResp; import com.tencent.supersonic.headless.api.pojo.response.MapInfoResp; import com.tencent.supersonic.headless.api.pojo.response.MetricResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp; -import com.tencent.supersonic.headless.api.pojo.response.TagItem; import com.tencent.supersonic.headless.server.facade.service.ChatLayerService; import com.tencent.supersonic.headless.server.persistence.dataobject.CollectDO; import com.tencent.supersonic.headless.server.persistence.dataobject.MetricDO; import com.tencent.supersonic.headless.server.persistence.dataobject.MetricQueryDefaultConfigDO; -import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO; import com.tencent.supersonic.headless.server.persistence.mapper.MetricDOMapper; import com.tencent.supersonic.headless.server.persistence.repository.MetricRepository; import com.tencent.supersonic.headless.server.pojo.DimensionsFilter; @@ -57,7 +54,6 @@ import com.tencent.supersonic.headless.server.pojo.MetricFilter; import com.tencent.supersonic.headless.server.pojo.MetricsFilter; import com.tencent.supersonic.headless.server.pojo.ModelCluster; import com.tencent.supersonic.headless.server.pojo.ModelFilter; -import com.tencent.supersonic.headless.server.pojo.TagFilter; import com.tencent.supersonic.headless.server.service.DimensionService; import com.tencent.supersonic.headless.server.service.MetricService; import com.tencent.supersonic.headless.server.service.ModelService; @@ -347,7 +343,6 @@ public class MetricServiceImpl extends ServiceImpl BeanUtils.copyProperties(metricDOPageInfo, pageInfo); List metricResps = convertList(metricDOPageInfo.getList(), collectIds); fillAdminRes(metricResps, user); - fillTagInfo(metricResps); pageInfo.setList(metricResps); return pageInfo; } @@ -370,20 +365,7 @@ public class MetricServiceImpl extends ServiceImpl MetricFilter metricFilter = new MetricFilter(); BeanUtils.copyProperties(metaFilter, metricFilter); List metricResps = convertList(queryMetric(metricFilter)); - List metricIds = metricResps.stream().map(metricResp -> metricResp.getId()).collect(Collectors.toList()); - List tagItems = tagMetaService.getTagItems(metricIds, TagDefineType.METRIC); - Map itemIdToTagItem = tagItems.stream() - .collect(Collectors.toMap(tag -> tag.getItemId(), tag -> tag, (newTag, oldTag) -> newTag)); - - if (Objects.nonNull(itemIdToTagItem)) { - metricResps.stream().forEach(metricResp -> { - Long metricRespId = metricResp.getId(); - if (itemIdToTagItem.containsKey(metricRespId)) { - metricResp.setIsTag(itemIdToTagItem.get(metricRespId).getIsTag()); - } - }); - } if (!CollectionUtils.isEmpty(metaFilter.getFieldsDepend())) { return filterByField(metricResps, metaFilter.getFieldsDepend()); } @@ -420,30 +402,6 @@ public class MetricServiceImpl extends ServiceImpl return idsToFilter; } - private void fillTagInfo(List metricRespList) { - if (CollectionUtils.isEmpty(metricRespList)) { - return; - } - - TagFilter tagFilter = new TagFilter(); - tagFilter.setTagDefineType(TagDefineType.METRIC); - List metricIds = metricRespList.stream().map(metric -> metric.getId()) - .collect(Collectors.toList()); - tagFilter.setItemIds(metricIds); - Map keyAndTagMap = tagMetaService.getTagDOList(tagFilter).stream() - .collect(Collectors.toMap(tag -> tag.getItemId(), tag -> tag, - (newTag, oldTag) -> newTag)); - if (Objects.nonNull(keyAndTagMap)) { - metricRespList.stream().forEach(metric -> { - if (keyAndTagMap.containsKey(metric.getId())) { - metric.setIsTag(1); - } else { - metric.setIsTag(0); - } - }); - } - } - private List filterByField(List metricResps, List fields) { Set metricRespFiltered = Sets.newHashSet(); for (MetricResp metricResp : metricResps) { diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java index 84b613dbc..01a5649df 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java @@ -89,6 +89,7 @@ public class DimensionConverter { } dimensionResp.setType(getType(dimensionDO.getType())); dimensionResp.setTypeEnum(TypeEnums.DIMENSION); + dimensionResp.setIsTag(dimensionDO.getIsTag()); return dimensionResp; } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java index 508732638..e379401e8 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java @@ -107,6 +107,7 @@ public class MetricConverter { if (metricDO.getDefineType() != null) { metricResp.setMetricDefineType(MetricDefineType.valueOf(metricDO.getDefineType())); } + metricResp.setIsTag(metricDO.getIsTag()); return metricResp; } diff --git a/headless/server/src/main/resources/mapper/custom/DimensionDOCustomMapper.xml b/headless/server/src/main/resources/mapper/custom/DimensionDOCustomMapper.xml index 5629a2f63..daae81cee 100644 --- a/headless/server/src/main/resources/mapper/custom/DimensionDOCustomMapper.xml +++ b/headless/server/src/main/resources/mapper/custom/DimensionDOCustomMapper.xml @@ -117,7 +117,7 @@ - select t.* + select t.*, (case when t1.id is not null then 1 else 0 end) as isTag from s2_metric t left join ( select *