From 7b27114fcfe8ad025d1ead1033e0d3332832207b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=98=89=E8=B1=AA?= <42510293+ziyujiahao@users.noreply.github.com> Date: Fri, 17 Oct 2025 16:06:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=AA=E8=A1=A8=E6=9D=BF=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=97=AE=E6=95=B0=20(#17216)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/ext/mapper/ExtChartViewMapper.java | 27 ++++ .../dataset/manage/DatasetSQLBotManage.java | 18 ++- .../dataset/server/DatasetSQLBotServer.java | 10 +- core/core-frontend/public/api.png | Bin 0 -> 9301 bytes core/core-frontend/src/api/aiSqlBot.ts | 3 + core/core-frontend/src/locales/en.ts | 1 + core/core-frontend/src/locales/tw.ts | 1 + core/core-frontend/src/locales/zh-CN.ts | 1 + core/core-frontend/src/pages/panel/main.ts | 1 - .../src/views/dashboard/index.vue | 2 + .../src/views/sqlbot/Inactivate.vue | 63 +++++++++ .../src/views/sqlbot/SQDatasetSelect.vue | 77 ++++++++++ .../src/views/sqlbot/assistant.vue | 131 ++++++++++++++++++ core/core-frontend/src/views/sqlbot/index.vue | 1 + .../api/dataset/DataAssistantApi.java | 7 +- .../api/dataset/vo/DataSQLBotDatasetVO.java | 18 +++ 16 files changed, 356 insertions(+), 5 deletions(-) create mode 100644 core/core-frontend/public/api.png create mode 100644 core/core-frontend/src/api/aiSqlBot.ts create mode 100644 core/core-frontend/src/views/sqlbot/Inactivate.vue create mode 100644 core/core-frontend/src/views/sqlbot/SQDatasetSelect.vue create mode 100644 core/core-frontend/src/views/sqlbot/assistant.vue create mode 100644 sdk/api/api-base/src/main/java/io/dataease/api/dataset/vo/DataSQLBotDatasetVO.java diff --git a/core/core-backend/src/main/java/io/dataease/chart/dao/ext/mapper/ExtChartViewMapper.java b/core/core-backend/src/main/java/io/dataease/chart/dao/ext/mapper/ExtChartViewMapper.java index 56c0f9f08c..1c907079c1 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/dao/ext/mapper/ExtChartViewMapper.java +++ b/core/core-backend/src/main/java/io/dataease/chart/dao/ext/mapper/ExtChartViewMapper.java @@ -1,6 +1,7 @@ package io.dataease.chart.dao.ext.mapper; import io.dataease.api.chart.vo.ViewSelectorVO; +import io.dataease.api.dataset.vo.DataSQLBotDatasetVO; import io.dataease.chart.dao.auto.entity.CoreChartView; import io.dataease.chart.dao.ext.entity.ChartBasePO; import io.dataease.extensions.view.dto.ChartViewDTO; @@ -35,4 +36,30 @@ public interface ExtChartViewMapper { LIMIT 1 """) ChartViewDTO findChartViewAround(@Param("viewId") String viewId); + + + @Select(""" + select DISTINCT table_id from core_chart_view_snapshot where scene_id=#{dvId} + """) + List findDatasetGroupIdByDvId(@Param("dvId") String dvId); + + + @Select(""" + SELECT + DISTINCT + sdg.id AS table_id, + sdg.NAME AS table_name, + cd.id AS ds_id, + cd.NAME AS ds_name\s + FROM + core_dataset_table sdt + INNER JOIN core_datasource cd ON sdt.datasource_id = cd.id + INNER JOIN core_dataset_group sdg ON sdt.dataset_group_id = sdg.id + INNER JOIN snapshot_core_chart_view sccv on sccv.table_id = sdt.dataset_group_id\s + WHERE + sccv.scene_id = #{dvId} + """) + List findDataSQLBotDatasetDvId(@Param("dvId") String dvId); + + } diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLBotManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLBotManage.java index c5965fd2b5..9e334eb8e3 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLBotManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLBotManage.java @@ -6,12 +6,15 @@ import io.dataease.api.dataset.union.DatasetGroupInfoDTO; import io.dataease.api.dataset.union.DatasetTableInfoDTO; import io.dataease.api.dataset.union.UnionDTO; import io.dataease.api.dataset.vo.DataSQLBotAssistantVO; +import io.dataease.api.dataset.vo.DataSQLBotDatasetVO; import io.dataease.api.dataset.vo.SQLBotAssistanTable; import io.dataease.api.dataset.vo.SQLBotAssistantField; import io.dataease.api.permissions.dataset.api.ColumnPermissionsApi; import io.dataease.api.permissions.dataset.dto.DataSetColumnPermissionsDTO; import io.dataease.api.permissions.dataset.dto.DataSetRowPermissionsTreeDTO; import io.dataease.auth.bo.TokenUserBO; +import io.dataease.chart.dao.auto.mapper.CoreChartViewMapper; +import io.dataease.chart.dao.ext.mapper.ExtChartViewMapper; import io.dataease.commons.utils.EncryptUtils; import io.dataease.constant.ColumnPermissionConstants; import io.dataease.dataset.dao.auto.entity.CoreDatasetGroup; @@ -68,6 +71,9 @@ public class DatasetSQLBotManage { @Resource private DataSetAssistantMapper dataSetAssistantMapper; + @Resource + private ExtChartViewMapper extChartViewMapper; + @Resource private EngineManage engineManage; @@ -147,8 +153,12 @@ public class DatasetSQLBotManage { return datasetRowPermissions.stream().collect(Collectors.groupingBy(DataSetRowPermissionsTreeDTO::getDatasetId)); } + public List getDatasetList(String dvInfo){ + return extChartViewMapper.findDataSQLBotDatasetDvId(dvInfo); + } - public List getDatasourceList(Long dsId, Long datasetId) { + + public List getDatasourceList(Long dsId, Long datasetId, String dvInfo) { TokenUserBO user = Objects.requireNonNull(AuthUtils.getUser()); Long oid = user.getDefaultOid(); Long uid = user.getUserId(); @@ -165,6 +175,12 @@ public class DatasetSQLBotManage { if (ObjectUtils.isNotEmpty(dsId)) { queryWrapper.eq("cd.id", dsId); } + if(ObjectUtils.isNotEmpty(dvInfo)){ + List targetDsGroupIds = extChartViewMapper.findDatasetGroupIdByDvId(dvInfo); + if(CollectionUtils.isNotEmpty(targetDsGroupIds)){ + queryWrapper.in("cdg.id", targetDsGroupIds); + } + } if (ObjectUtils.isEmpty(model)) { if (!isAdmin) { return null; diff --git a/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetSQLBotServer.java b/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetSQLBotServer.java index e3ef3b481a..df069e8ce1 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetSQLBotServer.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetSQLBotServer.java @@ -2,6 +2,7 @@ package io.dataease.dataset.server; import io.dataease.api.dataset.DataAssistantApi; import io.dataease.api.dataset.vo.DataSQLBotAssistantVO; +import io.dataease.api.dataset.vo.DataSQLBotDatasetVO; import io.dataease.dataset.manage.DatasetSQLBotManage; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,7 +17,12 @@ public class DatasetSQLBotServer implements DataAssistantApi { @Resource private DatasetSQLBotManage datasetSQLBotManage; @Override - public List getDatasourceList(Long dsId, Long datasetId) { - return datasetSQLBotManage.getDatasourceList(dsId, datasetId); + public List getDatasourceList(Long dsId, Long datasetId, String dvInfo) { + return datasetSQLBotManage.getDatasourceList(dsId, datasetId,dvInfo); + } + + @Override + public List getDatasetList(String dvInfo) { + return datasetSQLBotManage.getDatasetList(dvInfo); } } diff --git a/core/core-frontend/public/api.png b/core/core-frontend/public/api.png new file mode 100644 index 0000000000000000000000000000000000000000..f4844669a0e4ecd277f24cc2ca2ce1b97555a3ce GIT binary patch literal 9301 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 F{Xg6DYG?oe literal 0 HcmV?d00001 diff --git a/core/core-frontend/src/api/aiSqlBot.ts b/core/core-frontend/src/api/aiSqlBot.ts new file mode 100644 index 0000000000..f151730cfc --- /dev/null +++ b/core/core-frontend/src/api/aiSqlBot.ts @@ -0,0 +1,3 @@ +import request from '@/config/axios' + +export const findDvSqlBotDataset = dvInfo => request.get({ url: '/sqlbot/dataset/' + dvInfo }) diff --git a/core/core-frontend/src/locales/en.ts b/core/core-frontend/src/locales/en.ts index 839832be30..473b8c111c 100644 --- a/core/core-frontend/src/locales/en.ts +++ b/core/core-frontend/src/locales/en.ts @@ -2929,6 +2929,7 @@ export default { column_name: 'Field name' }, visualization: { + cur_sq_dataset: 'Currently selected dataset:', data_match_type: 'Data match type', select_resource: 'Select {0}', change_screen_page: 'Change {0}', diff --git a/core/core-frontend/src/locales/tw.ts b/core/core-frontend/src/locales/tw.ts index 7b7a8159d8..c8440b6283 100644 --- a/core/core-frontend/src/locales/tw.ts +++ b/core/core-frontend/src/locales/tw.ts @@ -2848,6 +2848,7 @@ export default { column_name: '欄位名稱' }, visualization: { + cur_sq_dataset: '當前選擇的數據集:', data_match_type: '資料匹配方式', select_resource: '請選擇{0}', change_screen_page: '更換{0}', diff --git a/core/core-frontend/src/locales/zh-CN.ts b/core/core-frontend/src/locales/zh-CN.ts index 68ee460d32..01c9d3313e 100644 --- a/core/core-frontend/src/locales/zh-CN.ts +++ b/core/core-frontend/src/locales/zh-CN.ts @@ -2857,6 +2857,7 @@ export default { column_name: '字段名称' }, visualization: { + cur_sq_dataset: '当前选择的数据集:', data_match_type: '数据匹配方式', select_resource: '请选择{0}', change_screen_page: '更换{0}', diff --git a/core/core-frontend/src/pages/panel/main.ts b/core/core-frontend/src/pages/panel/main.ts index 1f293fd440..b5ef1ec7a8 100644 --- a/core/core-frontend/src/pages/panel/main.ts +++ b/core/core-frontend/src/pages/panel/main.ts @@ -1,7 +1,6 @@ const suffix = `${import.meta.env.VITE_VERSION}-dataease` const dom = document.querySelector('head') -const cb = dom.appendChild.bind(dom) const formatterUrl = (node: T, prefix: string) => { if (['SCRIPT', 'LINK'].includes(node.nodeName)) { diff --git a/core/core-frontend/src/views/dashboard/index.vue b/core/core-frontend/src/views/dashboard/index.vue index 85db8b458c..aaff76a076 100644 --- a/core/core-frontend/src/views/dashboard/index.vue +++ b/core/core-frontend/src/views/dashboard/index.vue @@ -34,6 +34,7 @@ import eventBus from '@/utils/eventBus' import { useI18n } from '@/hooks/web/useI18n' import DashboardHiddenComponent from '@/components/dashboard/DashboardHiddenComponent.vue' import { recoverToPublished } from '@/api/visualization/dataVisualization' +import SqlAssistant from '@/views/sqlbot/assistant.vue' const embeddedStore = useEmbedded() const { wsCache } = useCache() const canvasCacheOutRef = ref(null) @@ -338,6 +339,7 @@ onUnmounted(() => { :class="{ 'preview-content': editMode === 'preview' }" element-loading-background="rgba(0, 0, 0, 0)" > +
+
+ + + + +
+ + + + + diff --git a/core/core-frontend/src/views/sqlbot/SQDatasetSelect.vue b/core/core-frontend/src/views/sqlbot/SQDatasetSelect.vue new file mode 100644 index 0000000000..3c29c6b8e9 --- /dev/null +++ b/core/core-frontend/src/views/sqlbot/SQDatasetSelect.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/core/core-frontend/src/views/sqlbot/assistant.vue b/core/core-frontend/src/views/sqlbot/assistant.vue new file mode 100644 index 0000000000..f9b404b558 --- /dev/null +++ b/core/core-frontend/src/views/sqlbot/assistant.vue @@ -0,0 +1,131 @@ + + + + + + + diff --git a/core/core-frontend/src/views/sqlbot/index.vue b/core/core-frontend/src/views/sqlbot/index.vue index e363383ed5..ab814146d5 100644 --- a/core/core-frontend/src/views/sqlbot/index.vue +++ b/core/core-frontend/src/views/sqlbot/index.vue @@ -70,6 +70,7 @@ const mountedEmbeddedPage = () => { } const tempTimer = setTimeout(() => { if (window['sqlbot_embedded_handler']) { + console.log('===test===111') window['sqlbot_embedded_handler'].mounted('#dataease-v2-embedded-sqlbot', { embeddedId: state.id, online: true, diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/dataset/DataAssistantApi.java b/sdk/api/api-base/src/main/java/io/dataease/api/dataset/DataAssistantApi.java index fb171424b3..0484db6883 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/dataset/DataAssistantApi.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/dataset/DataAssistantApi.java @@ -1,12 +1,17 @@ package io.dataease.api.dataset; import io.dataease.api.dataset.vo.DataSQLBotAssistantVO; +import io.dataease.api.dataset.vo.DataSQLBotDatasetVO; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; public interface DataAssistantApi { @GetMapping("/datasource") - List getDatasourceList(@RequestParam(required = false) Long dsId, @RequestParam(required = false) Long datasetId); + List getDatasourceList(@RequestParam(required = false) Long dsId, @RequestParam(required = false) Long datasetId, @RequestParam(required = false) String dvInfo); + + @GetMapping("/dataset/{dvInfo}") + List getDatasetList(@PathVariable String dvInfo); } diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/dataset/vo/DataSQLBotDatasetVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/dataset/vo/DataSQLBotDatasetVO.java new file mode 100644 index 0000000000..9a60229b3d --- /dev/null +++ b/sdk/api/api-base/src/main/java/io/dataease/api/dataset/vo/DataSQLBotDatasetVO.java @@ -0,0 +1,18 @@ +package io.dataease.api.dataset.vo; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class DataSQLBotDatasetVO implements Serializable { + + private Long tableId; + + private String tableName; + + private String dsId; + + private String dsName; + +}