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 0000000000..f4844669a0 Binary files /dev/null and b/core/core-frontend/public/api.png differ 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; + +}