diff --git a/gradle.properties b/gradle.properties index dd4e667d..9fe43cd3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -36,9 +36,9 @@ application_version=1.0.0 # platform ########################################################### platform_group=io.sc -platform_version=8.1.24 +platform_version=8.1.25 platform_plugin_version=8.1.13 -platform_core_frontend_version=8.1.133 +platform_core_frontend_version=8.1.136 ########################################################### # dependencies version diff --git a/io.sc.engine.mv.frontend/package.json b/io.sc.engine.mv.frontend/package.json index df3a0954..f5ed221c 100644 --- a/io.sc.engine.mv.frontend/package.json +++ b/io.sc.engine.mv.frontend/package.json @@ -1,10 +1,10 @@ { "name": "io.sc.engine.mv.frontend", - "version": "8.1.24", + "version": "8.1.25", "description": "", "private": false, "keywords": [ - + ], "author": "", "license": "ISC", @@ -80,7 +80,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.133", + "platform-core": "8.1.136", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -102,4 +102,4 @@ "codemirror": "6.0.1", "vue-codemirror6": "1.2.0" } -} +} \ No newline at end of file diff --git a/io.sc.platform.core.frontend/src/platform/components/index.ts b/io.sc.platform.core.frontend/src/platform/components/index.ts index 9797a811..5a48e5b1 100644 --- a/io.sc.platform.core.frontend/src/platform/components/index.ts +++ b/io.sc.platform.core.frontend/src/platform/components/index.ts @@ -1,22 +1,18 @@ import type { App } from 'vue'; + import WPlatformPage from './app/WPlatformPage.vue'; -import WHScreenDiv from './layout/WHScreenDiv.vue'; -import WVExpandDiv from './layout/WVExpandDiv.vue'; -import WIconEmpty from './icon/WIconEmpty.vue'; -import WTreeGrid from './tree/WTreeGrid.vue'; import WDialog from './dialog/WDialog.vue'; + import WDrawer from './drawer/WDrawer.vue'; import WForm from './form/WForm.vue'; - import WCodeMirror from './form/elements/WCodeMirror.vue'; import WColorInput from './form/elements/WColorInput.vue'; import WColorInputPalette from './form/elements/WColorInputPalette.vue'; import WCron from './form/elements/WCron.vue'; import WIcon from './form/elements/WIcon.vue'; import WPosition from './form/elements/WPosition.vue'; - import WText from './form/elements/WText.vue'; import WNumber from './form/elements/WNumber.vue'; import WTextarea from './form/elements/WTextarea.vue'; @@ -27,76 +23,99 @@ import WTextBtn from './form/elements/WTextBtn.vue'; import WPassword from './form/elements/WPassword.vue'; import WOptionGroup from './form/elements/WOptionGroup.vue'; +import WGrid from './grid/WGrid.vue'; + +import WIconEmpty from './icon/WIconEmpty.vue'; + +import WHScreenDiv from './layout/WHScreenDiv.vue'; +import WVExpandDiv from './layout/WVExpandDiv.vue'; + import WInfoPanel from './panel/WInfoPanel.vue'; -import WGrid from './grid/WGrid.vue'; -import WToolbar from './toolbar/WToolbar.vue'; +import WProgress from './progress/WProgress.vue'; + import WEnableTag from './tag/WEnableTag.vue'; import WSuccessFailedTag from './tag/WSuccessFailedTag.vue'; +import WToolbar from './toolbar/WToolbar.vue'; + +import WTreeGrid from './tree/WTreeGrid.vue'; + export default { install: (app: App) => { app.component('WPlatformPage', WPlatformPage); - app.component('WIconEmpty', WIconEmpty); - app.component('WHScreenDiv', WHScreenDiv); - app.component('WVExpandDiv', WVExpandDiv); + + app.component('WDialog', WDialog); + + app.component('WDrawer', WDrawer); + + app.component('WForm', WForm); + app.component('WCodeMirror', WCodeMirror); app.component('WColorInput', WColorInput); app.component('WColorInputPalette', WColorInputPalette); app.component('WCron', WCron); app.component('WIcon', WIcon); app.component('WPosition', WPosition); - app.component('WCodeMirror', WCodeMirror); - app.component('WSelect', WSelect); - app.component('WTreeGrid', WTreeGrid); - - app.component('WDialog', WDialog); - app.component('WDrawer', WDrawer); - app.component('WForm', WForm); app.component('WText', WText); app.component('WNumber', WNumber); app.component('WTextarea', WTextarea); + app.component('WSelect', WSelect); app.component('WDate', WDate); app.component('WCheckbox', WCheckbox); app.component('WTextBtn', WTextBtn); app.component('WPassword', WPassword); app.component('WOptionGroup', WOptionGroup); + app.component('WGrid', WGrid); + + app.component('WIconEmpty', WIconEmpty); + + app.component('WHScreenDiv', WHScreenDiv); + app.component('WVExpandDiv', WVExpandDiv); + app.component('WInfoPanel', WInfoPanel); - app.component('WGrid', WGrid); - app.component('WToolbar', WToolbar); + app.component('WProgress', WProgress); + app.component('WEnableTag', WEnableTag); app.component('WSuccessFailedTag', WSuccessFailedTag); + + app.component('WToolbar', WToolbar); + + app.component('WTreeGrid', WTreeGrid); }, }; export { WPlatformPage, - WIconEmpty, - WHScreenDiv, + WDialog, + WDrawer, + WForm, + WCodeMirror, WColorInput, WColorInputPalette, WCron, WIcon, WPosition, - WCodeMirror, - WSelect, - WTreeGrid, - WDialog, - WDrawer, - WForm, WText, WNumber, WTextarea, + WSelect, WDate, WCheckbox, WTextBtn, WPassword, WOptionGroup, WGrid, - WToolbar, + WIconEmpty, + WHScreenDiv, + WVExpandDiv, + WInfoPanel, + WProgress, WEnableTag, WSuccessFailedTag, + WToolbar, + WTreeGrid, }; export { PlatformIconEnum } from './utils'; diff --git a/io.sc.platform.core.frontend/src/platform/components/progress/WProgress.vue b/io.sc.platform.core.frontend/src/platform/components/progress/WProgress.vue new file mode 100644 index 00000000..3677c7c5 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/progress/WProgress.vue @@ -0,0 +1,59 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/i18n/messages.json b/io.sc.platform.core.frontend/src/platform/i18n/messages.json index a7e72e00..ce0560c9 100644 --- a/io.sc.platform.core.frontend/src/platform/i18n/messages.json +++ b/io.sc.platform.core.frontend/src/platform/i18n/messages.json @@ -47,6 +47,7 @@ "theme": "Theme", "upToTop": "Up to Top", "passwordAndConfirmPasswordMustEqual": "Confrim Password and Password must equals", + "progress.tip": "Running: ", "cron.second.per": "Per Second", "cron.second.period.1": "From", diff --git a/io.sc.platform.core.frontend/src/platform/i18n/messages_tw_CN.json b/io.sc.platform.core.frontend/src/platform/i18n/messages_tw_CN.json index a365bc25..f3f8dde5 100644 --- a/io.sc.platform.core.frontend/src/platform/i18n/messages_tw_CN.json +++ b/io.sc.platform.core.frontend/src/platform/i18n/messages_tw_CN.json @@ -47,6 +47,7 @@ "theme": "主題", "upToTop": "回到頂部", "passwordAndConfirmPasswordMustEqual": "確認密碼和密碼必須一致", + "progress.tip": "正在執行: ", "cron.second.per": "每秒", "cron.second.period.1": "從", diff --git a/io.sc.platform.core.frontend/src/platform/i18n/messages_zh_CN.json b/io.sc.platform.core.frontend/src/platform/i18n/messages_zh_CN.json index 4e9ddcc7..fee415ad 100644 --- a/io.sc.platform.core.frontend/src/platform/i18n/messages_zh_CN.json +++ b/io.sc.platform.core.frontend/src/platform/i18n/messages_zh_CN.json @@ -47,6 +47,7 @@ "theme": "主题", "upToTop": "回到顶部", "passwordAndConfirmPasswordMustEqual": "确认密码和密码必须一致", + "progress.tip": "正在执行: ", "cron.second.per": "每秒", "cron.second.period.1": "从", diff --git a/io.sc.platform.core.frontend/src/platform/index.ts b/io.sc.platform.core.frontend/src/platform/index.ts index 5f7e714f..c7bd4ebe 100644 --- a/io.sc.platform.core.frontend/src/platform/index.ts +++ b/io.sc.platform.core.frontend/src/platform/index.ts @@ -111,18 +111,34 @@ export { Options } from './components-ext'; */ export { WPlatformPage, - WIconEmpty, - WHScreenDiv, + WDialog, + WDrawer, + WForm, + WCodeMirror, WColorInput, WColorInputPalette, WCron, + WIcon, WPosition, - WCodeMirror, + WText, + WNumber, + WTextarea, WSelect, + WDate, + WCheckbox, + WTextBtn, + WPassword, + WOptionGroup, WGrid, - WTreeGrid, + WIconEmpty, + WHScreenDiv, + WVExpandDiv, + WInfoPanel, + WProgress, WEnableTag, WSuccessFailedTag, + WToolbar, + WTreeGrid, } from './components'; export { PlatformIconEnum } from './components'; diff --git a/io.sc.platform.core.frontend/src/views/FormElements.vue b/io.sc.platform.core.frontend/src/views/FormElements.vue index 56c12f65..ca17b66a 100644 --- a/io.sc.platform.core.frontend/src/views/FormElements.vue +++ b/io.sc.platform.core.frontend/src/views/FormElements.vue @@ -39,6 +39,7 @@ + diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/support/ProgressInfo.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/support/ProgressInfo.java index 97988f6b..b7801bba 100644 --- a/io.sc.platform.core/src/main/java/io/sc/platform/core/support/ProgressInfo.java +++ b/io.sc.platform.core/src/main/java/io/sc/platform/core/support/ProgressInfo.java @@ -7,6 +7,7 @@ import java.util.concurrent.atomic.AtomicInteger; * 进度信息 */ public class ProgressInfo { + private boolean running; //开始时间 private Date startDatetime; //完成时间 @@ -21,9 +22,16 @@ public class ProgressInfo { private String errorMessage; private String errorStackTrace; + public static ProgressInfo notRunning(){ + ProgressInfo progressInfo =new ProgressInfo(); + progressInfo.setRunning(false); + return progressInfo; + } + public ProgressInfo(){} public ProgressInfo(int totalWeight,int currentWeight){ + System.out.println(">>>>>>>>>>>>>>>>>"); this.totalWeight =new AtomicInteger(totalWeight); this.currentWeight =new AtomicInteger(currentWeight); } @@ -59,6 +67,16 @@ public class ProgressInfo { this.currentWeight =this.totalWeight; } + public boolean getRunning() { + return running; + } + + public void setRunning(boolean running) { + this.running = running; + } + + + public Date getStartDatetime() { return startDatetime; } @@ -118,7 +136,8 @@ public class ProgressInfo { @Override public String toString() { return "ProgressInfo{" + - "startDatetime=" + startDatetime + + "isRunning=" + running + + ", startDatetime=" + startDatetime + ", completedDatetime=" + completedDatetime + ", totalWeight=" + totalWeight + ", currentWeight=" + currentWeight + diff --git a/io.sc.platform.csv/src/main/java/io/sc/platform/csv/exporter/CsvExporter.java b/io.sc.platform.csv/src/main/java/io/sc/platform/csv/exporter/CsvExporter.java index 92a0a482..26109dbc 100644 --- a/io.sc.platform.csv/src/main/java/io/sc/platform/csv/exporter/CsvExporter.java +++ b/io.sc.platform.csv/src/main/java/io/sc/platform/csv/exporter/CsvExporter.java @@ -1,13 +1,15 @@ package io.sc.platform.csv.exporter; +import io.sc.platform.core.support.ProgressInfo; import io.sc.platform.jdbc.exporter.DataExporter; import io.sc.platform.jdbc.exporter.support.DataExportConfigure; import javax.sql.DataSource; +import java.util.Locale; public class CsvExporter implements DataExporter { @Override - public void export(DataSource dataSource, DataExportConfigure configure) { + public void export(DataSource dataSource, DataExportConfigure configure, ProgressInfo progressInfo, Locale locale) { } } diff --git a/io.sc.platform.developer.frontend/package.json b/io.sc.platform.developer.frontend/package.json index 15975245..e67e58e3 100644 --- a/io.sc.platform.developer.frontend/package.json +++ b/io.sc.platform.developer.frontend/package.json @@ -1,10 +1,10 @@ { "name": "io.sc.platform.developer.frontend", - "version": "8.1.24", + "version": "8.1.25", "description": "", "private": false, "keywords": [ - + ], "author": "", "license": "ISC", @@ -80,7 +80,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.133", + "platform-core": "8.1.136", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -102,4 +102,4 @@ "codemirror": "6.0.1", "vue-codemirror6": "1.2.0" } -} +} \ No newline at end of file diff --git a/io.sc.platform.developer.frontend/src/i18n/messages.json b/io.sc.platform.developer.frontend/src/i18n/messages.json index cd181722..dedd5296 100644 --- a/io.sc.platform.developer.frontend/src/i18n/messages.json +++ b/io.sc.platform.developer.frontend/src/i18n/messages.json @@ -30,6 +30,11 @@ "menu.developer.backend.export.liquibase" : "Data Export(liquibase)", "menu.developer.frontend" : "Front End Tools", - "menu.developer.frontend.icons" : "Icons" + "menu.developer.frontend.icons" : "Icons", + + "developer.backend.export.liquibase.datasource" : "Datasource", + "developer.backend.export.liquibase.schema" : "Schema", + "developer.backend.export.liquibase.tables" : "Tables", + "developer.backend.export.liquibase.export.tip" : "Are you sure to export?" } diff --git a/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json b/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json index 90a9e733..b10f3f4d 100644 --- a/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json +++ b/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json @@ -30,6 +30,11 @@ "menu.developer.backend.export.liquibase" : "數據導出(liquibase)", "menu.developer.frontend" : "前端工具", - "menu.developer.frontend.icons" : "圖標庫" + "menu.developer.frontend.icons" : "圖標庫", + + "developer.backend.export.liquibase.datasource" : "數據源", + "developer.backend.export.liquibase.schema" : "方案", + "developer.backend.export.liquibase.tables" : "表", + "developer.backend.export.liquibase.export.tip" : "您確定要導出嗎?" } diff --git a/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json b/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json index 7d8fd628..3ba37c5b 100644 --- a/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json +++ b/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json @@ -30,5 +30,11 @@ "menu.developer.backend.export.liquibase" : "数据导出(liquibase)", "menu.developer.frontend" : "前端工具", - "menu.developer.frontend.icons" : "图标库" + "menu.developer.frontend.icons" : "图标库", + + "developer.backend.export.liquibase.datasource" : "数据源", + "developer.backend.export.liquibase.schema" : "方案", + "developer.backend.export.liquibase.tables" : "表", + "developer.backend.export.liquibase.export.tip" : "您确定要导出吗?" + } 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 2c800ed9..a0a485db 100644 --- a/io.sc.platform.developer.frontend/src/views/backend/ExportLiquibase.vue +++ b/io.sc.platform.developer.frontend/src/views/backend/ExportLiquibase.vue @@ -4,61 +4,78 @@ ref="formRef" :fields="[ { - name: 'datasourceName', - label: 'datasourceName', + name: 'datasource', + label: $t('developer.backend.export.liquibase.datasource'), type: 'select', + clearable: true, options: datasourceOptionsRef, 'onUpdate:modelValue': (value) => { - datasourceNameChanged(value); + datasourceChanged(value); }, }, { - name: 'schemaName', - label: 'schemaName', + name: 'schema', + label: $t('developer.backend.export.liquibase.schema'), type: 'select', - options: schemaNameOptionsRef, + options: schemaOptionsRef, 'onUpdate:modelValue': (value) => { - schemaNameChanged(formRef.getFieldValue('datasourceName'), value); + schemaChanged(formRef.getFieldValue('datasource'), value); }, + required: true, }, - { name: 'tableName', label: 'tableName', type: 'select', multiple: true, options: tableNameOptionsRef }, - { name: 'fetchSize', label: 'fetchSize', type: 'number', defaultValue: 1000 }, - { name: 'sql', label: 'sql', type: 'code-mirror', colSpan: 4, rows: 5, lang: 'sql' }, - ]" - > - - - + + +
+ +
diff --git a/io.sc.platform.developer.frontend/src/views/backend/WProgress.vue b/io.sc.platform.developer.frontend/src/views/backend/WProgress.vue new file mode 100644 index 00000000..1d39439f --- /dev/null +++ b/io.sc.platform.developer.frontend/src/views/backend/WProgress.vue @@ -0,0 +1,70 @@ + + diff --git a/io.sc.platform.developer.frontend/src/views/backend/WProgressBtn.vue b/io.sc.platform.developer.frontend/src/views/backend/WProgressBtn.vue new file mode 100644 index 00000000..aa4035bb --- /dev/null +++ b/io.sc.platform.developer.frontend/src/views/backend/WProgressBtn.vue @@ -0,0 +1,75 @@ + + diff --git a/io.sc.platform.gradle/templates/pgp/setup/gradle.properties b/io.sc.platform.gradle/templates/pgp/setup/gradle.properties index e5de23af..9fe43cd3 100644 --- a/io.sc.platform.gradle/templates/pgp/setup/gradle.properties +++ b/io.sc.platform.gradle/templates/pgp/setup/gradle.properties @@ -36,9 +36,9 @@ application_version=1.0.0 # platform ########################################################### platform_group=io.sc -platform_version=8.1.24 +platform_version=8.1.25 platform_plugin_version=8.1.13 -platform_core_frontend_version=8.1.119 +platform_core_frontend_version=8.1.136 ########################################################### # dependencies version diff --git a/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseDataCsvExporter.java b/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseDataCsvExporter.java index c7d8dc7b..592b60e2 100644 --- a/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseDataCsvExporter.java +++ b/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseDataCsvExporter.java @@ -1,5 +1,7 @@ package io.sc.platform.jdbc.liquibase.exporter; +import io.sc.platform.core.DirectoryManager; +import io.sc.platform.core.support.ProgressInfo; import io.sc.platform.core.util.WriterUtil; import io.sc.platform.jdbc.exporter.DataExporter; import io.sc.platform.jdbc.exporter.support.DataExportConfigure; @@ -24,82 +26,68 @@ import java.sql.*; import java.util.ArrayList; import java.util.Base64; import java.util.List; +import java.util.Locale; public class LiquibaseDataCsvExporter implements DataExporter { private static final Logger log = LoggerFactory.getLogger(LiquibaseDataCsvExporter.class); + private static final String OUTPUT_PATH = DirectoryManager.getInstance().getByName("dir.work.web.export"); @Override - public void export(DataSource dataSource, DataExportConfigure configure) { - try { - switch (configure.getExportMode()) { - case SINGLE_FILE: - exportMultiFile(dataSource, configure); - break; - case MULTI_FILE: - exportMultiFile(dataSource, configure); - break; - } - }catch (Exception e){ - throw new RuntimeException(e); - } - } - - private void exportSingleFile(DataSource dataSource, DataExportConfigure configure) { - - } - - private void exportMultiFile(DataSource dataSource, DataExportConfigure configure) throws IOException, MetaDataAccessException { + public void export(DataSource dataSource, DataExportConfigure configure, ProgressInfo progressInfo, Locale locale) throws Exception{ + progressInfo.setTotalWeight(configure.getTables().length); String[] tableNames =ExportTable.getTableNames(configure.getTables()); List tables =MetaDataLoader.newInstance().getTables(dataSource,configure.getSchema(),tableNames); for(Table table : tables){ - BufferedWriter writer = WriterUtil.bufferedWriter(configure.getOutputPath() + File.separator + "data." + configure.getSchema() + "." + table.getName() + ".csv"); - ICSVWriter csvWriter = new CSVWriterBuilder(writer) - .withSeparator(',') - .withQuoteChar(ICSVWriter.NO_QUOTE_CHARACTER) - .build(); - - writeTable(dataSource,table,csvWriter); - + progressInfo.setMessageKey(table.getName()); + new File(OUTPUT_PATH + "/" + configure.getSchema()).mkdirs(); + BufferedWriter writer = WriterUtil.bufferedWriter(OUTPUT_PATH + "/" + configure.getSchema() + "/" + table.getName() + ".csv"); + ICSVWriter csvWriter = new CSVWriterBuilder(writer).build(); + writeTable(dataSource,table,csvWriter,configure,progressInfo,locale); csvWriter.flush(); csvWriter.close(); + progressInfo.addWeight(1); + Thread.sleep(5000); } } - private void writeTable(DataSource dataSource,Table table,ICSVWriter writer) { + private void writeTable(DataSource dataSource,Table table,ICSVWriter writer,DataExportConfigure configure,ProgressInfo progressInfo, Locale locale) { //写入字段定义信息=============================================================================== List columns =table.getColumns(); if(columns==null || columns.size()==0){ throw new RuntimeException("No column found"); } String[] names =new String[columns.size()]; - String[] types =new String[columns.size()]; + String[] javaTypes =new String[columns.size()]; + String[] sqlTypes =new String[columns.size()]; String[] remarks =new String[columns.size()]; for(int i=0;i " + table.getSelfReferencePrimaryKeyColumnName()); - exportResultSetWithSelfReference(rs,table,writer); + exportResultSetWithSelfReference(rs,table,writer,configure,progressInfo,locale); }else{ log.info("export table [" + table.getName() + "]"); - exportResultSet(rs,table,writer); + exportResultSet(rs,table,writer,configure,progressInfo,locale); } }catch (Exception e){ throw new RuntimeException(e); @@ -109,7 +97,7 @@ public class LiquibaseDataCsvExporter implements DataExporter { } } - private void exportResultSetWithSelfReference(ResultSet rs,Table table,ICSVWriter writer) throws SQLException, IOException { + private void exportResultSetWithSelfReference(ResultSet rs,Table table,ICSVWriter writer,DataExportConfigure configure,ProgressInfo progressInfo, Locale locale) throws SQLException, IOException { String pkFieldName =table.getSelfReferencePrimaryKeyColumnName(); String fkFieldName =table.getSelfReferenceForeignKeyColumnName(); List columns =table.getColumns(); @@ -154,7 +142,7 @@ public class LiquibaseDataCsvExporter implements DataExporter { } } }else{ - fieldValue =Base64.getEncoder().encodeToString(rs.getString(fieldName).getBytes()); + fieldValue =rs.getString(fieldName); } record.addField(fieldName, fieldValue); } @@ -165,7 +153,7 @@ public class LiquibaseDataCsvExporter implements DataExporter { return null; } - private void exportResultSet(ResultSet rs,Table table,ICSVWriter writer) throws SQLException, IOException { + private void exportResultSet(ResultSet rs,Table table,ICSVWriter writer,DataExportConfigure configure,ProgressInfo progressInfo, Locale locale) throws SQLException, IOException { long count =1; List columns =table.getColumns(); while(rs.next()){ diff --git a/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseDataExporter.java b/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseDataExporter.java index d08fefe9..f2529162 100644 --- a/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseDataExporter.java +++ b/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseDataExporter.java @@ -1,6 +1,8 @@ package io.sc.platform.jdbc.liquibase.exporter; +import io.sc.platform.core.DirectoryManager; import io.sc.platform.core.Environment; +import io.sc.platform.core.support.ProgressInfo; import io.sc.platform.core.util.StringUtil; import io.sc.platform.core.util.WriterUtil; import io.sc.platform.jdbc.exporter.DataExporter; @@ -26,28 +28,24 @@ import java.io.UnsupportedEncodingException; import java.sql.*; import java.util.ArrayList; import java.util.List; +import java.util.Locale; public class LiquibaseDataExporter implements DataExporter { private static final Logger log = LoggerFactory.getLogger(LiquibaseDataExporter.class); + private static final String OUTPUT_PATH = DirectoryManager.getInstance().getByName(""); @Override - public void export(DataSource dataSource, DataExportConfigure configure) { + public void export(DataSource dataSource, DataExportConfigure configure, ProgressInfo progressInfo, Locale locale) { try { - switch (configure.getExportMode()) { - case SINGLE_FILE: - exportSingleFile(dataSource, configure); - break; - case MULTI_FILE: - exportMultiFile(dataSource, configure); - break; - } + exportSingleFile(dataSource, configure); +// exportMultiFile(dataSource, configure); }catch (Exception e){ throw new RuntimeException(e); } } private void exportSingleFile(DataSource dataSource, DataExportConfigure configure) throws XMLStreamException, FileNotFoundException, UnsupportedEncodingException, MetaDataAccessException { - XMLStreamWriter writer = WriterUtil.xmlStreamWriter(configure.getOutputPath() + File.separator + "data." + configure.getSchema() + ".xml"); + XMLStreamWriter writer = WriterUtil.xmlStreamWriter(OUTPUT_PATH + File.separator + "data." + configure.getSchema() + ".xml"); writeHeader(writer); String[] tableNames =ExportTable.getTableNames(configure.getTables()); List
tables =MetaDataLoader.newInstance().getTables(dataSource,configure.getSchema(),tableNames); @@ -63,7 +61,7 @@ public class LiquibaseDataExporter implements DataExporter { String[] tableNames =ExportTable.getTableNames(configure.getTables()); List
tables =MetaDataLoader.newInstance().getTables(dataSource,configure.getSchema(),tableNames); for(Table table : tables){ - XMLStreamWriter writer = WriterUtil.xmlStreamWriter(configure.getOutputPath() + File.separator + "data." + configure.getSchema() + "." + table.getName() + ".xml"); + XMLStreamWriter writer = WriterUtil.xmlStreamWriter(OUTPUT_PATH + File.separator + "data." + configure.getSchema() + "." + table.getName() + ".xml"); writeHeader(writer); writeTable(dataSource,table,writer); writeTail(writer); diff --git a/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseSchemaExporter.java b/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseSchemaExporter.java index 21b36340..e6036906 100644 --- a/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseSchemaExporter.java +++ b/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/exporter/LiquibaseSchemaExporter.java @@ -1,5 +1,6 @@ package io.sc.platform.jdbc.liquibase.exporter; +import io.sc.platform.core.DirectoryManager; import io.sc.platform.core.Environment; import io.sc.platform.core.util.WriterUtil; import io.sc.platform.jdbc.exporter.SchemaExporter; @@ -19,26 +20,20 @@ import java.io.UnsupportedEncodingException; import java.util.List; public class LiquibaseSchemaExporter implements SchemaExporter { + private static final String OUTPUT_PATH = DirectoryManager.getInstance().getByName(""); + @Override public void export(DataSource dataSource, SchemaExportConfigure configure) { try { - switch (configure.getExportMode()) { - case SINGLE_FILE: - exportSingleFile(dataSource, configure); - break; - case MULTI_FILE: - exportMultiFile(dataSource, configure); - break; - default: - break; - } + exportSingleFile(dataSource, configure); + //exportMultiFile(dataSource, configure); }catch (Exception e){ throw new RuntimeException(e); } } private void exportSingleFile(DataSource dataSource, SchemaExportConfigure configure) throws XMLStreamException, FileNotFoundException, UnsupportedEncodingException, MetaDataAccessException { - XMLStreamWriter writer = WriterUtil.xmlStreamWriter(configure.getOutputPath() + File.separator + "schema." + configure.getSchema() + ".xml"); + XMLStreamWriter writer = WriterUtil.xmlStreamWriter(OUTPUT_PATH + File.separator + "schema." + configure.getSchema() + ".xml"); writeHeader(writer,configure.getSchema()); List
tables =MetaDataLoader.newInstance().getTables(dataSource,configure.getSchema(),configure.getTables()); for(Table table : tables){ @@ -52,7 +47,7 @@ public class LiquibaseSchemaExporter implements SchemaExporter { private void exportMultiFile(DataSource dataSource, SchemaExportConfigure configure) throws MetaDataAccessException, XMLStreamException, FileNotFoundException, UnsupportedEncodingException { List
tables =MetaDataLoader.newInstance().getTables(dataSource,configure.getSchema(),configure.getTables()); for(Table table : tables){ - XMLStreamWriter writer = WriterUtil.xmlStreamWriter(configure.getOutputPath() + File.separator + "schema." + configure.getSchema() + "." + table.getName() + ".xml"); + XMLStreamWriter writer = WriterUtil.xmlStreamWriter(OUTPUT_PATH + File.separator + "schema." + configure.getSchema() + "." + table.getName() + ".xml"); writeHeader(writer,configure.getSchema() + "." + table.getName()); writeTable(table,writer); writeTail(writer); diff --git a/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/task/CsvTaskChange.java b/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/task/CsvImportTaskChange.java similarity index 91% rename from io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/task/CsvTaskChange.java rename to io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/task/CsvImportTaskChange.java index 3d4ccccd..ceb7eed5 100644 --- a/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/task/CsvTaskChange.java +++ b/io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/liquibase/task/CsvImportTaskChange.java @@ -5,10 +5,9 @@ import liquibase.database.Database; import liquibase.exception.CustomChangeException; import liquibase.exception.SetupException; import liquibase.exception.ValidationErrors; -import liquibase.repackaged.com.opencsv.CSVReaderBuilder; import liquibase.resource.ResourceAccessor; -public class CsvTaskChange implements CustomTaskChange { +public class CsvImportTaskChange implements CustomTaskChange { private String dataFileLocation; private String cfgFileLocation; diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/JdbcExportWebController.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/JdbcExportWebController.java new file mode 100644 index 00000000..f6eae7e3 --- /dev/null +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/JdbcExportWebController.java @@ -0,0 +1,43 @@ +package io.sc.platform.jdbc.controller; + +import io.sc.platform.core.support.ProgressInfo; +import io.sc.platform.jdbc.controller.support.ExporterThread; +import io.sc.platform.jdbc.exporter.exception.ExporterNotRunningException; +import io.sc.platform.jdbc.exporter.exception.ExporterRunningException; +import io.sc.platform.jdbc.exporter.support.DataExportConfigure; +import io.sc.platform.jdbc.service.JdbcExportService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.Locale; + +@RestController +@RequestMapping("/api/jdbc/export") +public class JdbcExportWebController { + @Autowired private JdbcExportService jdbcExportService; + private ExporterThread thread =null; + + @PostMapping("export") + public void export(@RequestBody DataExportConfigure configure, Locale locale) throws Exception { + //检查有当前用户启动的执行线程是否正在运行 + if(thread!=null && thread.isAlive()){ + throw new ExporterRunningException(); + } + //启动新线程 + thread =new ExporterThread(jdbcExportService,configure,locale); + thread.start(); + } + + @GetMapping("traceExecuteProgress") + public ProgressInfo traceExecuteProgress(Locale locale) throws Exception{ + if(thread!=null && thread.isAlive()){ + if(thread.getException()!=null){ + throw thread.getException(); + } + return thread.getProgressInfo(); + }else{ + return ProgressInfo.notRunning(); + } + } +} 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 47e726df..4506bccc 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 @@ -5,10 +5,7 @@ import io.sc.platform.jdbc.meta.support.Table; import io.sc.platform.jdbc.meta.support.TableSummary; import io.sc.platform.jdbc.service.JdbcMetaDataLoaderService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -17,13 +14,13 @@ import java.util.List; public class JdbcMetaDataLoaderWebController { @Autowired private JdbcMetaDataLoaderService jdbcMetaDataLoaderService; - @GetMapping("getSchemaNames/{datasourceName}") - public List getSchemaNames(@PathVariable(name="datasourceName")String datasourceName) throws Exception { - return jdbcMetaDataLoaderService.getSchemaNames(datasourceName); + @GetMapping("getSchemas") + public List getSchemaNames(@RequestParam(name="datasource",required = false)String datasource) throws Exception { + return jdbcMetaDataLoaderService.getSchemas(datasource); } - @GetMapping("getTables/{datasourceName}/{schemaName}") - public List
getTables(@PathVariable(name="datasourceName")String datasourceName, @PathVariable(name="schemaName")String schemaName) throws Exception { - return jdbcMetaDataLoaderService.getTables(datasourceName,schemaName); + @GetMapping("getTables") + public List
getTables(@RequestParam(name="datasource",required = false)String datasource, @RequestParam(name="schema")String schema) throws Exception { + return jdbcMetaDataLoaderService.getTables(datasource,schema); } } diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/support/ExporterThread.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/support/ExporterThread.java new file mode 100644 index 00000000..68faa10d --- /dev/null +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/controller/support/ExporterThread.java @@ -0,0 +1,39 @@ +package io.sc.platform.jdbc.controller.support; + +import io.sc.platform.core.support.ProgressInfo; +import io.sc.platform.jdbc.exporter.support.DataExportConfigure; +import io.sc.platform.jdbc.service.JdbcExportService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Locale; + +public class ExporterThread extends Thread { + private Logger log = LoggerFactory.getLogger(ExporterThread.class); + private JdbcExportService jdbcExportService; + private DataExportConfigure exportConfigure; + private Locale locale; + private volatile ProgressInfo progressInfo =new ProgressInfo(100,0); + private Exception exception; + + public ExporterThread(JdbcExportService jdbcExportService,DataExportConfigure exportConfigure, Locale locale){ + this.jdbcExportService =jdbcExportService; + this.exportConfigure =exportConfigure; + this.locale =locale; + } + @Override + public void run() { + try { + jdbcExportService.export(exportConfigure,progressInfo,locale); + } catch (Exception e) { + this.exception =e; + log.error("",e); + } + } + public ProgressInfo getProgressInfo(){ + return progressInfo; + } + public Exception getException() { + return exception; + } +} diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/DataExporter.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/DataExporter.java index 326c39e6..6f3aa9d2 100644 --- a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/DataExporter.java +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/DataExporter.java @@ -1,13 +1,15 @@ package io.sc.platform.jdbc.exporter; +import io.sc.platform.core.support.ProgressInfo; import io.sc.platform.jdbc.exporter.support.DataExportConfigure; import javax.sql.DataSource; import java.util.Iterator; +import java.util.Locale; import java.util.ServiceLoader; public interface DataExporter { - public void export(DataSource dataSource, DataExportConfigure configure); + public void export(DataSource dataSource, DataExportConfigure configure, ProgressInfo progressInfo, Locale locale) throws Exception; public static DataExporter newInstance(){ ServiceLoader serviceLoader =ServiceLoader.load(DataExporter.class); diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/exception/ExporterNotRunningException.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/exception/ExporterNotRunningException.java new file mode 100644 index 00000000..90c14d16 --- /dev/null +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/exception/ExporterNotRunningException.java @@ -0,0 +1,5 @@ +package io.sc.platform.jdbc.exporter.exception; + +public class ExporterNotRunningException extends RuntimeException { + +} diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/exception/ExporterRunningException.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/exception/ExporterRunningException.java new file mode 100644 index 00000000..04d37d5d --- /dev/null +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/exception/ExporterRunningException.java @@ -0,0 +1,5 @@ +package io.sc.platform.jdbc.exporter.exception; + +public class ExporterRunningException extends RuntimeException { + +} diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/DataExportConfigure.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/DataExportConfigure.java index ab3f78bd..26d73853 100644 --- a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/DataExportConfigure.java +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/DataExportConfigure.java @@ -4,8 +4,7 @@ public class DataExportConfigure { private String datasource; private String schema; private ExportTable[] tables; - private String outputPath; - private ExportMode exportMode =ExportMode.SINGLE_FILE; + private int fetchSize =1000; public String getDatasource() { return datasource; @@ -31,19 +30,11 @@ public class DataExportConfigure { this.tables = tables; } - public String getOutputPath() { - return outputPath; + public int getFetchSize() { + return fetchSize; } - public void setOutputPath(String outputPath) { - this.outputPath = outputPath; - } - - public ExportMode getExportMode() { - return exportMode; - } - - public void setExportMode(ExportMode exportMode) { - this.exportMode = exportMode; + public void setFetchSize(int fetchSize) { + this.fetchSize = fetchSize; } } diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/ExportMode.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/ExportMode.java deleted file mode 100644 index a721b9bf..00000000 --- a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/ExportMode.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.sc.platform.jdbc.exporter.support; - -public enum ExportMode { - SINGLE_FILE, // 单文件 - MULTI_FILE; // 多文件(每个表一个文件) -} diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/SchemaExportConfigure.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/SchemaExportConfigure.java index f9cf6dd9..c9ca4d7a 100644 --- a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/SchemaExportConfigure.java +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/exporter/support/SchemaExportConfigure.java @@ -4,8 +4,6 @@ public class SchemaExportConfigure { private String datasource; private String schema; private String[] tables; - private String outputPath; - private ExportMode exportMode =ExportMode.SINGLE_FILE; public String getDatasource() { return datasource; @@ -31,19 +29,4 @@ public class SchemaExportConfigure { this.tables = tables; } - public String getOutputPath() { - return outputPath; - } - - public void setOutputPath(String outputPath) { - this.outputPath = outputPath; - } - - public ExportMode getExportMode() { - return exportMode; - } - - public void setExportMode(ExportMode exportMode) { - this.exportMode = exportMode; - } } diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/JdbcExportService.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/JdbcExportService.java new file mode 100644 index 00000000..e2baf65a --- /dev/null +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/JdbcExportService.java @@ -0,0 +1,10 @@ +package io.sc.platform.jdbc.service; + +import io.sc.platform.core.support.ProgressInfo; +import io.sc.platform.jdbc.exporter.support.DataExportConfigure; + +import java.util.Locale; + +public interface JdbcExportService { + public void export(DataExportConfigure configure, ProgressInfo progressInfo, Locale locale) throws Exception; +} 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 bec1c890..054e230f 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 @@ -7,6 +7,6 @@ import io.sc.platform.jdbc.meta.support.TableSummary; import java.util.List; public interface JdbcMetaDataLoaderService { - public List getSchemaNames(String datasourceName) throws Exception; + public List getSchemas(String datasourceName) throws Exception; public List
getTables(String datasourceName, String schemaName) throws Exception; } diff --git a/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/impl/JdbcExportServiceImpl.java b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/impl/JdbcExportServiceImpl.java new file mode 100644 index 00000000..3446f54f --- /dev/null +++ b/io.sc.platform.jdbc/src/main/java/io/sc/platform/jdbc/service/impl/JdbcExportServiceImpl.java @@ -0,0 +1,43 @@ +package io.sc.platform.jdbc.service.impl; + +import io.sc.platform.core.support.ProgressInfo; +import io.sc.platform.jdbc.exporter.DataExporter; +import io.sc.platform.jdbc.exporter.support.DataExportConfigure; +import io.sc.platform.jdbc.service.DatasourceService; +import io.sc.platform.jdbc.service.JdbcExportService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.sql.DataSource; +import java.util.Date; +import java.util.Locale; + +@Service +public class JdbcExportServiceImpl implements JdbcExportService { + @Autowired private DatasourceService datasourceService; + + @Override + public void export(DataExportConfigure configure, ProgressInfo progressInfo, Locale locale) throws Exception { + if(configure==null){ + return; + } + progressInfo.setRunning(true); + DataSource dataSource =null; + if(StringUtils.hasText(configure.getDatasource())){ + dataSource =datasourceService.getDatasource(configure.getDatasource()); + }else{ + dataSource =datasourceService.getDefaultDatasource(); + } + + progressInfo.setStartDatetime(new Date()); + progressInfo.setTotalWeight(100); + + DataExporter dataExporter =DataExporter.newInstance(); + dataExporter.export(dataSource,configure,progressInfo,locale); + + //执行完毕 + progressInfo.setCompletedDatetime(new Date()); + progressInfo.setCurrentWeight(progressInfo.getTotalWeight()); + } +} 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 4ecdd402..2f578ced 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 @@ -20,7 +20,7 @@ public class JdbcMetaDataLoaderServiceImpl implements JdbcMetaDataLoaderService @Autowired MetaDataLoader metaDataLoader; @Override - public List getSchemaNames(String datasourceName) throws Exception { + public List getSchemas(String datasourceName) throws Exception { DataSource dataSource =null; if(StringUtils.hasText(datasourceName)) { dataSource =datasourceService.getDatasource(datasourceName); diff --git a/io.sc.platform.lcdp.frontend/package.json b/io.sc.platform.lcdp.frontend/package.json index c7cda9f0..3161058c 100644 --- a/io.sc.platform.lcdp.frontend/package.json +++ b/io.sc.platform.lcdp.frontend/package.json @@ -1,10 +1,10 @@ { "name": "io.sc.platform.lcdp.frontend", - "version": "8.1.24", + "version": "8.1.25", "description": "", "private": false, "keywords": [ - + ], "author": "", "license": "ISC", @@ -93,7 +93,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.133", + "platform-core": "8.1.136", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -102,4 +102,4 @@ "vue-router": "4.2.5", "vue-codemirror6": "1.2.0" } -} +} \ No newline at end of file diff --git a/io.sc.platform.mvc.frontend/package.json b/io.sc.platform.mvc.frontend/package.json index 95f94981..35d0f9a4 100644 --- a/io.sc.platform.mvc.frontend/package.json +++ b/io.sc.platform.mvc.frontend/package.json @@ -1,10 +1,10 @@ { "name": "io.sc.platform.mvc.frontend", - "version": "8.1.24", + "version": "8.1.25", "description": "", "private": false, "keywords": [ - + ], "author": "", "license": "ISC", @@ -80,7 +80,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.133", + "platform-core": "8.1.136", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -102,4 +102,4 @@ "codemirror": "6.0.1", "vue-codemirror6": "1.2.0" } -} +} \ No newline at end of file diff --git a/io.sc.platform.security.frontend/package.json b/io.sc.platform.security.frontend/package.json index 65ebd72a..55090cb7 100644 --- a/io.sc.platform.security.frontend/package.json +++ b/io.sc.platform.security.frontend/package.json @@ -1,10 +1,10 @@ { "name": "io.sc.platform.security.frontend", - "version": "8.1.24", + "version": "8.1.25", "description": "", "private": false, "keywords": [ - + ], "author": "", "license": "ISC", @@ -99,6 +99,6 @@ "vue-dompurify-html": "5.0.1", "vue-i18n": "9.8.0", "vue-router": "4.2.5", - "platform-core": "8.1.133" + "platform-core": "8.1.136" } -} +} \ No newline at end of file diff --git a/io.sc.platform.system.frontend/package.json b/io.sc.platform.system.frontend/package.json index 072c8aac..d4dc84b0 100644 --- a/io.sc.platform.system.frontend/package.json +++ b/io.sc.platform.system.frontend/package.json @@ -1,10 +1,10 @@ { "name": "io.sc.platform.system.frontend", - "version": "8.1.24", + "version": "8.1.25", "description": "", "private": false, "keywords": [ - + ], "author": "", "license": "ISC", @@ -80,7 +80,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.133", + "platform-core": "8.1.136", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -102,4 +102,4 @@ "codemirror": "6.0.1", "vue-codemirror6": "1.2.0" } -} +} \ No newline at end of file diff --git a/io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue b/io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue index 945dfb19..c834b8ba 100644 --- a/io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue +++ b/io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue @@ -12,7 +12,7 @@ :columns="[ { width: 200, name: 'code', label: $t('code') }, { width: 200, name: 'value', label: $t('value') }, - { width: '100%', name: 'value', label: $t('displayValue'), sortable: false, format: (value) => $t(value) }, + { width: '100%', name: 'value', label: $t('displayValue'), sortable: false, format: (value, row) => $t(row.code + '.' + row.value) }, { width: 100, name: 'order', label: $t('order'), align: 'right' }, { width: 100, name: 'lastModifier', label: $t('lastModifier') }, { width: 150, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() },