From 3fe726ac23202627ac1d0489d1e43e59298e9391 Mon Sep 17 00:00:00 2001 From: jolunoluo Date: Tue, 19 Sep 2023 21:13:39 +0800 Subject: [PATCH] (improvement)(semantic) support adding tag for metric --- .../main/resources/db/semantic-schema-h2.sql | 1 + .../src/main/resources/db/schema-h2.sql | 1 + .../src/main/resources/db/schema-mysql.sql | 1 + .../src/main/resources/db/sql-update.sql | 4 +- .../src/test/resources/db/schema-h2.sql | 1 + .../api/model/request/MetricBaseReq.java | 3 + .../api/model/request/PageMetricReq.java | 2 - .../api/model/request/PageSchemaItemReq.java | 1 + .../api/model/response/MetricResp.java | 14 ++ .../model/application/MetricServiceImpl.java | 13 +- .../semantic/model/domain/MetricService.java | 5 +- .../model/domain/dataobject/MetricDO.java | 161 +++++++++++++++++- .../domain/dataobject/MetricDOExample.java | 155 +++++++++++++---- .../semantic/model/domain/pojo/Metric.java | 13 +- .../model/domain/utils/MetricConverter.java | 25 ++- .../semantic/model/rest/MetricController.java | 6 + .../main/resources/mapper/MetricDOMapper.xml | 20 ++- .../mapper/custom/MetricDOCustomMapper.xml | 44 ++--- 18 files changed, 384 insertions(+), 86 deletions(-) diff --git a/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql b/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql index e27fcd725..34da654cc 100644 --- a/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql +++ b/launchers/semantic/src/main/resources/db/semantic-schema-h2.sql @@ -108,6 +108,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, + `tags` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_metric IS 'metric information table'; diff --git a/launchers/standalone/src/main/resources/db/schema-h2.sql b/launchers/standalone/src/main/resources/db/schema-h2.sql index b8d090f07..556b19550 100644 --- a/launchers/standalone/src/main/resources/db/schema-h2.sql +++ b/launchers/standalone/src/main/resources/db/schema-h2.sql @@ -190,6 +190,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, + `tags` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_metric IS 'metric information table'; diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql index da3579178..255f2967a 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql @@ -254,6 +254,7 @@ CREATE TABLE `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL COMMENT '数值类型', `data_format` varchar(500) DEFAULT NULL COMMENT '数值类型参数', `alias` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `tags` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='指标表'; diff --git a/launchers/standalone/src/main/resources/db/sql-update.sql b/launchers/standalone/src/main/resources/db/sql-update.sql index b56df3579..4ba811442 100644 --- a/launchers/standalone/src/main/resources/db/sql-update.sql +++ b/launchers/standalone/src/main/resources/db/sql-update.sql @@ -48,5 +48,7 @@ alter table s2_database drop column domain_id; alter table s2_chat add column agent_id int after chat_id; --20230907 +ALTER TABLE s2_model add alias varchar(200) default null after domain_id; -ALTER TABLE s2_model add alias varchar(200) default null after domain_id; \ No newline at end of file +--20230919 +alter table s2_metric add tags varchar(500) null; \ No newline at end of file diff --git a/launchers/standalone/src/test/resources/db/schema-h2.sql b/launchers/standalone/src/test/resources/db/schema-h2.sql index 64b84e38d..fd6a300f9 100644 --- a/launchers/standalone/src/test/resources/db/schema-h2.sql +++ b/launchers/standalone/src/test/resources/db/schema-h2.sql @@ -205,6 +205,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, + `tags` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ); COMMENT ON TABLE s2_metric IS 'metric information table'; diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java index 1540baeeb..7481d997d 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/MetricBaseReq.java @@ -4,6 +4,7 @@ package com.tencent.supersonic.semantic.api.model.request; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import com.tencent.supersonic.common.pojo.DataFormat; import lombok.Data; +import java.util.List; @Data @@ -17,4 +18,6 @@ public class MetricBaseReq extends SchemaItem { private DataFormat dataFormat; + private List tags; + } diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java index aad02b810..40edea0c2 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageMetricReq.java @@ -9,6 +9,4 @@ public class PageMetricReq extends PageSchemaItemReq { private String type; - private String key; - } diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java index b2580779d..94e26026d 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/PageSchemaItemReq.java @@ -16,4 +16,5 @@ public class PageSchemaItemReq extends PageBaseReq { private List modelIds = Lists.newArrayList(); private Integer sensitiveLevel; private Integer status; + private String key; } diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java index 9afbe3368..08ff264e8 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/response/MetricResp.java @@ -1,11 +1,15 @@ package com.tencent.supersonic.semantic.api.model.response; +import com.google.common.collect.Lists; import com.tencent.supersonic.common.pojo.DataFormat; import com.tencent.supersonic.semantic.api.model.pojo.MetricTypeParams; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import lombok.Data; import lombok.ToString; +import org.apache.commons.lang3.StringUtils; +import java.util.Arrays; +import java.util.List; @Data @@ -14,6 +18,8 @@ public class MetricResp extends SchemaItem { private Long modelId; + private Long domainId; + private String modelName; //ATOMIC DERIVED @@ -27,5 +33,13 @@ public class MetricResp extends SchemaItem { private String alias; + private List tags; + public void setTag(String tag) { + if (StringUtils.isBlank(tag)) { + tags = Lists.newArrayList(); + } else { + tags = Arrays.asList(tag.split(",")); + } + } } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java index 6545e1b70..dec9d2b3f 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/application/MetricServiceImpl.java @@ -28,6 +28,7 @@ import com.tencent.supersonic.semantic.model.domain.utils.MetricConverter; import com.tencent.supersonic.semantic.model.domain.MetricService; import com.tencent.supersonic.semantic.model.domain.pojo.Metric; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -250,6 +251,16 @@ public class MetricServiceImpl implements MetricService { }); } + @Override + public Set getMetricTags() { + List metricResps = getMetrics(); + if (CollectionUtils.isEmpty(metricResps)) { + return new HashSet<>(); + } + return metricResps.stream().flatMap(metricResp -> + metricResp.getTags().stream()).collect(Collectors.toSet()); + } + private void saveMetricBatch(List metrics, User user) { if (CollectionUtils.isEmpty(metrics)) { @@ -293,7 +304,7 @@ public class MetricServiceImpl implements MetricService { Map modelMap = modelService.getModelMap(); if (!CollectionUtils.isEmpty(metricDOS)) { metricDescs = metricDOS.stream() - .map(metricDO -> MetricConverter.convert2MetricDesc(metricDO, modelMap)) + .map(metricDO -> MetricConverter.convert2MetricResp(metricDO, modelMap)) .collect(Collectors.toList()); } return metricDescs; diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java index 1b28e8e64..1071fe27d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/MetricService.java @@ -7,6 +7,7 @@ import com.tencent.supersonic.semantic.api.model.request.PageMetricReq; import com.tencent.supersonic.semantic.api.model.response.MetricResp; import java.util.List; +import java.util.Set; public interface MetricService { @@ -22,7 +23,7 @@ public interface MetricService { void createMetricBatch(List metricReqs, User user) throws Exception; - PageInfo queryMetric(PageMetricReq pageMetrricReq); + PageInfo queryMetric(PageMetricReq pageMetricReq); MetricResp getMetric(Long modelId, String bizName); @@ -35,4 +36,6 @@ public interface MetricService { void deleteMetric(Long id) throws Exception; List mockAlias(MetricReq metricReq, String mockType, User user); + + Set getMetricTags(); } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java index ceb2fad56..098e63945 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDO.java @@ -3,116 +3,247 @@ package com.tencent.supersonic.semantic.model.domain.dataobject; import java.util.Date; public class MetricDO { - + /** + * + */ private Long id; + /** + * 主体域ID + */ private Long modelId; + /** + * 指标名称 + */ private String name; + /** + * 字段名称 + */ private String bizName; + /** + * 描述 + */ private String description; + /** + * 指标状态,0正常,1下架,2删除 + */ private Integer status; + /** + * 敏感级别 + */ private Integer sensitiveLevel; + /** + * 指标类型 proxy,expr + */ private String type; + /** + * 创建时间 + */ private Date createdAt; + /** + * 创建人 + */ private String createdBy; + /** + * 更新时间 + */ private Date updatedAt; + /** + * 更新人 + */ private String updatedBy; + /** + * 数值类型 + */ private String dataFormatType; + /** + * 数值类型参数 + */ private String dataFormat; + /** + * + */ private String alias; + /** + * + */ + private String tags; + + /** + * 类型参数 + */ private String typeParams; - + /** + * + * @return id + */ public Long getId() { return id; } + /** + * + * @param id + */ public void setId(Long id) { this.id = id; } + /** + * 主体域ID + * @return model_id 主体域ID + */ public Long getModelId() { return modelId; } + /** + * 主体域ID + * @param modelId 主体域ID + */ public void setModelId(Long modelId) { this.modelId = modelId; } + /** + * 指标名称 + * @return name 指标名称 + */ public String getName() { return name; } + /** + * 指标名称 + * @param name 指标名称 + */ public void setName(String name) { this.name = name == null ? null : name.trim(); } + /** + * 字段名称 + * @return biz_name 字段名称 + */ public String getBizName() { return bizName; } + /** + * 字段名称 + * @param bizName 字段名称 + */ public void setBizName(String bizName) { this.bizName = bizName == null ? null : bizName.trim(); } + /** + * 描述 + * @return description 描述 + */ public String getDescription() { return description; } + /** + * 描述 + * @param description 描述 + */ public void setDescription(String description) { this.description = description == null ? null : description.trim(); } + /** + * 指标状态,0正常,1下架,2删除 + * @return status 指标状态,0正常,1下架,2删除 + */ public Integer getStatus() { return status; } + /** + * 指标状态,0正常,1下架,2删除 + * @param status 指标状态,0正常,1下架,2删除 + */ public void setStatus(Integer status) { this.status = status; } + /** + * 敏感级别 + * @return sensitive_level 敏感级别 + */ public Integer getSensitiveLevel() { return sensitiveLevel; } + /** + * 敏感级别 + * @param sensitiveLevel 敏感级别 + */ public void setSensitiveLevel(Integer sensitiveLevel) { this.sensitiveLevel = sensitiveLevel; } + /** + * 指标类型 proxy,expr + * @return type 指标类型 proxy,expr + */ public String getType() { return type; } + /** + * 指标类型 proxy,expr + * @param type 指标类型 proxy,expr + */ public void setType(String type) { this.type = type == null ? null : type.trim(); } + /** + * 创建时间 + * @return created_at 创建时间 + */ public Date getCreatedAt() { return createdAt; } + /** + * 创建时间 + * @param createdAt 创建时间 + */ public void setCreatedAt(Date createdAt) { this.createdAt = createdAt; } + /** + * 创建人 + * @return created_by 创建人 + */ public String getCreatedBy() { return createdBy; } + /** + * 创建人 + * @param createdBy 创建人 + */ public void setCreatedBy(String createdBy) { this.createdBy = createdBy == null ? null : createdBy.trim(); } @@ -182,21 +313,37 @@ public class MetricDO { } /** - * - * @return alias + * + * @return alias */ public String getAlias() { return alias; } /** - * - * @param alias + * + * @param alias */ public void setAlias(String alias) { this.alias = alias == null ? null : alias.trim(); } + /** + * + * @return tags + */ + public String getTags() { + return tags; + } + + /** + * + * @param tags + */ + public void setTags(String tags) { + this.tags = tags == null ? null : tags.trim(); + } + /** * 类型参数 * @return type_params 类型参数 @@ -212,4 +359,4 @@ public class MetricDO { public void setTypeParams(String typeParams) { this.typeParams = typeParams == null ? null : typeParams.trim(); } -} +} \ No newline at end of file diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java index a74ee01eb..d57855cfe 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/dataobject/MetricDOExample.java @@ -31,6 +31,7 @@ public class MetricDOExample { protected Integer limitEnd; /** + * * @mbg.generated */ public MetricDOExample() { @@ -38,6 +39,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setOrderByClause(String orderByClause) { @@ -45,6 +47,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public String getOrderByClause() { @@ -52,6 +55,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setDistinct(boolean distinct) { @@ -59,6 +63,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public boolean isDistinct() { @@ -66,6 +71,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public List getOredCriteria() { @@ -73,6 +79,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void or(Criteria criteria) { @@ -80,6 +87,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public Criteria or() { @@ -89,6 +97,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public Criteria createCriteria() { @@ -100,6 +109,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ protected Criteria createCriteriaInternal() { @@ -108,6 +118,7 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void clear() { @@ -117,13 +128,15 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setLimitStart(Integer limitStart) { - this.limitStart = limitStart; + this.limitStart=limitStart; } /** + * * @mbg.generated */ public Integer getLimitStart() { @@ -131,13 +144,15 @@ public class MetricDOExample { } /** + * * @mbg.generated */ public void setLimitEnd(Integer limitEnd) { - this.limitEnd = limitEnd; + this.limitEnd=limitEnd; } /** + * * @mbg.generated */ public Integer getLimitEnd() { @@ -1177,6 +1192,76 @@ public class MetricDOExample { addCriterion("alias not between", value1, value2, "alias"); return (Criteria) this; } + + public Criteria andTagsIsNull() { + addCriterion("tags is null"); + return (Criteria) this; + } + + public Criteria andTagsIsNotNull() { + addCriterion("tags is not null"); + return (Criteria) this; + } + + public Criteria andTagsEqualTo(String value) { + addCriterion("tags =", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotEqualTo(String value) { + addCriterion("tags <>", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsGreaterThan(String value) { + addCriterion("tags >", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsGreaterThanOrEqualTo(String value) { + addCriterion("tags >=", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsLessThan(String value) { + addCriterion("tags <", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsLessThanOrEqualTo(String value) { + addCriterion("tags <=", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsLike(String value) { + addCriterion("tags like", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotLike(String value) { + addCriterion("tags not like", value, "tags"); + return (Criteria) this; + } + + public Criteria andTagsIn(List values) { + addCriterion("tags in", values, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotIn(List values) { + addCriterion("tags not in", values, "tags"); + return (Criteria) this; + } + + public Criteria andTagsBetween(String value1, String value2) { + addCriterion("tags between", value1, value2, "tags"); + return (Criteria) this; + } + + public Criteria andTagsNotBetween(String value1, String value2) { + addCriterion("tags not between", value1, value2, "tags"); + return (Criteria) this; + } } /** @@ -1209,6 +1294,38 @@ public class MetricDOExample { private String typeHandler; + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + protected Criterion(String condition) { super(); this.condition = condition; @@ -1244,37 +1361,5 @@ public class MetricDOExample { protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } - - public String getCondition() { - return condition; - } - - public Object getValue() { - return value; - } - - public Object getSecondValue() { - return secondValue; - } - - public boolean isNoValue() { - return noValue; - } - - public boolean isSingleValue() { - return singleValue; - } - - public boolean isBetweenValue() { - return betweenValue; - } - - public boolean isListValue() { - return listValue; - } - - public String getTypeHandler() { - return typeHandler; - } } -} +} \ No newline at end of file diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java index 771915de1..cfdc4917d 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/Metric.java @@ -1,10 +1,12 @@ package com.tencent.supersonic.semantic.model.domain.pojo; - import com.tencent.supersonic.common.pojo.DataFormat; import com.tencent.supersonic.semantic.api.model.pojo.MetricTypeParams; import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem; import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; +import java.util.List; @Data public class Metric extends SchemaItem { @@ -23,4 +25,13 @@ public class Metric extends SchemaItem { private String alias; + private List tags; + + public String getTag() { + if (CollectionUtils.isEmpty(tags)) { + return ""; + } + return StringUtils.join(tags, ","); + } + } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java index 9b6513d3a..5573c7b87 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/MetricConverter.java @@ -37,6 +37,7 @@ public class MetricConverter { if (metric.getDataFormat() != null) { metricDO.setDataFormat(JSONObject.toJSONString(metric.getDataFormat())); } + metricDO.setTags(metric.getTag()); return metricDO; } @@ -51,27 +52,23 @@ public class MetricConverter { BeanUtils.copyProperties(metric, metricDO); metricDO.setTypeParams(JSONObject.toJSONString(metric.getTypeParams())); metricDO.setDataFormat(JSONObject.toJSONString(metric.getDataFormat())); + metricDO.setTags(metric.getTag()); return metricDO; } - public static MetricResp convert2MetricDesc(MetricDO metricDO, Map modelMap) { - MetricResp metricDesc = new MetricResp(); - BeanUtils.copyProperties(metricDO, metricDesc); - metricDesc.setTypeParams(JSONObject.parseObject(metricDO.getTypeParams(), MetricTypeParams.class)); - metricDesc.setDataFormat(JSONObject.parseObject(metricDO.getDataFormat(), DataFormat.class)); + public static MetricResp convert2MetricResp(MetricDO metricDO, Map modelMap) { + MetricResp metricResp = new MetricResp(); + BeanUtils.copyProperties(metricDO, metricResp); + metricResp.setTypeParams(JSONObject.parseObject(metricDO.getTypeParams(), MetricTypeParams.class)); + metricResp.setDataFormat(JSONObject.parseObject(metricDO.getDataFormat(), DataFormat.class)); ModelResp modelResp = modelMap.get(metricDO.getModelId()); if (modelResp != null) { - metricDesc.setModelName(modelResp.getName()); + metricResp.setModelName(modelResp.getName()); + metricResp.setDomainId(modelResp.getDomainId()); } - return metricDesc; - } - - public static Metric convert2Metric(MetricDO metricDO) { - Metric metric = new Metric(); - BeanUtils.copyProperties(metricDO, metric); - metric.setTypeParams(JSONObject.parseObject(metricDO.getTypeParams(), MetricTypeParams.class)); - return metric; + metricResp.setTag(metricDO.getTags()); + return metricResp; } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java index 99a164695..d72485009 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/rest/MetricController.java @@ -9,6 +9,7 @@ import com.tencent.supersonic.semantic.api.model.request.PageMetricReq; import com.tencent.supersonic.semantic.api.model.response.MetricResp; import com.tencent.supersonic.semantic.model.domain.MetricService; import java.util.List; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -90,4 +91,9 @@ public class MetricController { } + @GetMapping("/getMetricTags") + public Set getMetricTags() { + return metricService.getMetricTags(); + } + } diff --git a/semantic/model/src/main/resources/mapper/MetricDOMapper.xml b/semantic/model/src/main/resources/mapper/MetricDOMapper.xml index 37f09c2b5..2d20f9ee8 100644 --- a/semantic/model/src/main/resources/mapper/MetricDOMapper.xml +++ b/semantic/model/src/main/resources/mapper/MetricDOMapper.xml @@ -17,6 +17,7 @@ + @@ -52,7 +53,7 @@ id, model_id, name, biz_name, description, status, sensitive_level, type, created_at, - created_by, updated_at, updated_by, data_format_type, data_format, alias + created_by, updated_at, updated_by, data_format_type, data_format, alias, tags type_params @@ -108,13 +109,13 @@ sensitive_level, type, created_at, created_by, updated_at, updated_by, data_format_type, data_format, alias, - type_params) + tags, type_params) values (#{id,jdbcType=BIGINT}, #{modelId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{bizName,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{sensitiveLevel,jdbcType=INTEGER}, #{type,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, #{updatedAt,jdbcType=TIMESTAMP}, #{updatedBy,jdbcType=VARCHAR}, #{dataFormatType,jdbcType=VARCHAR}, #{dataFormat,jdbcType=VARCHAR}, #{alias,jdbcType=VARCHAR}, - #{typeParams,jdbcType=LONGVARCHAR}) + #{tags,jdbcType=VARCHAR}, #{typeParams,jdbcType=LONGVARCHAR}) insert into s2_metric @@ -164,6 +165,9 @@ alias, + + tags, + type_params, @@ -214,6 +218,9 @@ #{alias,jdbcType=VARCHAR}, + + #{tags,jdbcType=VARCHAR}, + #{typeParams,jdbcType=LONGVARCHAR}, @@ -270,6 +277,9 @@ alias = #{alias,jdbcType=VARCHAR}, + + tags = #{tags,jdbcType=VARCHAR}, + type_params = #{typeParams,jdbcType=LONGVARCHAR}, @@ -292,6 +302,7 @@ data_format_type = #{dataFormatType,jdbcType=VARCHAR}, data_format = #{dataFormat,jdbcType=VARCHAR}, alias = #{alias,jdbcType=VARCHAR}, + tags = #{tags,jdbcType=VARCHAR}, type_params = #{typeParams,jdbcType=LONGVARCHAR} where id = #{id,jdbcType=BIGINT} @@ -310,7 +321,8 @@ updated_by = #{updatedBy,jdbcType=VARCHAR}, data_format_type = #{dataFormatType,jdbcType=VARCHAR}, data_format = #{dataFormat,jdbcType=VARCHAR}, - alias = #{alias,jdbcType=VARCHAR} + alias = #{alias,jdbcType=VARCHAR}, + tags = #{tags,jdbcType=VARCHAR} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml b/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml index 67db20d9c..8546d856b 100644 --- a/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml +++ b/semantic/model/src/main/resources/mapper/custom/MetricDOCustomMapper.xml @@ -2,22 +2,26 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + @@ -51,12 +55,11 @@ - id - , model_id, name, biz_name, description, type, created_at, created_by, updated_at, - updated_by + id, model_id, name, biz_name, description, status, sensitive_level, type, created_at, + created_by, updated_at, updated_by, data_format_type, data_format, alias, tags - typeParams + type_params @@ -108,7 +111,8 @@ and ( id like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or biz_name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or - description like CONCAT('%',#{key , jdbcType=VARCHAR},'%') ) + description like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or + tags like CONCAT('%',#{key , jdbcType=VARCHAR},'%') ) and id like CONCAT('%',#{id , jdbcType=VARCHAR},'%')