Browse Source

基础框架发布: 8.2.38

1. 支持数据库结构或数据导出时可以通过查询过滤表

前端核心发布: 8.2.131
  1. 解决顶部代办无法正常打开,采用 <suspense> 进行封装
main
wangshaoping 5 days ago
parent
commit
5d114180ae
  1. 2
      io.sc.engine.mv.frontend/src/components/index.ts
  2. 4
      io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue
  3. 2
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties
  4. 2
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties
  5. 28
      io.sc.platform.developer.frontend/src/views/backend/ExportLiquibase.vue
  6. 29
      io.sc.platform.developer.frontend/src/views/backend/ExportLiquibaseSchema.vue
  7. 35
      io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/JdbcMetaDataLoaderWebController.java
  8. 1
      io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/JdbcMetaDataLoaderService.java
  9. 41
      io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/impl/JdbcMetaDataLoaderServiceImpl.java

2
io.sc.engine.mv.frontend/src/components/index.ts

@ -26,6 +26,6 @@ const localComponents = {
'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;

4
io.sc.platform.core.frontend/src/platform/layout/sub-layout/Topper.vue

@ -253,9 +253,11 @@
<SystemMessageDialog ref="systemMessageDialogRef" @close="findUnReadedNotifications"></SystemMessageDialog>
<AnnouncementDialog ref="announcementDialogRef" @close="findUnReadedAnnouncements"></AnnouncementDialog>
<AsyncTaskDialog ref="asyncTaskDialogRef"></AsyncTaskDialog>
<suspense>
<div style="width: 0px; height: 0px">
<component :is="componentRef" style="width: 1px; height: 1px"></component>
<component :is="componentRef" style="width: 1px; height: 1px" />
</div>
</suspense>
</div>
</template>

2
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
remarks=\u5099\u8A3B

2
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
remarks=\u5907\u6CE8

28
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();
});

29
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();
});

35
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<Table> 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<Table> 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<String, String> map = ObjectMapperUtil.json().readValue(criteria, new TypeReference<Map<String, String>>() {});
tableName =map.get("value");
}
List<Table> tables =jdbcMetaDataLoaderService.getTables(datasource,catalog,schema);
if(StringUtils.hasText(tableName)){
List<Table> 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);
}
}

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

@ -11,4 +11,5 @@ public interface JdbcMetaDataLoaderService {
public List<Catalog> getCatalogs(String datasourceName) 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 void reloadTables(String datasourceName,String catalogName,String schemaName);
}

41
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<String,List<Table>> cache =new HashMap<>();
@Override
public List<Catalog> getCatalogs(String datasourceName) throws Exception {
@ -48,7 +51,10 @@ public class JdbcMetaDataLoaderServiceImpl implements JdbcMetaDataLoaderService
}
@Override
public 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);
List<Table> tables =cache.get(schemaId);
if(tables==null || tables.isEmpty()) {
DataSource dataSource = null;
if (StringUtils.hasText(datasourceName)) {
dataSource = datasourceService.getDatasource(datasourceName);
@ -56,8 +62,39 @@ public class JdbcMetaDataLoaderServiceImpl implements JdbcMetaDataLoaderService
dataSource = datasourceService.getDefaultDatasource();
}
if (dataSource != null) {
return metaDataLoader.getTables(dataSource,catalogName,schemaName);
tables =metaDataLoader.getTables(dataSource, catalogName, schemaName);
cache.put(schemaId,tables);
return tables;
}
return Collections.emptyList();
}else{
return tables;
}
}
@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();
}
}
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();
}
}

Loading…
Cancel
Save