From ea0867a3b46a2d7c77027d2b0f103219c215b29b Mon Sep 17 00:00:00 2001 From: ulleo Date: Fri, 15 Nov 2024 18:42:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(X-Pack):=20=E6=95=B0=E6=8D=AE=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5=E6=8F=92=E4=BB=B6=E5=8C=96=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/provider/CalciteProvider.java | 22 ++++- .../visualized/data/datasource/index.vue | 6 ++ .../xpack/component/XpackComponentApi.java | 4 + sdk/extensions/extensions-datafilling/pom.xml | 6 ++ .../datafilling/api/DfPluginManageApi.java | 9 +++ .../factory/ExtDDLProviderFactory.java | 49 +++++++++-- .../datafilling/plugin/DataFillingPlugin.java | 37 +++++++++ .../datafilling/provider/ExtDDLProvider.java | 2 - .../datafilling/utils/BeanUtils.java | 81 +++++++++++++++++++ .../datafilling/vo/XpackPluginsDfVO.java | 23 ++++++ 10 files changed, 231 insertions(+), 8 deletions(-) create mode 100644 sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/api/DfPluginManageApi.java create mode 100644 sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/plugin/DataFillingPlugin.java create mode 100644 sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/utils/BeanUtils.java create mode 100644 sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/vo/XpackPluginsDfVO.java diff --git a/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java b/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java index 700350015a..2024851bde 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java @@ -1057,7 +1057,27 @@ public class CalciteProvider extends Provider { if (StringUtils.isEmpty(configuration.getSchema())) { DEException.throwException(Translator.get("i18n_schema_is_empty")); } - sql = String.format("SELECT\n" + " a.attname AS ColumnName,\n" + " t.typname,\n" + " b.description AS ColumnDescription,\n" + " 0\n" + "FROM\n" + " pg_class c\n" + " JOIN pg_attribute a ON a.attrelid = c.oid\n" + " LEFT JOIN pg_description b ON a.attrelid = b.objoid AND a.attnum = b.objsubid\n" + " JOIN pg_type t ON a.atttypid = t.oid\n" + "where\n" + " \tc.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = '%s') \n" + " AND c.relname = '%s'\n" + " AND a.attnum > 0\n" + " AND NOT a.attisdropped\n" + "ORDER BY\n" + " a.attnum;", configuration.getSchema(), datasourceRequest.getTable()); + sql = String.format("SELECT\n" + + " a.attname AS ColumnName,\n" + + " t.typname,\n" + + " b.description AS ColumnDescription,\n" + + " CASE\n" + + " WHEN d.indisprimary THEN 1\n" + + " ELSE 0\n" + + " END\n" + + "FROM\n" + + " pg_class c\n" + + " JOIN pg_attribute a ON a.attrelid = c.oid\n" + + " LEFT JOIN pg_description b ON a.attrelid = b.objoid AND a.attnum = b.objsubid\n" + + " JOIN pg_type t ON a.atttypid = t.oid\n" + + " LEFT JOIN pg_index d ON d.indrelid = a.attrelid AND d.indisprimary AND a.attnum = ANY(d.indkey)\n" + + "where\n" + + " c.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = '%s')\n" + + " AND c.relname = '%s'\n" + + " AND a.attnum > 0\n" + + " AND NOT a.attisdropped\n" + + "ORDER BY\n" + + " a.attnum;", configuration.getSchema(), datasourceRequest.getTable()); break; case redshift: configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), CK.class); diff --git a/core/core-frontend/src/views/visualized/data/datasource/index.vue b/core/core-frontend/src/views/visualized/data/datasource/index.vue index 6eda7fa541..2a4935d5c2 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/index.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/index.vue @@ -1582,6 +1582,12 @@ const getMenuList = (val: boolean) => { + + +