From 5d114180ae7ad2baf9111cbde200b4ea59a4945f Mon Sep 17 00:00:00 2001 From: wangshaoping Date: Tue, 9 Sep 2025 13:24:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=A1=86=E6=9E=B6=E5=8F=91?= =?UTF-8?q?=E5=B8=83:=208.2.38=20=20=201.=20=E6=94=AF=E6=8C=81=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E7=BB=93=E6=9E=84=E6=88=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=97=B6=E5=8F=AF=E4=BB=A5=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=BF=87=E6=BB=A4=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前端核心发布: 8.2.131 1. 解决顶部代办无法正常打开,采用 进行封装 --- .../src/components/index.ts | 26 ++++----- .../src/platform/layout/sub-layout/Topper.vue | 8 +-- .../platform/core/i18n/words_tw_CN.properties | 2 +- .../platform/core/i18n/words_zh_CN.properties | 2 +- .../src/views/backend/ExportLiquibase.vue | 28 +++++++++- .../views/backend/ExportLiquibaseSchema.vue | 29 +++++++++- .../JdbcMetaDataLoaderWebController.java | 35 +++++++++--- .../service/JdbcMetaDataLoaderService.java | 1 + .../impl/JdbcMetaDataLoaderServiceImpl.java | 53 ++++++++++++++++--- 9 files changed, 149 insertions(+), 35 deletions(-) diff --git a/io.sc.engine.mv.frontend/src/components/index.ts b/io.sc.engine.mv.frontend/src/components/index.ts index 504e0b8f..0253b8a6 100644 --- a/io.sc.engine.mv.frontend/src/components/index.ts +++ b/io.sc.engine.mv.frontend/src/components/index.ts @@ -14,18 +14,18 @@ import component_engine_mv_config_scale from '@/views/config/scale.vue'; import component_engine_mv_config_dataExtractor from '@/views/config/dataExtractor.vue'; import component_engine_mv_config_executor from '@/views/config/executor.vue'; -const localComponents = { - 'component.engine.mv.result': component_engine_mv_result, - 'component.engine.mv.sample': component_engine_mv_sample, - 'component.engine.mv.config.cutOffPoint': component_engine_mv_config_cutOffPoint, - 'component.engine.mv.config.threshold': component_engine_mv_config_threshold, - 'component.engine.mv.config.binomial': component_engine_mv_config_binomial, - 'component.engine.mv.config.chiSquare': component_engine_mv_config_chiSquare, - 'component.engine.mv.config.model': component_engine_mv_config_model, - 'component.engine.mv.config.distribution': component_engine_mv_config_distribution, - 'component.engine.mv.config.scale': component_engine_mv_config_scale, - 'component.engine.mv.config.dataExtractor': component_engine_mv_config_dataExtractor, - 'component.engine.mv.config.executor': component_engine_mv_config_executor, -}; +const localComponents = { +'component.engine.mv.result': component_engine_mv_result, +'component.engine.mv.sample': component_engine_mv_sample, +'component.engine.mv.config.cutOffPoint': component_engine_mv_config_cutOffPoint, +'component.engine.mv.config.threshold': component_engine_mv_config_threshold, +'component.engine.mv.config.binomial': component_engine_mv_config_binomial, +'component.engine.mv.config.chiSquare': component_engine_mv_config_chiSquare, +'component.engine.mv.config.model': component_engine_mv_config_model, +'component.engine.mv.config.distribution': component_engine_mv_config_distribution, +'component.engine.mv.config.scale': component_engine_mv_config_scale, +'component.engine.mv.config.dataExtractor': component_engine_mv_config_dataExtractor, +'component.engine.mv.config.executor': component_engine_mv_config_executor, +} export default localComponents; diff --git a/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue b/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue index 265c9bbc..c270a44e 100644 --- a/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue +++ b/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue @@ -253,9 +253,11 @@ -
- -
+ +
+ +
+
diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties index f367f7cb..eb631605 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties @@ -271,4 +271,4 @@ async=\u7570\u6B65 valueScale=\u503C\u7CBE\u5EA6 scale=\u7CBE\u5EA6 clean=\u6E05\u9664 -remarks=\u5907\u6CE8 \ No newline at end of file +remarks=\u5099\u8A3B \ No newline at end of file diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties index af04072c..e0e345ec 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties @@ -271,4 +271,4 @@ async=\u5F02\u6B65 valueScale=\u503C\u7CBE\u5EA6 scale=\u7CBE\u5EA6 clean=\u6E05\u9664 -remarks=\u5099\u8A3B \ No newline at end of file +remarks=\u5907\u6CE8 \ No newline at end of file diff --git a/io.sc.platform.developer.frontend/src/views/backend/ExportLiquibase.vue b/io.sc.platform.developer.frontend/src/views/backend/ExportLiquibase.vue index 90c95093..1925388e 100644 --- a/io.sc.platform.developer.frontend/src/views/backend/ExportLiquibase.vue +++ b/io.sc.platform.developer.frontend/src/views/backend/ExportLiquibase.vue @@ -55,7 +55,20 @@ pageable: false, sortBy: ['name'], sortNo: true, - toolbarActions: ['refresh'], + toolbarActions: [ + 'query', + 'reset', + 'separator', + { + name: 'reloadTables', + label: $t('reload'), + click: () => { + reloadTables(); + }, + }, + ], + queryFormColsNum: 2, + queryFormFields: [{ name: 'name', label: $t('name'), type: 'w-text' }], primaryKey: 'name', columns: [ { name: 'name', label: $t('name') }, @@ -185,6 +198,19 @@ const exportData = (e) => { }); }; +const reloadTables = () => { + const data = valueReactive; + const config = { + datasource: data.datasource, + catalog: data.catalog, + schema: data.schema, + tables: data.tables, + }; + axios.post(Environment.apiContextPath('/api/jdbc/metadata/reloadTables'), config).then((response) => { + schemaChanged(valueReactive.datasource, valueReactive.catalog, valueReactive.schema); + }); +}; + onMounted(() => { loadDatasource(); }); diff --git a/io.sc.platform.developer.frontend/src/views/backend/ExportLiquibaseSchema.vue b/io.sc.platform.developer.frontend/src/views/backend/ExportLiquibaseSchema.vue index f1558a4f..e971a8e6 100644 --- a/io.sc.platform.developer.frontend/src/views/backend/ExportLiquibaseSchema.vue +++ b/io.sc.platform.developer.frontend/src/views/backend/ExportLiquibaseSchema.vue @@ -37,7 +37,6 @@ label: $t('developer.backend.export.liquibase.tables'), type: 'w-grid-select', multiple: true, - displayValue: 'name', grid: { toolbarConfigure: { noIcon: false }, @@ -55,8 +54,21 @@ pageable: false, sortBy: ['name'], sortNo: true, - toolbarActions: ['refresh'], primaryKey: 'name', + toolbarActions: [ + 'query', + 'reset', + 'separator', + { + name: 'reloadTables', + label: $t('reload'), + click: () => { + reloadTables(); + }, + }, + ], + queryFormColsNum: 2, + queryFormFields: [{ name: 'name', label: $t('name'), type: 'w-text' }], columns: [ { name: 'name', label: $t('name') }, { name: 'remarks', label: $t('remarks') }, @@ -179,6 +191,19 @@ const exportData = (e) => { }); }; +const reloadTables = () => { + const data = valueReactive; + const config = { + datasource: data.datasource, + catalog: data.catalog, + schema: data.schema, + tables: data.tables, + }; + axios.post(Environment.apiContextPath('/api/jdbc/metadata/reloadTables'), config).then((response) => { + schemaChanged(valueReactive.datasource, valueReactive.catalog, valueReactive.schema); + }); +}; + onMounted(() => { loadDatasource(); }); diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/JdbcMetaDataLoaderWebController.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/JdbcMetaDataLoaderWebController.java index db6aacf8..b78a7d04 100644 --- a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/JdbcMetaDataLoaderWebController.java +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/JdbcMetaDataLoaderWebController.java @@ -1,16 +1,18 @@ package io.sc.platform.jdbc.controller; +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.platform.jdbc.meta.support.Catalog; import io.sc.platform.jdbc.meta.support.Schema; import io.sc.platform.jdbc.meta.support.Table; import io.sc.platform.jdbc.service.JdbcMetaDataLoaderService; +import io.sc.platform.util.ObjectMapperUtil; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; +import java.util.Map; @RestController("io.sc.platform.jdbc.controller.JdbcMetaDataLoaderWebController") @RequestMapping("/api/jdbc/metadata") @@ -28,7 +30,28 @@ public class JdbcMetaDataLoaderWebController { } @GetMapping("getTables") - public List getTables(@RequestParam(name="datasource",required = false)String datasource, @RequestParam(name="catalog",required = false)String catalog,@RequestParam(name="schema")String schema) throws Exception { - return jdbcMetaDataLoaderService.getTables(datasource,catalog,schema); + public List
getTables(@RequestParam(name="datasource",required = false)String datasource, @RequestParam(name="catalog",required = false)String catalog,@RequestParam(name="schema",required = false)String schema, @RequestParam(name="criteria", required = false)String criteria) throws Exception { + String tableName =null; + if(StringUtils.hasText(criteria)) { + Map map = ObjectMapperUtil.json().readValue(criteria, new TypeReference>() {}); + tableName =map.get("value"); + } + List
tables =jdbcMetaDataLoaderService.getTables(datasource,catalog,schema); + if(StringUtils.hasText(tableName)){ + List
result =new ArrayList<>(); + for(Table table : tables){ + if(table.getName().contains(tableName)){ + result.add(table); + } + } + return result; + }else{ + return tables; + } + } + + @PostMapping("reloadTables") + public void reloadTables(@RequestParam(name="datasource",required = false)String datasource, @RequestParam(name="catalog",required = false)String catalog,@RequestParam(name="schema",required = false)String schema){ + jdbcMetaDataLoaderService.reloadTables(datasource,catalog,schema); } } diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/JdbcMetaDataLoaderService.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/JdbcMetaDataLoaderService.java index 28067bd2..84ed9fdc 100644 --- a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/JdbcMetaDataLoaderService.java +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/JdbcMetaDataLoaderService.java @@ -11,4 +11,5 @@ public interface JdbcMetaDataLoaderService { public List getCatalogs(String datasourceName) throws Exception; public List getSchemas(String datasourceName,String catalogName) throws Exception; public List
getTables(String datasourceName,String catalogName, String schemaName) throws Exception; + public void reloadTables(String datasourceName,String catalogName,String schemaName); } diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/impl/JdbcMetaDataLoaderServiceImpl.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/impl/JdbcMetaDataLoaderServiceImpl.java index abcc8df1..bd70627d 100644 --- a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/impl/JdbcMetaDataLoaderServiceImpl.java +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/impl/JdbcMetaDataLoaderServiceImpl.java @@ -12,12 +12,15 @@ import org.springframework.util.StringUtils; import javax.sql.DataSource; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Service("io.sc.platform.jdbc.service.impl.JdbcMetaDataLoaderServiceImpl") public class JdbcMetaDataLoaderServiceImpl implements JdbcMetaDataLoaderService { @Autowired DatasourceService datasourceService; @Autowired MetaDataLoader metaDataLoader; + private Map> cache =new HashMap<>(); @Override public List getCatalogs(String datasourceName) throws Exception { @@ -48,16 +51,50 @@ public class JdbcMetaDataLoaderServiceImpl implements JdbcMetaDataLoaderService } @Override - public List
getTables(String datasourceName, String catalogName, String schemaName) throws Exception { - DataSource dataSource =null; - if(StringUtils.hasText(datasourceName)) { - dataSource =datasourceService.getDatasource(datasourceName); + public synchronized List
getTables(String datasourceName, String catalogName, String schemaName) throws Exception { + String schemaId =getSchemaId(datasourceName,catalogName,schemaName); + List
tables =cache.get(schemaId); + if(tables==null || tables.isEmpty()) { + DataSource dataSource = null; + if (StringUtils.hasText(datasourceName)) { + dataSource = datasourceService.getDatasource(datasourceName); + } else { + dataSource = datasourceService.getDefaultDatasource(); + } + if (dataSource != null) { + tables =metaDataLoader.getTables(dataSource, catalogName, schemaName); + cache.put(schemaId,tables); + return tables; + } + return Collections.emptyList(); }else{ - dataSource =datasourceService.getDefaultDatasource(); + return tables; } - if(dataSource!=null){ - return metaDataLoader.getTables(dataSource,catalogName,schemaName); + } + + @Override + public void reloadTables(String datasourceName,String catalogName,String schemaName) { + String schemaId =getSchemaId(datasourceName,catalogName,schemaName); + List
tables =cache.get(schemaId); + if(tables!=null && !tables.isEmpty()) { + tables.clear(); } - return Collections.emptyList(); } + + private String getSchemaId(String datasourceName, String catalogName, String schemaName){ + StringBuilder sb =new StringBuilder("/"); + if(StringUtils.hasText(datasourceName)){ + sb.append(datasourceName.trim()); + } + sb.append("/"); + if(StringUtils.hasText(catalogName)){ + sb.append(catalogName.trim()); + } + sb.append("/"); + if(StringUtils.hasText(schemaName)){ + sb.append(schemaName.trim()); + } + return sb.toString(); + } + }