diff --git a/gradle.properties b/gradle.properties index 6327bfd0..9bab43b1 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.20 +platform_version=8.1.22 platform_plugin_version=8.1.13 -platform_core_frontend_version=8.1.83 +platform_core_frontend_version=8.1.88 ########################################################### # dependencies version diff --git a/io.sc.platform.core.frontend/package.json b/io.sc.platform.core.frontend/package.json index df67488a..e28fc76e 100644 --- a/io.sc.platform.core.frontend/package.json +++ b/io.sc.platform.core.frontend/package.json @@ -1,6 +1,6 @@ { "name": "platform-core", - "version": "8.1.87", + "version": "8.1.92", "description": "前端核心包,用于快速构建前端的脚手架", "//main": "库的主文件", "main": "dist/platform-core.js", diff --git a/io.sc.platform.core.frontend/src/platform/components-ext/formater/BooleanFormater.ts b/io.sc.platform.core.frontend/src/platform/components-ext/formater/BooleanFormater.ts index 516f8018..3d794ed6 100644 --- a/io.sc.platform.core.frontend/src/platform/components-ext/formater/BooleanFormater.ts +++ b/io.sc.platform.core.frontend/src/platform/components-ext/formater/BooleanFormater.ts @@ -21,4 +21,11 @@ const enableTagFormater = (value) => { }; }; -export { yesNoFormater, trueFalseFormater, enableTagFormater }; +const successFailedTagFormater = (value) => { + return { + componentType: 'WSuccessFailedTag', + attrs: { success: value }, + }; +}; + +export { yesNoFormater, trueFalseFormater, enableTagFormater, successFailedTagFormater }; diff --git a/io.sc.platform.core.frontend/src/platform/components-ext/formater/EnumFormater.ts b/io.sc.platform.core.frontend/src/platform/components-ext/formater/EnumFormater.ts index 90e1cd7d..6c82d4a3 100644 --- a/io.sc.platform.core.frontend/src/platform/components-ext/formater/EnumFormater.ts +++ b/io.sc.platform.core.frontend/src/platform/components-ext/formater/EnumFormater.ts @@ -1,19 +1,25 @@ import type { OptionItemType } from '@/platform/types'; import { i18n } from '@/platform/plugin'; +import { Tools } from '@/platform/utils'; class EnumFormater { #enumMap = {}; constructor(options: OptionItemType[]) { for (const option of options) { - this.#enumMap[option.value] = option.label; + if (!Tools.isUndefinedOrNull(option.value)) { + this.#enumMap[option.value] = option.label; + } } } public formater() { const enumMap = this.#enumMap; return (value) => { - return i18n.global.t(enumMap[value]); + if (!Tools.isUndefinedOrNull(value)) { + return i18n.global.t(enumMap[value]); + } + return ''; }; } } diff --git a/io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts b/io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts index 6083e4f4..2bf264dd 100644 --- a/io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts +++ b/io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts @@ -1,5 +1,5 @@ import type { EnumType } from '@/platform/types'; -import { yesNoFormater, trueFalseFormater, enableTagFormater } from './BooleanFormater'; +import { yesNoFormater, trueFalseFormater, enableTagFormater, successFailedTagFormater } from './BooleanFormater'; import { dateOnlyFormater } from './DatetimeFormater'; import { menuTypeFormater } from './MenuTypeFormater'; import { EnumFormater } from './EnumFormater'; @@ -11,6 +11,10 @@ class Formater { return enableTagFormater; } + public static successTag() { + return successFailedTagFormater; + } + public static yesNo() { return yesNoFormater; } diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/WEditor.vue b/io.sc.platform.core.frontend/src/platform/components/form/elements/WSelectUserText.vue similarity index 92% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/WEditor.vue rename to io.sc.platform.core.frontend/src/platform/components/form/elements/WSelectUserText.vue index b31df7cd..095917a1 100644 --- a/io.sc.platform.core.frontend/src/platform/components/form/elements/WEditor.vue +++ b/io.sc.platform.core.frontend/src/platform/components/form/elements/WSelectUserText.vue @@ -2,18 +2,19 @@
+
@@ -22,7 +23,7 @@ import { ref, computed, defineProps, useAttrs } from 'vue'; import { FormValidators } from '@/platform/components'; -const textareaRef = ref(); +const textRef = ref(); const attrs = useAttrs(); const inRules = attrs.rules; const props = defineProps({ @@ -65,8 +66,8 @@ const rulesComputed = computed(() => { } else if (hideIfComputed.value) { rules = []; } - if (textareaRef?.value) { - textareaRef.value.resetValidation(); + if (textRef?.value) { + textRef.value.resetValidation(); } return rules; }); 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 b5d42198..a472af4f 100644 --- a/io.sc.platform.core.frontend/src/platform/components/index.ts +++ b/io.sc.platform.core.frontend/src/platform/components/index.ts @@ -27,6 +27,7 @@ import WInfoPanel from './panel/WInfoPanel.vue'; import WGrid from './grid/WGrid.vue'; import WToolbar from './toolbar/WToolbar.vue'; import WEnableTag from './tag/WEnableTag.vue'; +import WSuccessFailedTag from './tag/WSuccessFailedTag.vue'; export default { install: (app: App) => { @@ -57,6 +58,7 @@ export default { app.component('WGrid', WGrid); app.component('WToolbar', WToolbar); app.component('WEnableTag', WEnableTag); + app.component('WSuccessFailedTag', WSuccessFailedTag); }, }; @@ -83,6 +85,7 @@ export { WGrid, WToolbar, WEnableTag, + WSuccessFailedTag, }; export { PlatformIconEnum } from './utils'; diff --git a/io.sc.platform.core.frontend/src/platform/components/tag/WSuccessFailedTag.vue b/io.sc.platform.core.frontend/src/platform/components/tag/WSuccessFailedTag.vue new file mode 100644 index 00000000..07143f98 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/tag/WSuccessFailedTag.vue @@ -0,0 +1,13 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/index.ts b/io.sc.platform.core.frontend/src/platform/index.ts index c063cd01..9ffed838 100644 --- a/io.sc.platform.core.frontend/src/platform/index.ts +++ b/io.sc.platform.core.frontend/src/platform/index.ts @@ -120,6 +120,7 @@ export { WGrid, WTreeGrid, WEnableTag, + WSuccessFailedTag, } from './components'; export { PlatformIconEnum } from './components'; diff --git a/io.sc.platform.core.frontend/src/views/TreeGrid.vue b/io.sc.platform.core.frontend/src/views/TreeGrid.vue index 16438869..91556376 100644 --- a/io.sc.platform.core.frontend/src/views/TreeGrid.vue +++ b/io.sc.platform.core.frontend/src/views/TreeGrid.vue @@ -1,56 +1,58 @@ - diff --git a/io.sc.platform.core.frontend/template-project/package.json b/io.sc.platform.core.frontend/template-project/package.json index 5c4867b9..03654e94 100644 --- a/io.sc.platform.core.frontend/template-project/package.json +++ b/io.sc.platform.core.frontend/template-project/package.json @@ -1,6 +1,6 @@ { "name": "platform-core", - "version": "8.1.87", + "version": "8.1.92", "description": "前端核心包,用于快速构建前端的脚手架", "private": false, "keywords": [], @@ -92,7 +92,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.87", + "platform-core": "8.1.92", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", diff --git a/io.sc.platform.core.frontend/template-project/src/views/TreeGrid.vue b/io.sc.platform.core.frontend/template-project/src/views/TreeGrid.vue index 16438869..91556376 100644 --- a/io.sc.platform.core.frontend/template-project/src/views/TreeGrid.vue +++ b/io.sc.platform.core.frontend/template-project/src/views/TreeGrid.vue @@ -1,56 +1,58 @@ - diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/support/FileWrapper.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/support/FileWrapper.java index 21abf486..8ac3c473 100644 --- a/io.sc.platform.core/src/main/java/io/sc/platform/core/support/FileWrapper.java +++ b/io.sc.platform.core/src/main/java/io/sc/platform/core/support/FileWrapper.java @@ -1,18 +1,22 @@ package io.sc.platform.core.support; +import io.sc.platform.core.util.StringUtil; + import java.util.Date; public class FileWrapper { private String name; - private Date lastModified; - private String size; + private Date lastModifyDate; + private long size; + private String commaSize; public FileWrapper(){} - public FileWrapper(String name,Date lastModified,String size){ + public FileWrapper(String name,Date lastModifyDate,long size){ this.name =name; - this.lastModified =lastModified; + this.lastModifyDate =lastModifyDate; this.size =size; + this.commaSize = StringUtil.commaStyle(size); } public String getName() { @@ -21,16 +25,27 @@ public class FileWrapper { public void setName(String name) { this.name = name; } - public Date getLastModified() { - return lastModified; + + public Date getLastModifyDate() { + return lastModifyDate; } - public void setLastModified(Date lastModified) { - this.lastModified = lastModified; + + public void setLastModifyDate(Date lastModifyDate) { + this.lastModifyDate = lastModifyDate; } - public String getSize() { + + public long getSize() { return size; } - public void setSize(String size) { + public void setSize(long size) { this.size = size; } + + public String getCommaSize() { + return commaSize; + } + + public void setCommaSize(String commaSize) { + this.commaSize = commaSize; + } } diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties index 2016f8a8..e0e52932 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties @@ -115,6 +115,7 @@ query=Query redirect=Redirect refresh=Refresh remove=Remove +removeAll=Remove All reset=Reset restore=Restore reverse=Reverse @@ -156,4 +157,5 @@ confirmNewPassword=Confirm New Password accountExpired=Expired accountLocked=Locked credentialsExpired=Credentials Expired -javascript=JavaScript +icon=Icon +i18nMessage=I18N Message \ No newline at end of file diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties index 710b8fa5..3db413c9 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties @@ -115,6 +115,7 @@ query=\u67E5\u8A62 redirect=\u91CD\u5B9A\u5411 refresh=\u5237\u65B0 remove=\u79FB\u9664 +removeAll=\u79FB\u9664\u6240\u6709 reset=\u91CD\u7F6E restore=\u6062\u5FA9 reverse=\u53CD\u8F49 @@ -156,4 +157,5 @@ confirmNewPassword=\u78BA\u8A8D\u65B0\u5BC6\u78BC accountExpired=\u904E\u671F accountLocked=\u9396\u5B9A credentialsExpired=\u5BC6\u78BC\u904E\u671F -javascript=JavaScript +icon=\u5716\u6A19 +i18nMessage=\u591A\u8A9E\u8A00\u6D88\u606F \ No newline at end of file diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties index 2e8421c3..552d2ffb 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties @@ -115,6 +115,7 @@ query=\u67E5\u8BE2 redirect=\u91CD\u5B9A\u5411 refresh=\u5237\u65B0 remove=\u79FB\u9664 +removeAll=\u79FB\u9664\u6240\u6709 reset=\u91CD\u7F6E restore=\u6062\u590D reverse=\u53CD\u8F6C @@ -156,4 +157,5 @@ confirmNewPassword=\u786E\u8BA4\u65B0\u5BC6\u7801 accountExpired=\u8FC7\u671F accountLocked=\u9501\u5B9A credentialsExpired=\u5BC6\u7801\u8FC7\u671F -javascript=JavaScript \ No newline at end of file +icon=\u56FE\u6807 +i18nMessage=\u591A\u8BED\u8A00\u6D88\u606F \ No newline at end of file diff --git a/io.sc.platform.developer.frontend/package.json b/io.sc.platform.developer.frontend/package.json index 7fe8487f..cf550c11 100644 --- a/io.sc.platform.developer.frontend/package.json +++ b/io.sc.platform.developer.frontend/package.json @@ -1,6 +1,6 @@ { "name": "io.sc.platform.developer.frontend", - "version": "8.1.20", + "version": "8.1.22", "description": "", "private": false, "keywords": [], @@ -78,7 +78,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.83", + "platform-core": "8.1.88", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -100,4 +100,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/views/plugin/Menus.vue b/io.sc.platform.developer.frontend/src/views/plugin/Menus.vue index 27af1444..752ddac4 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/Menus.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/Menus.vue @@ -1,4 +1,79 @@ - + diff --git a/io.sc.platform.gradle/templates/pgp/app/build.gradle b/io.sc.platform.gradle/templates/pgp/app/build.gradle index cd2ddcf8..e6e470a4 100644 --- a/io.sc.platform.gradle/templates/pgp/app/build.gradle +++ b/io.sc.platform.gradle/templates/pgp/app/build.gradle @@ -13,7 +13,11 @@ dependencies { implementation ( project(":io.sc.platform.app"), project(":io.sc.platform.developer"), + + //project(":io.sc.platform.job.core"), + //project(":io.sc.platform.job.executor"), //project(":io.sc.platform.job.manager"), + ) } diff --git a/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt b/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt index de40ec3f..e8a7f8e9 100644 --- a/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt +++ b/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt @@ -2,12 +2,9 @@ package app.platform; import io.sc.platform.core.ApplicationLauncher; import io.sc.platform.core.PlatformSpringBootServletInitializer; -import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.WebApplicationInitializer; -import java.sql.Types; - /** * 应用程序入口 */ diff --git a/io.sc.platform.gradle/templates/pgp/setup/build.gradle.txt b/io.sc.platform.gradle/templates/pgp/setup/build.gradle.txt index 655059bd..04bd9898 100644 --- a/io.sc.platform.gradle/templates/pgp/setup/build.gradle.txt +++ b/io.sc.platform.gradle/templates/pgp/setup/build.gradle.txt @@ -371,8 +371,6 @@ subprojects { * pnpm sync *----------------------------------------------------------------*/ task frontendNpmSync(type:Exec){ - commandLine 'cd', '.' - /* if(isFrontendProject(file('.')) && !project.name.contains("io.sc.platform.security.frontend")){ workingDir '.' if(org.gradle.internal.os.OperatingSystem.current().isWindows()){ @@ -386,7 +384,7 @@ subprojects { }else{ commandLine 'cd', '.' } - }*/ + } } tasks.frontendNpmSync.doFirst { if(isFrontendProject(file('.'))) { diff --git a/io.sc.platform.gradle/templates/pgp/setup/gradle.properties b/io.sc.platform.gradle/templates/pgp/setup/gradle.properties index 7a5cf595..9bab43b1 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.19 +platform_version=8.1.22 platform_plugin_version=8.1.13 -platform_core_frontend_version=8.1.45 +platform_core_frontend_version=8.1.88 ########################################################### # dependencies version @@ -50,6 +50,7 @@ cxf_version=3.2.7 dm_hibernate_version=8.1.2.192 flowable_version=6.8.0 guava_version=31.1-jre +ipaddress_version=5.4.0 jackson_version=2.13.5 jasypt_version=2.1.2 jboss_logging_version=3.3.2.Final @@ -64,6 +65,7 @@ mybatis_version=3.5.10 opencsv_version=5.7.1 oshi_version=6.4.2 p6spy_version=3.9.1 +pinyin4j_version=2.5.1 poi_ooxml_version=3.17 schemacrawler_version=16.19.11 #schemacrawler_version=14.21.02 @@ -71,7 +73,7 @@ spring_boot_version=2.7.18 spring_cloud_alibaba_version=2021.0.4.0 spring_cloud_context_version=3.1.4 spring_cloud_version=2021.0.8 -spring_security_oauth2_authorization_server_version=0.4.4 +spring_security_oauth2_authorization_server_version=0.4.5 spring_statemachine_version=3.2.1 webjars_locator_weblogic_version=0.10 zip4j_version=2.11.5 diff --git a/io.sc.platform.lcdp.frontend/package.json b/io.sc.platform.lcdp.frontend/package.json index 9a5ea6ae..7e175caa 100644 --- a/io.sc.platform.lcdp.frontend/package.json +++ b/io.sc.platform.lcdp.frontend/package.json @@ -1,6 +1,6 @@ { "name": "io.sc.platform.lcdp.frontend", - "version": "8.1.20", + "version": "8.1.22", "description": "", "private": false, "keywords": [], @@ -91,7 +91,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.83", + "platform-core": "8.1.88", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -100,4 +100,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 7f39f5e9..019551f0 100644 --- a/io.sc.platform.mvc.frontend/package.json +++ b/io.sc.platform.mvc.frontend/package.json @@ -1,6 +1,6 @@ { "name": "io.sc.platform.mvc.frontend", - "version": "8.1.20", + "version": "8.1.22", "description": "", "private": false, "keywords": [], @@ -78,7 +78,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.83", + "platform-core": "8.1.88", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -100,4 +100,4 @@ "codemirror": "6.0.1", "vue-codemirror6": "1.2.0" } -} +} \ No newline at end of file diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryResult.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryResult.java index faa34eb9..ce908a88 100644 --- a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryResult.java +++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryResult.java @@ -2,7 +2,9 @@ package io.sc.platform.orm.service.support; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -23,4 +25,20 @@ public class QueryResult { return new PageImpl(Collections.emptyList()); } } + + public static Page page(List list, Pageable pageable){ + if(list!=null && !list.isEmpty()) { + int page =pageable.getPageNumber(); + int pageSize =pageable.getPageSize(); + int total =list.size(); + int first =pageSize * page; + List result =new ArrayList<>(); + for(int i=first;i(result,pageable,total); + }else{ + return new PageImpl(Collections.emptyList()); + } + } } diff --git a/io.sc.platform.security.frontend/package.json b/io.sc.platform.security.frontend/package.json index 0d1438eb..5ff4acca 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.20", + "version": "8.1.22", "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.83" + "platform-core": "8.1.88" } -} +} \ 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 8fcc549d..1677d3e3 100644 --- a/io.sc.platform.system.frontend/package.json +++ b/io.sc.platform.system.frontend/package.json @@ -1,6 +1,6 @@ { "name": "io.sc.platform.system.frontend", - "version": "8.1.20", + "version": "8.1.22", "description": "", "private": false, "keywords": [], @@ -78,7 +78,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.87", + "platform-core": "8.1.92", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -100,4 +100,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/i18n/messages.json b/io.sc.platform.system.frontend/src/i18n/messages.json index d57403c5..274ecdbd 100644 --- a/io.sc.platform.system.frontend/src/i18n/messages.json +++ b/io.sc.platform.system.frontend/src/i18n/messages.json @@ -51,6 +51,8 @@ "system.shared.selectMenu.grid.toolbar.save":"Save", "system.shared.selectMenu.grid.toolbar.save.tip":"Are you sure to update menus?", + "system.shared.importMenuPlugin.dialog.title": "Import Menu Plugins", + "system.corporation.grid.title":"Corporation Tree", "system.corporation.grid.toolbar.addTop":"Add Top Corporation", "system.corporation.grid.toolbar.addChild":"Add Child Corporation", @@ -66,19 +68,29 @@ "system.role.grid.title":"Role List", "system.org.grid.title":"Organization Tree", - "system.org.grid.toolbar.addTop":"Add Top Org", - "system.org.grid.toolbar.addChild":"Add Child Org", "system.menu.grid.title":"Menu Tree", - "system.menu.grid.toolbar.addTop":"Add Top Menu", - "system.menu.grid.toolbar.addChild":"Add Child Menu", "system.menu.grid.entity.titleI18nKey":"Title i18n Key", - "system.menu.grid.entity.routeName":"Title i18n Key", + "system.menu.grid.entity.javaScript":"JavaScript", + "system.menu.grid.entity.routeName":"Route Name", + "system.menu.grid.entity.routeQuery":"Route Query", + "system.menu.grid.entity.url":"URL", + "system.menu.grid.entity.urlOpenType":"URL Open Type", "system.announcementManager.grid.title":"Announcement List", "system.notification.grid.title":"Messages List", + "system.i18n.grid.toolbar.removeAll.tip":"Are you sure to remove ALL i18n messages?", + "system.i18n.grid.toolbar.importAll.tip":"Are you sure to import ALL i18n messages?", + + "system.monitor.log.viewer.logRows":"The Last Row Count of Log File", + "system.monitor.log.viewer.autoRefresh":"Auto Refresh(1 / 2 sec, stop after 300 times auto refreshed)", + "system.monitor.log.viewer.action.refreshNow":"Refresh", + "system.monitor.log.download.grid.title":"Log File List", + "system.monitor.log.level.grid.title":"Log Level List", + "system.monitor.log.level.entity.configuredLevel":"Configured", + "system.monitor.log.level.entity.effectiveLevel":"Effective", "system.monitor.log.tab.view":"Log View", "system.monitor.log.tab.download":"Log Download", diff --git a/io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json b/io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json index 3b8e8573..d7f612ed 100644 --- a/io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json +++ b/io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json @@ -87,17 +87,35 @@ "system.shared.selectMenu.grid.toolbar.save":"保存", "system.shared.selectMenu.grid.toolbar.save.tip":"您确定要更新菜單吗?", + "system.shared.importMenuPlugin.dialog.title": "導入菜單插件", + "system.announcement.gridTitle":"公告列表", "system.monitor.auditlog.gridTitle":"審計日誌列表", - "system.menu.action.addTop":"新增頂級菜單", - "system.menu.action.addChild":"新增子菜單", + "system.menu.grid.title":"菜單樹", + "system.menu.grid.entity.titleI18nKey":"標題多語言消息鍵", + "system.menu.grid.entity.javaScript":"JavaScript", + "system.menu.grid.entity.routeName":"路由名稱", + "system.menu.grid.entity.routeQuery":"路由查詢參數", + "system.menu.grid.entity.url":"URL", + "system.menu.grid.entity.urlOpenType":"URL 打開方式", "system.announcementManager.grid.title":"公告列表", "system.notification.grid.title":"消息列表", + "system.i18n.grid.toolbar.removeAll.tip":"您確定要刪除所有多語言消息嗎?", + "system.i18n.grid.toolbar.importAll.tip":"您確定要所導入所有多語言消息嗎?", + + "system.monitor.log.viewer.logRows":"顯示日誌文件最後行數", + "system.monitor.log.viewer.autoRefresh":"自動刷新(頻率:1次/2秒,超過 300 次后停止自動刷新)", + "system.monitor.log.viewer.action.refreshNow":"刷新", + "system.monitor.log.download.grid.title":"日誌文件列表", + "system.monitor.log.level.grid.title":"日誌級別列表", + "system.monitor.log.level.entity.configuredLevel":"配置級別", + "system.monitor.log.level.entity.effectiveLevel":"生效級別", + "system.corporation.action.addTop":"新增頂級法人", "system.corporation.action.addChild":"新增子法人", diff --git a/io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json b/io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json index 2a6915d1..9661e87f 100644 --- a/io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json +++ b/io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json @@ -51,6 +51,8 @@ "system.shared.selectMenu.grid.toolbar.save":"保存", "system.shared.selectMenu.grid.toolbar.save.tip":"您确定要更新菜单吗?", + "system.shared.importMenuPlugin.dialog.title": "导入菜单插件", + "system.corporation.grid.title":"法人树", "system.corporation.grid.toolbar.addTop":"新增顶级法人", "system.corporation.grid.toolbar.addChild":"新增子法人", @@ -66,18 +68,30 @@ "system.role.grid.title":"角色列表", "system.org.grid.title":"机构树", - "system.org.grid.toolbar.addTop":"新增顶级机构", - "system.org.grid.toolbar.addChild":"新增子机构", "system.menu.grid.title":"菜单树", - "system.menu.grid.toolbar.addTop":"新增顶级菜单", - "system.menu.grid.toolbar.addChild":"新增子菜单", + "system.menu.grid.entity.titleI18nKey":"标题多语言消息键", + "system.menu.grid.entity.javaScript":"JavaScript", + "system.menu.grid.entity.routeName":"路由名称", + "system.menu.grid.entity.routeQuery":"路由查询参数", + "system.menu.grid.entity.url":"URL", + "system.menu.grid.entity.urlOpenType":"URL 打开方式", "system.announcementManager.grid.title":"公告列表", "system.notification.grid.title":"消息列表", - + "system.i18n.grid.toolbar.removeAll.tip":"您确定要删除所有多语言消息吗?", + "system.i18n.grid.toolbar.importAll.tip":"您确定要导入所有多语言消息吗?", + + + "system.monitor.log.viewer.logRows":"显示日志文件最后行数", + "system.monitor.log.viewer.autoRefresh":"自动刷新(频率:1次/2秒,超过 300 次后停止自动刷新)", + "system.monitor.log.viewer.action.refreshNow":"刷新", + "system.monitor.log.download.grid.title":"日志文件列表", + "system.monitor.log.level.grid.title":"日志级别列表", + "system.monitor.log.level.entity.configuredLevel":"配置级别", + "system.monitor.log.level.entity.effectiveLevel":"生效级别", "system.announcement.gridTitle":"公告列表", "system.monitor.auditlog.gridTitle":"审计日志列表", 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 28bd4a66..5940c582 100644 --- a/io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue +++ b/io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue @@ -1,62 +1,63 @@ diff --git a/io.sc.platform.system.frontend/src/views/menu/ImportMenuPluginDialog.vue b/io.sc.platform.system.frontend/src/views/menu/ImportMenuPluginDialog.vue new file mode 100644 index 00000000..a162985e --- /dev/null +++ b/io.sc.platform.system.frontend/src/views/menu/ImportMenuPluginDialog.vue @@ -0,0 +1,135 @@ + + diff --git a/io.sc.platform.system.frontend/src/views/menu/Menu.vue b/io.sc.platform.system.frontend/src/views/menu/Menu.vue index a2f850cf..9fafbed5 100644 --- a/io.sc.platform.system.frontend/src/views/menu/Menu.vue +++ b/io.sc.platform.system.frontend/src/views/menu/Menu.vue @@ -34,7 +34,10 @@ { name: 'import', label: $t('import'), - click: () => {}, + icon: 'bi-arrow-right-circle', + click: () => { + importMenuPluginDialogRef.open(); + }, }, 'separator', 'view', @@ -44,7 +47,7 @@ { width: '100%', name: 'titleI18nKey', - label: $t('name'), + label: $t('system.menu.grid.entity.titleI18nKey'), sortable: false, format: (value, row) => { if (row.type === 'SEPARATOR') { @@ -66,33 +69,57 @@ :editor="{ dialog: { width: '600px', - height: '550px', + height: '450px', }, form: { colsNum: 1, fields: [ - { name: 'type', label: $t('type'), type: 'select', required: true, options: Options.enum(MenuTypeEnum, false) }, - { name: 'titleI18nKey', label: $t('titleI18nKey'), type: 'text', required: true }, + { name: 'type', label: $t('type'), type: 'select', required: true, options: Options.enum(MenuTypeEnum, false), defaultValue: 'GROUP' }, + { name: 'titleI18nKey', label: $t('system.menu.grid.entity.titleI18nKey'), type: 'text', required: true }, { name: 'icon', label: $t('icon'), type: 'text' }, { name: 'enable', label: $t('enable'), type: 'checkbox', defaultValue: true }, { name: 'order', label: $t('order'), type: 'text' }, { name: 'javaScript', - label: $t('javascript'), + label: $t('system.menu.grid.entity.javaScript'), + type: 'textarea', + showIf: (form) => { + return form.getFieldValue('type') === 'JAVASCRIPT'; + }, + }, + { + name: 'routeName', + label: $t('system.menu.grid.entity.routeName'), type: 'text', - enableIf: (row) => { - console.log(row); + showIf: (form) => { + return form.getFieldValue('type') === 'ROUTE'; + }, + }, + { + name: 'routeQuery', + label: $t('system.menu.grid.entity.routeQuery'), + type: 'text', + showIf: (form) => { + return form.getFieldValue('type') === 'ROUTE'; + }, + }, + { + name: 'url', + label: $t('url'), + type: 'text', + showIf: (form) => { + return form.getFieldValue('type') === 'URL'; }, }, - { name: 'routeName', label: $t('routeName'), type: 'text' }, - { name: 'routeQuery', label: $t('routeQuery'), type: 'text' }, - { name: 'url', label: $t('url'), type: 'text' }, { name: 'urlOpenType', - label: $t('urlOpenType'), + label: $t('system.menu.grid.entity.urlOpenType'), type: 'select', options: Options.enum(UrlOpenTypeEnum, false), defaultValue: 'NEW_WINDOW', + showIf: (form) => { + return form.getFieldValue('type') === 'URL'; + }, }, ], }, @@ -167,6 +194,7 @@ + @@ -177,6 +205,7 @@ import { ref } from 'vue'; import { Environment, axios, EnumTools, Formater, Options } from 'platform-core'; import SelectRoleGrid from '../shared/SelectRoleGrid.vue'; import SelectOrgTreeGrid from '../shared/SelectOrgTreeGrid.vue'; +import ImportMenuPluginDialog from './ImportMenuPluginDialog.vue'; import AddTopMenuDialog from './AddTopMenuDialog.vue'; import AddMenuDialog from './AddMenuDialog.vue'; import EditMenuDialog from './EditMenuDialog.vue'; @@ -189,6 +218,7 @@ console.log(Options.enum(UrlOpenTypeEnum, false)); const menuTreeGridRef = ref(); const roleGridRef = ref(); const orgTreeGridRef = ref(); +const importMenuPluginDialogRef = ref(); const selectedTabRef = ref('role'); const currentSelectedMenuId = ref(''); diff --git a/io.sc.platform.system.frontend/src/views/monitor/AuditLog.vue b/io.sc.platform.system.frontend/src/views/monitor/AuditLog.vue index 2eb7e4c5..309ff0e4 100644 --- a/io.sc.platform.system.frontend/src/views/monitor/AuditLog.vue +++ b/io.sc.platform.system.frontend/src/views/monitor/AuditLog.vue @@ -1,39 +1,93 @@ diff --git a/io.sc.platform.system.frontend/src/views/monitor/Log.vue b/io.sc.platform.system.frontend/src/views/monitor/Log.vue index 73132ca9..3f827028 100644 --- a/io.sc.platform.system.frontend/src/views/monitor/Log.vue +++ b/io.sc.platform.system.frontend/src/views/monitor/Log.vue @@ -3,21 +3,21 @@ - +
- +
- +
- +
@@ -27,43 +27,90 @@
- - + - - +
diff --git a/io.sc.platform.system.frontend/src/views/parameter/Parameter.vue b/io.sc.platform.system.frontend/src/views/parameter/Parameter.vue index 73070a5d..7f470f60 100644 --- a/io.sc.platform.system.frontend/src/views/parameter/Parameter.vue +++ b/io.sc.platform.system.frontend/src/views/parameter/Parameter.vue @@ -1,73 +1,91 @@ diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/dictionary/jpa/entity/DictionaryEntity.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/dictionary/jpa/entity/DictionaryEntity.java index e0a297d4..a17b1c23 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/dictionary/jpa/entity/DictionaryEntity.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/dictionary/jpa/entity/DictionaryEntity.java @@ -47,7 +47,7 @@ public class DictionaryEntity extends CorporationAuditorEntity { @Override public DictionaryVo toVo() { DictionaryVo vo =new DictionaryVo(); - CorporationAuditorEntity.toVo(vo,this); + super.toVo(vo); vo.setId(this.getId()); vo.setCode(this.getCode()); vo.setValue(this.getValue()); diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/entity/I18nEntity.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/entity/I18nEntity.java index 4779d7cc..4115ad0d 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/entity/I18nEntity.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/entity/I18nEntity.java @@ -52,7 +52,7 @@ public class I18nEntity extends CorporationAuditorEntity { @Override public I18nVo toVo() { I18nVo vo =new I18nVo(); - CorporationAuditorEntity.toVo(vo,this); + super.toVo(vo); vo.setId(this.getId()); vo.setCode(this.getCode()); vo.setLang(this.getLang().toString()); diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/impl/I18nServiceImpl.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/impl/I18nServiceImpl.java index 805351b0..7d2f8845 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/impl/I18nServiceImpl.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/impl/I18nServiceImpl.java @@ -42,6 +42,10 @@ public class I18nServiceImpl extends DaoServiceImpl map) throws Exception{ - service.addMenu(map); - } - - @PostMapping("updateMenu") - public void updateMenu(@RequestBody Map map) throws Exception{ - service.updateMenu(map); - } - /** * 列出所有菜单树,并且将角色所拥有的菜单列表作出标记 * @param roleId 角色ID @@ -157,6 +148,11 @@ public class MenuWebController extends RestCrudController getAllMenuPlugins() throws Exception{ + return service.getAllMenuPlugins(); + } + /** * 将菜单插件导入到菜单表中 * @param pluginIds 需要导入的菜单插件ID集合 diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/MenuService.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/MenuService.java index a31abfa6..5c8bfdef 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/MenuService.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/MenuService.java @@ -7,16 +7,12 @@ import io.sc.platform.system.api.menu.MenuVo; import io.sc.platform.system.menu.jpa.entity.MenuEntity; import io.sc.platform.system.menu.jpa.repository.MenuRepository; import io.sc.platform.system.org.jpa.entity.OrgEntity; +import io.sc.platform.system.plugins.item.MenuItem; import java.util.List; import java.util.Map; public interface MenuService extends DaoService { - public void addMenu(Map map) throws Exception; - - public void updateMenu(Map map) throws Exception; - - public List getMenusByUser(String userId) throws Exception; @@ -91,6 +87,7 @@ public interface MenuService extends DaoService wrapper) throws Exception; + public List getAllMenuPlugins() throws Exception; /** * 导入菜单插件 * @param pluginIds 需要导入的菜单插件ID集合 diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java index e7b2b25e..79a6f4fd 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java @@ -38,63 +38,6 @@ public class MenuServiceImpl extends DaoServiceImpl treeBuilder =new MenuEntityTreeBuilder(); @Autowired private JdbcTemplate jdbcTemplate; - @Transactional - public void addMenu(Map map) throws Exception{ - String parentId =map.get("parentId"); - if(!StringUtils.hasText(parentId)){ - MenuGroupEntity entity = new MenuGroupEntity(); - entity.setName(map.get("name")); - entity.setTitleI18nKey(map.get("name")); - entity.setIcon(map.get("icon")); - entity.setEnable(Boolean.parseBoolean(map.get("enable"))); - entity.setOrder(Integer.parseInt(map.get("order"))); - this.add(entity); - return; - } - - MenuEntity parentEntity =this.findById(parentId); - if(parentEntity!=null && parentEntity instanceof MenuGroupEntity) { - MenuGroupEntity parent = (MenuGroupEntity) parentEntity; - MenuRouteEntity entity = new MenuRouteEntity(); - entity.setName(map.get("name")); - entity.setTitleI18nKey(map.get("name")); - entity.setIcon(map.get("icon")); - entity.setEnable(Boolean.parseBoolean(map.get("enable"))); - entity.setOrder(Integer.parseInt(map.get("order"))); - entity.setRouteName(map.get("routeName")); - String routeQuery =map.get("routeQuery"); - if(StringUtils.hasText(routeQuery)) { - entity.setRouteQuery(ObjectMapper4Json.getMapper().readValue(map.get("routeQuery"), new TypeReference>() {})); - } - entity.setParent(parent); - this.add(entity); - } - } - - @Transactional - public void updateMenu(Map map) throws Exception{ - String id =map.get("id"); - if(StringUtils.hasText(id)){ - MenuEntity menuEntity =this.findById(id); - if(menuEntity!=null && menuEntity instanceof MenuRouteEntity) { - MenuRouteEntity entity = (MenuRouteEntity) menuEntity; - entity.setName(map.get("name")); - entity.setTitleI18nKey(map.get("name")); - entity.setIcon(map.get("icon")); - entity.setEnable(Boolean.parseBoolean(map.get("enable"))); - entity.setOrder(Integer.parseInt(map.get("order"))); - entity.setRouteName(map.get("routeName")); - String routeQuery = map.get("routeQuery"); - System.out.println(routeQuery); - if (StringUtils.hasText(routeQuery)) { - entity.setRouteQuery(ObjectMapper4Json.getMapper().readValue(routeQuery, new TypeReference>() { - })); - } - repository.save(entity); - } - } - } - @Override public List getMenusByUser(String userId) throws Exception { if(!StringUtils.hasText(userId)){ @@ -375,6 +318,20 @@ public class MenuServiceImpl extends DaoServiceImpl getAllMenuPlugins() throws Exception { + List result =PluginManager.getInstance().getMenuItems(); + if(result!=null && !result.isEmpty()){ + result.sort(new Comparator() { + @Override + public int compare(MenuItem o1, MenuItem o2) { + return o1.getOrder()-o2.getOrder(); + } + }); + } + return result; + } + @Override public List getAllMenus() { List entities =jdbcTemplate.query("select * from SYS_MENU where ENABLE_=1 order by ORDER_",new MenuEntityMapper()); diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/controller/LogViewerWebController.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/controller/LogViewerWebController.java index 81c5185f..bbd8b1ab 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/controller/LogViewerWebController.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/controller/LogViewerWebController.java @@ -1,16 +1,22 @@ package io.sc.platform.system.monitor.controller; import io.sc.platform.core.DirectoryManager; +import io.sc.platform.core.support.FileWrapper; import io.sc.platform.core.support.LoggerLevelInfo; import io.sc.platform.core.util.FileUtil; -import io.sc.platform.core.util.StringUtil; import io.sc.platform.mvc.support.FileDownloader; +import io.sc.platform.orm.service.support.QueryParameter; import io.sc.platform.orm.service.support.QueryResult; +import io.sc.platform.system.monitor.support.LogFileLastModifyDateComparator; +import io.sc.platform.system.monitor.support.LogFileNameComparator; +import io.sc.platform.system.monitor.support.LogFileSizeComparator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.logging.LoggersEndpoint; +import org.springframework.boot.actuate.logging.LoggersEndpoint.LoggerLevels; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.Resource; import org.springframework.data.domain.Page; +import org.springframework.data.domain.Sort.Order; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -32,23 +38,65 @@ public class LogViewerWebController { } @GetMapping("getLogFiles") - public Page getLogFiles() throws IOException { + public Page getLogFiles(QueryParameter queryParameter) throws IOException { File dir =new File(DirectoryManager.getInstance().getByName("dir.log")); File[] files =dir.listFiles(); if(files!=null && files.length>0){ List result =new ArrayList(); for(File file : files){ - FileWrapper wrapper =new FileWrapper(file.getName(),new Date(file.lastModified()), StringUtil.commaStyle(file.length())); + FileWrapper wrapper =new FileWrapper(file.getName(),new Date(file.lastModified()), file.length()); result.add(wrapper); } + if(queryParameter!=null){ + Order order =queryParameter.getFirstSort(); + if(order!=null){ + String fieldName =order.getProperty(); + boolean asc =order.isAscending(); + if("name".equalsIgnoreCase(fieldName)){ + if(asc){ + result.sort(new LogFileNameComparator(true)); + }else{ + result.sort(new LogFileNameComparator(false)); + } + }else if("size".equalsIgnoreCase(fieldName)){ + if(asc){ + result.sort(new LogFileSizeComparator(true)); + }else{ + result.sort(new LogFileSizeComparator(false)); + } + }else if("lastModifyDate".equalsIgnoreCase(fieldName)){ + if(asc){ + result.sort(new LogFileLastModifyDateComparator(true)); + }else{ + result.sort(new LogFileLastModifyDateComparator(false)); + } + } + } + } return QueryResult.page(result); } return QueryResult.emptyPage(); } @GetMapping("getLogConfigurationLevels") - public Page getLogConfigurationLevels(LoggerLevelInfo levelInfo) throws Exception{ - return QueryResult.page(findLevelsFromActuator(levelInfo)); + public Page getLogConfigurationLevels(QueryParameter queryParameter) throws Exception{ + Map configurations =loggersEndpoint.loggers(); + if(configurations==null){ + return QueryResult.emptyPage(); + } + Object o =configurations.get("loggers"); + if(o==null){ + return QueryResult.emptyPage(); + } + List result =new ArrayList(); + if(o instanceof Map){ + Map map =(Map)o; + for(String key : map.keySet()){ + LoggerLevels loggerLevels =map.get(key); + result.add(new LoggerLevelInfo(key,loggerLevels.getConfiguredLevel(),"INFO")); + } + } + return QueryResult.page(result,queryParameter.getJpaPageable()); } /** @@ -64,61 +112,26 @@ public class LogViewerWebController { FileDownloader.download(request, response, fileName, resource); } - - private static class FileWrapper{ - private String name; - private Date lastModifyDate; - private String size; - - public FileWrapper(String name,Date lastModifyDate,String size){ - this.name =name; - this.lastModifyDate =lastModifyDate; - this.size =size; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Date getLastModifyDate() { - return lastModifyDate; - } - - public void setLastModifyDate(Date lastModifyDate) { - this.lastModifyDate = lastModifyDate; - } - - public String getSize() { - return size; - } - - public void setSize(String size) { - this.size = size; - } - } - - public List findLevelsFromActuator(LoggerLevelInfo levelInfo) throws Exception { + public Page findLevelsFromActuator(QueryParameter queryParameter) throws Exception { Map configurations =loggersEndpoint.loggers(); if(configurations==null){ - return Collections.emptyList(); + return QueryResult.emptyPage(); } Object o =configurations.get("loggers"); if(o==null){ - return Collections.emptyList(); + return QueryResult.emptyPage(); } List result =new ArrayList(); if(o instanceof Map){ - Map map =(Map)o; + Map map =(Map)o; for(String key : map.keySet()){ - LoggersEndpoint.LoggerLevels loggerLevels =map.get(key); + LoggerLevels loggerLevels =map.get(key); result.add(new LoggerLevelInfo(key,loggerLevels.getConfiguredLevel(),"INFO")); } } + return QueryResult.page(result,queryParameter.getJpaPageable()); + /* if( !StringUtils.hasText(levelInfo.getName()) && levelInfo.getConfiguredLevel()!=null @@ -157,5 +170,7 @@ public class LogViewerWebController { result =filter; } return result; + + */ } } diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/support/LogFileLastModifyDateComparator.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/support/LogFileLastModifyDateComparator.java new file mode 100644 index 00000000..36d9214c --- /dev/null +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/support/LogFileLastModifyDateComparator.java @@ -0,0 +1,36 @@ +package io.sc.platform.system.monitor.support; + +import io.sc.platform.core.support.FileWrapper; + +import java.util.Comparator; + +public class LogFileLastModifyDateComparator implements Comparator { + private boolean asc =true; + + public LogFileLastModifyDateComparator(){} + + public LogFileLastModifyDateComparator(boolean asc){ + this.asc =asc; + } + + @Override + public int compare(FileWrapper o1, FileWrapper o2) { + if(asc) { + if(o1.getLastModifyDate().getTime()>o2.getLastModifyDate().getTime()){ + return 1; + }else if(o1.getLastModifyDate().getTime()==o2.getLastModifyDate().getTime()){ + return 0; + }else{ + return -1; + } + }else{ + if(o2.getLastModifyDate().getTime()>o1.getLastModifyDate().getTime()){ + return 1; + }else if(o2.getLastModifyDate().getTime()==o1.getLastModifyDate().getTime()){ + return 0; + }else{ + return -1; + } + } + } +} diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/support/LogFileNameComparator.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/support/LogFileNameComparator.java new file mode 100644 index 00000000..b002313e --- /dev/null +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/support/LogFileNameComparator.java @@ -0,0 +1,25 @@ +package io.sc.platform.system.monitor.support; + +import io.sc.platform.core.support.FileWrapper; +import io.sc.platform.core.util.PinyinUtil; + +import java.util.Comparator; + +public class LogFileNameComparator implements Comparator { + private boolean asc =true; + + public LogFileNameComparator(){} + + public LogFileNameComparator(boolean asc){ + this.asc =asc; + } + + @Override + public int compare(FileWrapper o1, FileWrapper o2) { + if(asc) { + return PinyinUtil.compare(o1.getName(), o2.getName()); + }else{ + return PinyinUtil.compare(o2.getName(), o1.getName()); + } + } +} diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/support/LogFileSizeComparator.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/support/LogFileSizeComparator.java new file mode 100644 index 00000000..f5295d34 --- /dev/null +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/monitor/support/LogFileSizeComparator.java @@ -0,0 +1,38 @@ +package io.sc.platform.system.monitor.support; + +import io.sc.platform.core.support.FileWrapper; +import io.sc.platform.core.util.PinyinUtil; +import io.sc.platform.system.api.org.OrgVo; + +import java.util.Comparator; + +public class LogFileSizeComparator implements Comparator { + private boolean asc =true; + + public LogFileSizeComparator(){} + + public LogFileSizeComparator(boolean asc){ + this.asc =asc; + } + + @Override + public int compare(FileWrapper o1, FileWrapper o2) { + if(asc) { + if(o1.getSize()>o2.getSize()){ + return 1; + }else if(o1.getSize()==o2.getSize()){ + return 0; + }else{ + return -1; + } + }else{ + if(o2.getSize()>o1.getSize()){ + return 1; + }else if(o2.getSize()==o1.getSize()){ + return 0; + }else{ + return -1; + } + } + } +} diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/parameter/jpa/entity/ParameterEntity.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/parameter/jpa/entity/ParameterEntity.java index c0249751..440f6e7a 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/parameter/jpa/entity/ParameterEntity.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/parameter/jpa/entity/ParameterEntity.java @@ -43,7 +43,7 @@ public class ParameterEntity extends CorporationAuditorEntity { @Override public ParameterVo toVo() { ParameterVo vo =new ParameterVo(); - CorporationAuditorEntity.toVo(vo,this); + super.toVo(vo); vo.setId(this.getId()); vo.setCode(this.getCode()); vo.setValue(this.getValue()); diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/plugins/PluginManager.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/plugins/PluginManager.java index 8fe04339..71a97c5a 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/plugins/PluginManager.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/plugins/PluginManager.java @@ -80,6 +80,7 @@ public class PluginManager { if(menu.getId()==null){ menu.setId(UUID.randomUUID().toString()); } + menu.setConfigurationFileUrl(plugin.getFileUrl()); menuItemMap.put(menu.getId(),menu); items.add(menu); } diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/plugins/item/MenuItem.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/plugins/item/MenuItem.java index 73382c15..63f4284d 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/plugins/item/MenuItem.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/plugins/item/MenuItem.java @@ -20,6 +20,9 @@ public abstract class MenuItem { private String icon; private int order; + //附加属性 + private String configurationFileUrl; //菜单贡献项配置文件位置 + public String getId() { return id; } @@ -59,4 +62,12 @@ public abstract class MenuItem { public void setOrder(int order) { this.order = order; } + + public String getConfigurationFileUrl() { + return configurationFileUrl; + } + + public void setConfigurationFileUrl(String configurationFileUrl) { + this.configurationFileUrl = configurationFileUrl; + } }