From e0955c0618cd454c56368411c87bda6c8cb7c418 Mon Sep 17 00:00:00 2001 From: LXW <1264174498@qq.com> Date: Fri, 22 Dec 2023 19:24:57 +0800 Subject: [PATCH] (improvement)(chat) Replace the table name in correct sql with a string concatenated by the model name in FromCorrector (#566) Co-authored-by: jolunoluo --- .../chat/corrector/FromCorrector.java | 4 +- .../headless/api/model/pojo/Item.java | 4 ++ .../model/application/AppServiceImpl.java | 41 +++++++++++++++---- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FromCorrector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FromCorrector.java index df872e222..77c14fe56 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FromCorrector.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/FromCorrector.java @@ -13,7 +13,9 @@ public class FromCorrector extends BaseSemanticCorrector { @Override public void doCorrect(QueryReq queryReq, SemanticParseInfo semanticParseInfo) { String modelName = semanticParseInfo.getModel().getName(); - SqlParserReplaceHelper.replaceTable(semanticParseInfo.getSqlInfo().getCorrectS2SQL(), modelName); + String correctSql = SqlParserReplaceHelper + .replaceTable(semanticParseInfo.getSqlInfo().getCorrectS2SQL(), modelName); + semanticParseInfo.getSqlInfo().setCorrectS2SQL(correctSql); } } diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/model/pojo/Item.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/model/pojo/Item.java index 86efeff12..64a550ff2 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/model/pojo/Item.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/model/pojo/Item.java @@ -12,6 +12,10 @@ public class Item { private String name; + private String bizName; + + private String createdBy; + private ApiItemType type; private List relateItems = Lists.newArrayList(); diff --git a/headless/model/src/main/java/com/tencent/supersonic/headless/model/application/AppServiceImpl.java b/headless/model/src/main/java/com/tencent/supersonic/headless/model/application/AppServiceImpl.java index fa42f537f..20bd25b52 100644 --- a/headless/model/src/main/java/com/tencent/supersonic/headless/model/application/AppServiceImpl.java +++ b/headless/model/src/main/java/com/tencent/supersonic/headless/model/application/AppServiceImpl.java @@ -29,6 +29,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @@ -138,14 +139,18 @@ public class AppServiceImpl extends ServiceImpl implements App @Override public AppDetailResp getApp(Integer id, User user) { AppDO appDO = getAppDO(id); + Map metricResps = metricService.getMetrics(new MetaFilter()) + .stream().collect(Collectors.toMap(MetricResp::getId, m -> m)); + Map dimensionResps = dimensionService.getDimensions(new MetaFilter()) + .stream().collect(Collectors.toMap(DimensionResp::getId, m -> m)); checkAuth(appDO, user); - return convertDetail(appDO); + return convertDetail(appDO, dimensionResps, metricResps); } @Override public AppDetailResp getApp(Integer id) { AppDO appDO = getAppDO(id); - return convertDetail(appDO); + return convertDetail(appDO, new HashMap<>(), new HashMap<>()); } private AppDO getAppDO(Integer id) { @@ -175,12 +180,7 @@ public class AppServiceImpl extends ServiceImpl implements App AppResp app = new AppResp(); BeanMapper.mapper(appDO, app); AppConfig appConfig = JSONObject.parseObject(appDO.getConfig(), AppConfig.class); - appConfig.getItems().forEach(metricItem -> { - metricItem.setName(metricMap.getOrDefault(metricItem.getId(), new MetricResp()).getName()); - metricItem.getRelateItems().forEach(dimensionItem -> { - dimensionItem.setName(dimensionMap.getOrDefault(dimensionItem.getId(), new DimensionResp()).getName()); - }); - }); + fillItemName(appConfig, dimensionMap, metricMap); app.setConfig(appConfig); app.setAppStatus(AppStatusEnum.fromCode(appDO.getStatus())); app.setHasAdminRes(hasAuth(appDO, user)); @@ -188,13 +188,36 @@ public class AppServiceImpl extends ServiceImpl implements App } private AppDetailResp convertDetail(AppDO appDO) { + return convertDetail(appDO, new HashMap<>(), new HashMap<>()); + } + + private AppDetailResp convertDetail(AppDO appDO, Map dimensionMap, + Map metricMap) { AppDetailResp app = new AppDetailResp(); BeanMapper.mapper(appDO, app); - app.setConfig(JSONObject.parseObject(appDO.getConfig(), AppConfig.class)); + AppConfig appConfig = JSONObject.parseObject(appDO.getConfig(), AppConfig.class); + fillItemName(appConfig, dimensionMap, metricMap); + app.setConfig(appConfig); app.setAppStatus(AppStatusEnum.fromCode(appDO.getStatus())); return app; } + private void fillItemName(AppConfig appConfig, Map dimensionMap, + Map metricMap) { + appConfig.getItems().forEach(metricItem -> { + metricItem.setName(metricMap.getOrDefault(metricItem.getId(), new MetricResp()).getName()); + metricItem.setBizName(metricMap.getOrDefault(metricItem.getId(), new MetricResp()).getBizName()); + metricItem.setCreatedBy(metricMap.getOrDefault(metricItem.getId(), new MetricResp()).getCreatedBy()); + metricItem.getRelateItems().forEach(dimensionItem -> { + dimensionItem.setName(dimensionMap.getOrDefault(dimensionItem.getId(), new DimensionResp()).getName()); + dimensionItem.setBizName(dimensionMap.getOrDefault(dimensionItem.getId(), + new DimensionResp()).getBizName()); + dimensionItem.setCreatedBy(dimensionMap.getOrDefault(dimensionItem.getId(), + new DimensionResp()).getCreatedBy()); + }); + }); + } + private String getUniqueId() { return UUID.randomUUID().toString().replaceAll("_", ""); }