Browse Source

基础框架发布: 8.2.39

1. 数据库表结构和数据导出时,提升选择表的效能

前端核心发布: 8.2.132
  1. 解决首页和工作台我完成的任务排序的问题
main
wangshaoping 2 days ago
parent
commit
de230b68a2
  1. 4
      cips.frontend/package.json
  2. 4
      erm.frontend/package.json
  3. 4
      gradle.properties
  4. 4
      io.sc.engine.mv.frontend/package.json
  5. 26
      io.sc.engine.mv.frontend/src/components/index.ts
  6. 4
      io.sc.engine.rule.frontend/package.json
  7. 86
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/initializer/RateUpdateWorkFlowInitializer.java
  8. 4
      io.sc.engine.st.frontend/package.json
  9. 4
      io.sc.platform.ai.frontend/package.json
  10. 2
      io.sc.platform.core.frontend/package.json
  11. 2
      io.sc.platform.core.frontend/src/platform/views/home/MyFinishedTask.vue
  12. 4
      io.sc.platform.core.frontend/template-project/package.json
  13. 4
      io.sc.platform.developer.doc/package.json
  14. 4
      io.sc.platform.developer.frontend/package.json
  15. 26
      io.sc.platform.developer.frontend/src/views/backend/ExportLiquibase.vue
  16. 26
      io.sc.platform.developer.frontend/src/views/backend/ExportLiquibaseSchema.vue
  17. 2
      io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseDataCsvExporter.java
  18. 9
      io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseSchemaExporter.java
  19. 40
      io.sc.platform.jdbc.schemacrawler/src/main/java/io/sc/platform/jdbc/schemacrawler/MetaDataLoaderImpl.java
  20. 7
      io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/JdbcMetaDataLoaderWebController.java
  21. 10
      io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/meta/MetaDataLoader.java
  22. 1
      io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/JdbcMetaDataLoaderService.java
  23. 53
      io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/impl/JdbcMetaDataLoaderServiceImpl.java
  24. 4
      io.sc.platform.lcdp.frontend/package.json
  25. 4
      io.sc.platform.license.keygen.frontend/package.json
  26. 4
      io.sc.platform.mvc.frontend/package.json
  27. 4
      io.sc.platform.scheduler.manager.frontend/package.json
  28. 4
      io.sc.platform.system.frontend/package.json
  29. 2
      io.sc.platform.system.frontend/src/views/workbench/MyFinishedTask.vue
  30. 4
      io.sc.standard.frontend/package.json
  31. 4
      io.sc.website/package.json
  32. 4
      wra.report.frontend/package.json

4
cips.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "cips.frontend", "name": "cips.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
erm.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "erm.frontend", "name": "erm.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
gradle.properties

@ -37,9 +37,9 @@ application_version=1.0.0
# platform # platform
########################################################### ###########################################################
platform_group=io.sc platform_group=io.sc
platform_version=8.2.37 platform_version=8.2.39
platform_plugin_version=8.2.10 platform_plugin_version=8.2.10
platform_core_frontend_version=8.2.130 platform_core_frontend_version=8.2.132
########################################################### ###########################################################
# dependencies version # dependencies version

4
io.sc.engine.mv.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.engine.mv.frontend", "name": "io.sc.engine.mv.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

26
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_dataExtractor from '@/views/config/dataExtractor.vue';
import component_engine_mv_config_executor from '@/views/config/executor.vue'; import component_engine_mv_config_executor from '@/views/config/executor.vue';
const localComponents = { const localComponents = {
'component.engine.mv.result': component_engine_mv_result, 'component.engine.mv.result': component_engine_mv_result,
'component.engine.mv.sample': component_engine_mv_sample, 'component.engine.mv.sample': component_engine_mv_sample,
'component.engine.mv.config.cutOffPoint': component_engine_mv_config_cutOffPoint, 'component.engine.mv.config.cutOffPoint': component_engine_mv_config_cutOffPoint,
'component.engine.mv.config.threshold': component_engine_mv_config_threshold, 'component.engine.mv.config.threshold': component_engine_mv_config_threshold,
'component.engine.mv.config.binomial': component_engine_mv_config_binomial, 'component.engine.mv.config.binomial': component_engine_mv_config_binomial,
'component.engine.mv.config.chiSquare': component_engine_mv_config_chiSquare, 'component.engine.mv.config.chiSquare': component_engine_mv_config_chiSquare,
'component.engine.mv.config.model': component_engine_mv_config_model, 'component.engine.mv.config.model': component_engine_mv_config_model,
'component.engine.mv.config.distribution': component_engine_mv_config_distribution, 'component.engine.mv.config.distribution': component_engine_mv_config_distribution,
'component.engine.mv.config.scale': component_engine_mv_config_scale, 'component.engine.mv.config.scale': component_engine_mv_config_scale,
'component.engine.mv.config.dataExtractor': component_engine_mv_config_dataExtractor, 'component.engine.mv.config.dataExtractor': component_engine_mv_config_dataExtractor,
'component.engine.mv.config.executor': component_engine_mv_config_executor, 'component.engine.mv.config.executor': component_engine_mv_config_executor,
} };
export default localComponents; export default localComponents;

4
io.sc.engine.rule.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.engine.rule.frontend", "name": "io.sc.engine.rule.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

86
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/initializer/RateUpdateWorkFlowInitializer.java

@ -0,0 +1,86 @@
package io.sc.engine.rule.server.common.initializer;
import io.sc.engine.rule.server.common.service.RuleEngineServerConfigurationService;
import io.sc.platform.core.Environment;
import io.sc.platform.core.initializer.ApplicationInitializer;
import io.sc.platform.core.initializer.ApplicationInitializerExecuteException;
import io.sc.platform.flowable.enums.ProcessStatus;
import io.sc.platform.flowable.jpa.entity.ProcessEntity;
import io.sc.platform.flowable.service.ProcessEntityService;
import io.sc.platform.util.FileUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
public class RateUpdateWorkFlowInitializer implements ApplicationInitializer{
public static final String RRATE_UPDATE_CANCEL_WORKFLOW_CATEGORY ="WORK_FLOW";
public static final String RATE_UPDATE_CANCEL_WORKFLOW_KEY ="RATE_UPDATE_CANCEL_APPROVING";
private static final Logger log =LoggerFactory.getLogger(RateUpdateWorkFlowInitializer.class);
private Boolean isInitialized =null;
private ApplicationContext applicationContext;
private ProcessEntityService processEntityService;
@Override
public void init(ApplicationContext applicationContext) {
this.processEntityService =applicationContext.getBean(ProcessEntityService.class);
this.applicationContext =applicationContext;
}
@Override
public int getOrder() {
return 1200;
}
@Override
public synchronized boolean isInitialized() {
if(isInitialized!=null) {
return isInitialized;
}
List<ProcessEntity> entities =processEntityService.getRepository().findByKey(RATE_UPDATE_CANCEL_WORKFLOW_KEY);
if(entities==null || entities.isEmpty()){
isInitialized =false;
}else {
isInitialized = true;
}
return isInitialized;
}
@Override
public void execute() throws ApplicationInitializerExecuteException {
try {
ProcessEntity entity = new ProcessEntity();
entity.setCategory(RATE_UPDATE_CANCEL_WORKFLOW_KEY);
entity.setKey(RATE_UPDATE_CANCEL_WORKFLOW_KEY);
entity.setName(applicationContext.getMessage(RRATE_UPDATE_CANCEL_WORKFLOW_CATEGORY + "." + RATE_UPDATE_CANCEL_WORKFLOW_KEY, null, Locale.getDefault()));
entity.setStatus(ProcessStatus.RELEASE);
entity.setVersion(1);
entity.setCanClaimTask(false);
entity.setXml(getRateUpdateCancelWorkflowXmlContent());
entity.setBusinessDescriptionSql(
"select\n" +
" CONCAT(CODE_,':',VERSION_) BUSINESS_KEY,\n" +
" '模型发布审批' BUSINESS_TYPE,\n" +
" NAME_ CUST_NO,\n" +
" CONCAT('V',VERSION_) CUST_NAME,\n" +
" NULL PROCESS_STATUS\n" +
"from RE_RESOURCE\n" +
"where CONCAT(CODE_,':',VERSION_) = '${businessKey}'"
);
entity.setTaskHandFrontendModelName("io.sc.engine.rule.frontend");
entity.setTaskHandFrontendComponentName("io.sc.engine.rule.frontend.workflow.ApprovalComponent");
entity = processEntityService.add(entity);
processEntityService.deploy(entity.getId());
}catch (Exception e){
log.error("",e);
throw new ApplicationInitializerExecuteException(e);
}
}
private String getRateUpdateCancelWorkflowXmlContent() throws IOException {
return FileUtil.readString("classpath:/workflow/io/sc/engine/rule/Sample.bpmn", Environment.DEFAULT_CHARSET_NAME);
}
}

4
io.sc.engine.st.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.engine.st.frontend", "name": "io.sc.engine.st.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.ai.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.ai.frontend", "name": "io.sc.platform.ai.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.platform.core.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "platform-core", "name": "platform-core",
"version": "8.2.130", "version": "8.2.132",
"description": "前端核心包,用于快速构建前端的脚手架", "description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件", "//main": "库的主文件",
"main": "dist/platform-core.js", "main": "dist/platform-core.js",

2
io.sc.platform.core.frontend/src/platform/views/home/MyFinishedTask.vue

@ -88,7 +88,7 @@ const changeFirstColMaxWidth = () => {
const refresh = () => { const refresh = () => {
loadingRef.value = true; loadingRef.value = true;
axios axios
.get(Environment.apiContextPath('/api/flowable/process/query/myFinishedTask?page=1&size=10&pageable=true&sortBy=-startTime')) .get(Environment.apiContextPath('/api/flowable/process/query/myFinishedTask?page=1&size=10&pageable=true&sortBy=-endTime'))
.then((response: any) => { .then((response: any) => {
itemsRef.value = response.data.content || []; itemsRef.value = response.data.content || [];
loadingRef.value = false; loadingRef.value = false;

4
io.sc.platform.core.frontend/template-project/package.json

@ -1,6 +1,6 @@
{ {
"name": "platform-core", "name": "platform-core",
"version": "8.2.130", "version": "8.2.132",
"description": "前端核心包,用于快速构建前端的脚手架", "description": "前端核心包,用于快速构建前端的脚手架",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.developer.doc/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.developer.doc", "name": "io.sc.platform.developer.doc",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@ -28,7 +28,7 @@
"vuepress": "2.0.0-rc.15" "vuepress": "2.0.0-rc.15"
}, },
"dependencies": { "dependencies": {
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"vue": "3.5.13", "vue": "3.5.13",
"vue-i18n": "11.0.1" "vue-i18n": "11.0.1"

4
io.sc.platform.developer.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.developer.frontend", "name": "io.sc.platform.developer.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

26
io.sc.platform.developer.frontend/src/views/backend/ExportLiquibase.vue

@ -55,18 +55,7 @@
pageable: false, pageable: false,
sortBy: ['name'], sortBy: ['name'],
sortNo: true, sortNo: true,
toolbarActions: [ toolbarActions: ['query', 'reset'],
'query',
'reset',
'separator',
{
name: 'reloadTables',
label: $t('reload'),
click: () => {
reloadTables();
},
},
],
queryFormColsNum: 2, queryFormColsNum: 2,
queryFormFields: [{ name: 'name', label: $t('name'), type: 'w-text' }], queryFormFields: [{ name: 'name', label: $t('name'), type: 'w-text' }],
primaryKey: 'name', primaryKey: 'name',
@ -198,19 +187,6 @@ 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(() => { onMounted(() => {
loadDatasource(); loadDatasource();
}); });

26
io.sc.platform.developer.frontend/src/views/backend/ExportLiquibaseSchema.vue

@ -55,18 +55,7 @@
sortBy: ['name'], sortBy: ['name'],
sortNo: true, sortNo: true,
primaryKey: 'name', primaryKey: 'name',
toolbarActions: [ toolbarActions: ['query', 'reset'],
'query',
'reset',
'separator',
{
name: 'reloadTables',
label: $t('reload'),
click: () => {
reloadTables();
},
},
],
queryFormColsNum: 2, queryFormColsNum: 2,
queryFormFields: [{ name: 'name', label: $t('name'), type: 'w-text' }], queryFormFields: [{ name: 'name', label: $t('name'), type: 'w-text' }],
columns: [ columns: [
@ -191,19 +180,6 @@ 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(() => { onMounted(() => {
loadDatasource(); loadDatasource();
}); });

2
io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseDataCsvExporter.java

@ -43,7 +43,7 @@ public class LiquibaseDataCsvExporter implements DataExporter {
String[] tableNames =ExportTable.getTableNames(configure.getTables()); String[] tableNames =ExportTable.getTableNames(configure.getTables());
progressInfo.setTotalWeight(tableNames.length); progressInfo.setTotalWeight(tableNames.length);
List<Table> tables =MetaDataLoader.newInstance().getTables(dataSource,configure.getCatalog(),configure.getSchema(),tableNames); List<Table> tables =MetaDataLoader.newInstance().getTablesWithDetail(dataSource,configure.getCatalog(),configure.getSchema(),tableNames);
String outPutDir =OUTPUT_PATH + getPath(configure.getCatalog(),configure.getSchema()); String outPutDir =OUTPUT_PATH + getPath(configure.getCatalog(),configure.getSchema());
FileUtil.deldirs(outPutDir); FileUtil.deldirs(outPutDir);
String dataDir =outPutDir + "/data"; String dataDir =outPutDir + "/data";

9
io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseSchemaExporter.java

@ -22,6 +22,7 @@ import javax.xml.stream.XMLStreamWriter;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.sql.Types;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -45,13 +46,13 @@ public class LiquibaseSchemaExporter implements SchemaExporter {
progressInfo.setTotalWeight(configure.getTables().length); progressInfo.setTotalWeight(configure.getTables().length);
String outPutDir =OUTPUT_PATH + getPath(configure.getCatalog(),configure.getSchema()); String outPutDir =OUTPUT_PATH + getPath(configure.getCatalog(),configure.getSchema());
FileUtil.deldirs(outPutDir); //FileUtil.deldirs(outPutDir);
String schemaDir =outPutDir + "/schema"; String schemaDir =outPutDir + "/schema";
new File(schemaDir).mkdirs(); new File(schemaDir).mkdirs();
XMLStreamWriter writer = WriterUtil.xmlStreamWriter(schemaDir + "/liquibase.xml"); XMLStreamWriter writer = WriterUtil.xmlStreamWriter(schemaDir + "/liquibase.xml");
writeHeader(writer,getSchemaName(configure.getCatalog(),configure.getSchema())); writeHeader(writer,getSchemaName(configure.getCatalog(),configure.getSchema()));
List<Table> tables =MetaDataLoader.newInstance().getTables(dataSource,configure.getCatalog(),configure.getSchema(),configure.getTables()); List<Table> tables =MetaDataLoader.newInstance().getTablesWithDetail(dataSource,configure.getCatalog(),configure.getSchema(),configure.getTables());
for(Table table : tables){ for(Table table : tables){
writeTable(table,writer); writeTable(table,writer);
} }
@ -140,8 +141,8 @@ public class LiquibaseSchemaExporter implements SchemaExporter {
private String getLiquibaseJavaSqlType(Column column) { private String getLiquibaseJavaSqlType(Column column) {
String type =column.getSqlType(); String type =column.getSqlType();
if("java.sql.Types.VARCHAR".equals(type)) { if("java.sql.Types.VARCHAR".equals(type) || "java.sql.Types.NVARCHAR".equals(type)) {
if(column.getSize()>10000) { if(column.getSize()>=2000) {
type ="java.sql.Types.CLOB"; type ="java.sql.Types.CLOB";
}else { }else {
type ="NVARCHAR(" + column.getSize() + ")"; type ="NVARCHAR(" + column.getSize() + ")";

40
io.sc.platform.jdbc.schemacrawler/src/main/java/io/sc/platform/jdbc/schemacrawler/MetaDataLoaderImpl.java

@ -74,6 +74,42 @@ public class MetaDataLoaderImpl implements MetaDataLoader {
@Override @Override
public List<Table> getTables(DataSource dataSource, String catalogName, String schemaName,String... tableNames) throws MetaDataAccessException { public List<Table> getTables(DataSource dataSource, String catalogName, String schemaName,String... tableNames) throws MetaDataAccessException {
List<Table> result =new ArrayList<>();
Connection connection =null;
ResultSet rs =null;
try {
connection =getConnection(dataSource);
DatabaseMetaData databaseMetaData =connection.getMetaData();
if(tableNames==null || tableNames.length==0) {
rs = databaseMetaData.getTables(catalogName, schemaName, null, new String[]{"TABLE"});
while (rs.next()) {
Table table = new Table();
table.setName(rs.getString("TABLE_NAME"));
table.setRemarks(rs.getString("REMARKS"));
result.add(table);
}
}else{
for(String tableName : tableNames){
rs = databaseMetaData.getTables(catalogName, schemaName, tableName, new String[]{"TABLE"});
while (rs.next()) {
Table table = new Table();
table.setName(rs.getString("TABLE_NAME"));
table.setRemarks(rs.getString("REMARKS"));
result.add(table);
}
}
}
} catch (SQLException e) {
throw new MetaDataAccessException(e);
}finally {
try{rs.close();} catch (SQLException e) {}
try{connection.close();} catch (SQLException e) {}
}
return result;
}
@Override
public List<Table> getTablesWithDetail(DataSource dataSource, String catalogName, String schemaName, String... tableNames) throws MetaDataAccessException {
List<Table> result =new ArrayList<>(); List<Table> result =new ArrayList<>();
Connection connection =null; Connection connection =null;
ResultSet rs =null; ResultSet rs =null;
@ -183,7 +219,9 @@ public class MetaDataLoaderImpl implements MetaDataLoader {
indexColumns.add(indexColumn); indexColumns.add(indexColumn);
index.setColumns(indexColumns); index.setColumns(indexColumns);
result.add(index); if(index.getName().toUpperCase().startsWith("IDX_")) {
result.add(index);
}
} }
} catch (SQLException e) { } catch (SQLException e) {
throw new MetaDataAccessException(e); throw new MetaDataAccessException(e);

7
io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/JdbcMetaDataLoaderWebController.java

@ -40,7 +40,7 @@ public class JdbcMetaDataLoaderWebController {
if(StringUtils.hasText(tableName)){ if(StringUtils.hasText(tableName)){
List<Table> result =new ArrayList<>(); List<Table> result =new ArrayList<>();
for(Table table : tables){ for(Table table : tables){
if(table.getName().contains(tableName)){ if(table.getName().toLowerCase().contains(tableName.toLowerCase())){
result.add(table); result.add(table);
} }
} }
@ -49,9 +49,4 @@ public class JdbcMetaDataLoaderWebController {
return tables; 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);
}
} }

10
io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/meta/MetaDataLoader.java

@ -57,6 +57,16 @@ public interface MetaDataLoader {
*/ */
public List<Table> getTables(DataSource dataSource, String catalogName, String schemaName,String... tableNames) throws MetaDataAccessException; public List<Table> getTables(DataSource dataSource, String catalogName, String schemaName,String... tableNames) throws MetaDataAccessException;
/**
* 获取某个 Schema 下的表对象(带详情)列表
* @param dataSource 数据源
* @param catalogName 目录名
* @param schemaName Schema 名称
* @param tableNames 表名数组
* @return 某个 Schema 下的表对象列表
*/
public List<Table> getTablesWithDetail(DataSource dataSource, String catalogName, String schemaName,String... tableNames) throws MetaDataAccessException;
/** /**
* 获取列对象列表 * 获取列对象列表
* @param dataSource 数据源 * @param dataSource 数据源

1
io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/JdbcMetaDataLoaderService.java

@ -11,5 +11,4 @@ public interface JdbcMetaDataLoaderService {
public List<Catalog> getCatalogs(String datasourceName) throws Exception; public List<Catalog> getCatalogs(String datasourceName) throws Exception;
public List<Schema> getSchemas(String datasourceName,String catalogName) throws Exception; public List<Schema> getSchemas(String datasourceName,String catalogName) throws Exception;
public List<Table> getTables(String datasourceName,String catalogName, String schemaName) throws Exception; public List<Table> getTables(String datasourceName,String catalogName, String schemaName) throws Exception;
public void reloadTables(String datasourceName,String catalogName,String schemaName);
} }

53
io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/impl/JdbcMetaDataLoaderServiceImpl.java

@ -12,15 +12,12 @@ import org.springframework.util.StringUtils;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Service("io.sc.platform.jdbc.service.impl.JdbcMetaDataLoaderServiceImpl") @Service("io.sc.platform.jdbc.service.impl.JdbcMetaDataLoaderServiceImpl")
public class JdbcMetaDataLoaderServiceImpl implements JdbcMetaDataLoaderService { public class JdbcMetaDataLoaderServiceImpl implements JdbcMetaDataLoaderService {
@Autowired DatasourceService datasourceService; @Autowired DatasourceService datasourceService;
@Autowired MetaDataLoader metaDataLoader; @Autowired MetaDataLoader metaDataLoader;
private Map<String,List<Table>> cache =new HashMap<>();
@Override @Override
public List<Catalog> getCatalogs(String datasourceName) throws Exception { public List<Catalog> getCatalogs(String datasourceName) throws Exception {
@ -52,49 +49,15 @@ public class JdbcMetaDataLoaderServiceImpl implements JdbcMetaDataLoaderService
@Override @Override
public synchronized List<Table> getTables(String datasourceName, String catalogName, String schemaName) throws Exception { public synchronized List<Table> getTables(String datasourceName, String catalogName, String schemaName) throws Exception {
String schemaId =getSchemaId(datasourceName,catalogName,schemaName); DataSource dataSource = null;
List<Table> tables =cache.get(schemaId); if (StringUtils.hasText(datasourceName)) {
if(tables==null || tables.isEmpty()) { dataSource = datasourceService.getDatasource(datasourceName);
DataSource dataSource = null; } else {
if (StringUtils.hasText(datasourceName)) { dataSource = datasourceService.getDefaultDatasource();
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{
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<Table> 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();
}
} }

4
io.sc.platform.lcdp.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.lcdp.frontend", "name": "io.sc.platform.lcdp.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.license.keygen.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.license.keygen.frontend", "name": "io.sc.platform.license.keygen.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.mvc.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.mvc.frontend", "name": "io.sc.platform.mvc.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.scheduler.manager.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.scheduler.manager.frontend", "name": "io.sc.platform.scheduler.manager.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.system.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.system.frontend", "name": "io.sc.platform.system.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.platform.system.frontend/src/views/workbench/MyFinishedTask.vue

@ -8,7 +8,7 @@
db-click-operation="taskView" db-click-operation="taskView"
:sort-no="false" :sort-no="false"
:data-url="Environment.apiContextPath('/api/flowable/process/query/myFinishedTask')" :data-url="Environment.apiContextPath('/api/flowable/process/query/myFinishedTask')"
:sort-by="['-startTime']" :sort-by="['-endTime']"
:query-form-cols-num="4" :query-form-cols-num="4"
:query-form-fields="[ :query-form-fields="[
{ {

4
io.sc.standard.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.standard.frontend", "name": "io.sc.standard.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.website/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.website", "name": "io.sc.website",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@ -28,6 +28,6 @@
}, },
"dependencies": { "dependencies": {
"vue": "3.5.13", "vue": "3.5.13",
"platform-core": "8.2.130" "platform-core": "8.2.132"
} }
} }

4
wra.report.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "wra.report.frontend", "name": "wra.report.frontend",
"version": "8.2.37", "version": "8.2.39",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.130", "platform-core": "8.2.132",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

Loading…
Cancel
Save