diff --git a/gradle.properties b/gradle.properties index 2a032b62..525d1bfb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,7 +38,7 @@ application_version=1.0.0 platform_group=io.sc platform_version=8.1.22 platform_plugin_version=8.1.13 -platform_core_frontend_version=8.1.111 +platform_core_frontend_version=8.1.113 ########################################################### # dependencies version diff --git a/io.sc.engine.mv.frontend/package.json b/io.sc.engine.mv.frontend/package.json index 3c37a240..2537a7ac 100644 --- a/io.sc.engine.mv.frontend/package.json +++ b/io.sc.engine.mv.frontend/package.json @@ -78,7 +78,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.111", + "platform-core": "8.1.113", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", diff --git a/io.sc.engine.mv.frontend/src/i18n/messages.json b/io.sc.engine.mv.frontend/src/i18n/messages.json index 5932ba18..5f25825b 100644 --- a/io.sc.engine.mv.frontend/src/i18n/messages.json +++ b/io.sc.engine.mv.frontend/src/i18n/messages.json @@ -13,6 +13,16 @@ "menu.engine.mv.sample" : "Sample Manager", "menu.engine.mv.result" : "Validator Result Viewer", + "io.sc.engine.mv.enums.GoodLevel.POOR" : "Poor", + "io.sc.engine.mv.enums.GoodLevel.MEDIUM" : "Medium", + "io.sc.engine.mv.enums.GoodLevel.GOOD" : "Good", + "io.sc.engine.mv.enums.GoodLevel.VERY_GOOD" : "Very Good", + "io.sc.engine.mv.enums.GoodLevel.EXCELLENT" : "Excellent", + "io.sc.engine.mv.enums.GoodLevel.PERFECT" : "Perfect", + + "io.sc.engine.mv.enums.Stability.yes" : "Stability", + "io.sc.engine.mv.enums.Stability.no" : "Not Stability", + "io.sc.engine.mv.config.cutOffPoint.grid.title" : "Score Cut Off Point List", "io.sc.engine.mv.config.cutOffPoint.grid.entity.name" : "Name", "io.sc.engine.mv.config.cutOffPoint.grid.entity.from" : "From(contain)", @@ -52,7 +62,6 @@ "io.sc.engine.mv.config.distribution.grid.entity.scoreSegEnd" : "End of Score Segment(include)", "io.sc.engine.mv.config.distribution.grid.entity.count" : "Sample Count", - "io.sc.engine.mv.config.scale.grid.title" : "Main Scale List", "io.sc.engine.mv.config.scale.grid.entity.modelId" : "Model ID", "io.sc.engine.mv.config.scale.grid.entity.modelName" : "Model Name", @@ -60,8 +69,19 @@ "io.sc.engine.mv.config.scale.grid.entity.pd" : "PD", "io.sc.engine.mv.config.scale.grid.entity.order" : "Order", + "io.sc.engine.mv.config.dataExtractor.grid.title" : "Data Extractor List", + "io.sc.engine.mv.config.dataExtractor.grid.toolbar.example" : "Import Example", + "io.sc.engine.mv.config.dataExtractor.grid.toolbar.example.tip" : "Are you sure to import example data extractor?", + "io.sc.engine.mv.config.dataExtractor.grid.entity.datasourceName" : "Datasource Name", + "io.sc.engine.mv.config.dataExtractor.grid.entity.executeTimeWeight" : "Weight of Execute", + "io.sc.engine.mv.config.dataExtractor.grid.entity.groovyScript" : "Groovy Code", + "io.sc.engine.mv.config.executor.grid.title" : "Executor List", + "io.sc.engine.mv.sample.action.importExampleSample" : "Import Example Sample", + "io.sc.engine.mv.sample.action.importExampleSample.tip" : "Are you sure to import example samples?", + "io.sc.engine.mv.sample.action.removeAllSample" : "Remove All Example", + "io.sc.engine.mv.sample.action.removeAllSample.tip" : "Are you sure to remove all samples?", "io.sc.engine.mv.sample.tabs.sample" : "Sample", "io.sc.engine.mv.sample.tabs.scoreRecord" : "Score Records", "io.sc.engine.mv.sample.tabs.defaultRecord" : "Default Records", @@ -98,7 +118,10 @@ "io.sc.engine.mv.sample.defaultRecord.grid.entity.customId" : "Customer ID", "io.sc.engine.mv.sample.defaultRecord.grid.entity.defaultConfirmDate" : "Default Confirm Date", + "io.sc.engine.mv.result.task.progress" : "Current Running Task:", + "io.sc.engine.mv.result.grid.title" : "Validate Result List", + "io.sc.engine.mv.result.grid.toolbar.execute" : "Execute", "io.sc.engine.mv.result.grid.entity.validateDate" : "Validate Date", "io.sc.engine.mv.result.grid.entity.runtimeParameters" : "Runtime Parameters", "io.sc.engine.mv.result.grid.entity.runtimeParameters.rateStartDateFrom" : "Rate Start Date From", @@ -159,6 +182,19 @@ "io.sc.engine.mv.result.curve.ks.y1" : "(Y1)Percent of normal", "io.sc.engine.mv.result.curve.ks.y2" : "(Y2)Percent of defaults", + "io.sc.engine.mv.result.curve.psi.scoreSegStart" : "分数段开始值(含)", + "io.sc.engine.mv.result.curve.psi.scoreSegEnd" : "分数段结束值(含)", + "io.sc.engine.mv.result.curve.psi.countDev" : "段内个数", + "io.sc.engine.mv.result.curve.psi.totalCountDev" : "总数", + "io.sc.engine.mv.result.curve.psi.percentDev" : "百分比", + "io.sc.engine.mv.result.curve.psi.countApp" : "段内个数", + "io.sc.engine.mv.result.curve.psi.totalCountApp" : "总数", + "io.sc.engine.mv.result.curve.psi.percentApp" : "百分比", + "io.sc.engine.mv.result.curve.psi.percentDiff" : "百分比变化", + "io.sc.engine.mv.result.curve.psi.percentRate" : "百分比相对比例", + "io.sc.engine.mv.result.curve.psi.weight" : "加权系数", + "io.sc.engine.mv.result.curve.psi.stWeight" : "稳定性加权", + "io.sc.engine.mv.result.chiSquare.grid.title" : "ChiSquare Test", "io.sc.engine.mv.result.chiSquare.level" : "Level", "io.sc.engine.mv.result.chiSquare.pd" : "PD", @@ -180,5 +216,13 @@ "io.sc.engine.mv.result.binomial.dUpper" : "Upper of Critical", "io.sc.engine.mv.result.binomial.dLower" : "Lower of Critical", "io.sc.engine.mv.result.binomial.leUpper" : "Count of <= Upper", - "io.sc.engine.mv.result.binomial.geLower" : "Count of >= Lower" + "io.sc.engine.mv.result.binomial.geLower" : "Count of >= Lower", + + "io.sc.engine.mv.executorDialog.title" : "Execute", + "io.sc.engine.mv.executorDialog.form.entity.rateStartDateFrom" : "Effective Date From", + "io.sc.engine.mv.executorDialog.form.entity.rateStartDateTo" : "Effective Date To", + "io.sc.engine.mv.executorDialog.form.entity.performPeriod" : "Perform Period(month)", + "io.sc.engine.mv.executorDialog.form.entity.binomialSignificanceLevel" : "Binomial Significance Level", + "io.sc.engine.mv.executorDialog.form.entity.chiSquareSignificanceLevel" : "ChiSquare Significance Level", + "io.sc.engine.mv.executorDialog.form.action.execute" : "Execute Now" } \ No newline at end of file diff --git a/io.sc.engine.mv.frontend/src/i18n/messages_tw_CN.json b/io.sc.engine.mv.frontend/src/i18n/messages_tw_CN.json index 9bdb5497..9bb950df 100644 --- a/io.sc.engine.mv.frontend/src/i18n/messages_tw_CN.json +++ b/io.sc.engine.mv.frontend/src/i18n/messages_tw_CN.json @@ -13,6 +13,16 @@ "menu.engine.mv.sample" : "樣本管理", "menu.engine.mv.result" : "驗證結果查看", + "io.sc.engine.mv.enums.GoodLevel.POOR" : "差", + "io.sc.engine.mv.enums.GoodLevel.MEDIUM" : "中等", + "io.sc.engine.mv.enums.GoodLevel.GOOD" : "好", + "io.sc.engine.mv.enums.GoodLevel.VERY_GOOD" : "很好", + "io.sc.engine.mv.enums.GoodLevel.EXCELLENT" : "非常好", + "io.sc.engine.mv.enums.GoodLevel.PERFECT" : "完美", + + "io.sc.engine.mv.enums.Stability.yes" : "模型比较稳定", + "io.sc.engine.mv.enums.Stability.no" : "模型发生了偏移", + "io.sc.engine.mv.config.cutOffPoint.grid.title" : "評分截斷點配置列表", "io.sc.engine.mv.config.cutOffPoint.grid.entity.name" : "名称", "io.sc.engine.mv.config.cutOffPoint.grid.entity.from" : "起始值(含)", @@ -59,8 +69,19 @@ "io.sc.engine.mv.config.scale.grid.entity.pd" : "違約概率", "io.sc.engine.mv.config.scale.grid.entity.order" : "排序", + "io.sc.engine.mv.config.dataExtractor.grid.title" : "數據抽取器列表", + "io.sc.engine.mv.config.dataExtractor.grid.toolbar.example" : "導入示例", + "io.sc.engine.mv.config.dataExtractor.grid.toolbar.example.tip" : "您確定要導入示例數據抽取器嗎?", + "io.sc.engine.mv.config.dataExtractor.grid.entity.datasourceName" : "數據源名稱", + "io.sc.engine.mv.config.dataExtractor.grid.entity.executeTimeWeight" : "預計執行時間權重", + "io.sc.engine.mv.config.dataExtractor.grid.entity.groovyScript" : "Groovy 腳本", + "io.sc.engine.mv.config.executor.grid.title" : "執行器列表", + "io.sc.engine.mv.sample.action.importExampleSample" : "導入示例樣本", + "io.sc.engine.mv.sample.action.importExampleSample.tip" : "您確定要導入示例樣本嗎?", + "io.sc.engine.mv.sample.action.removeAllSample" : "刪除所有樣本", + "io.sc.engine.mv.sample.action.removeAllSample.tip" : "您確定要刪除所有樣本嗎?", "io.sc.engine.mv.sample.tabs.sample" : "合格樣本", "io.sc.engine.mv.sample.tabs.scoreRecord" : "評分記錄", "io.sc.engine.mv.sample.tabs.defaultRecord" : "違約記錄", @@ -97,9 +118,10 @@ "io.sc.engine.mv.sample.defaultRecord.grid.entity.customId" : "客戶標識", "io.sc.engine.mv.sample.defaultRecord.grid.entity.defaultConfirmDate" : "違約確定日期", - + "io.sc.engine.mv.result.task.progress" : "當前正在執行的任務進度:", "io.sc.engine.mv.result.grid.title" : "驗證結果列表验证结果列表", + "io.sc.engine.mv.result.grid.toolbar.execute" : "執行驗證", "io.sc.engine.mv.result.grid.entity.validateDate" : "驗證日期", "io.sc.engine.mv.result.grid.entity.runtimeParameters" : "運行時參數", "io.sc.engine.mv.result.grid.entity.runtimeParameters.rateStartDateFrom" : "評級開始日期從", @@ -181,5 +203,13 @@ "io.sc.engine.mv.result.binomial.dUpper" : "臨界值上界", "io.sc.engine.mv.result.binomial.dLower" : "臨界值下界", "io.sc.engine.mv.result.binomial.leUpper" : "事實違約個數是否小於等於上界", - "io.sc.engine.mv.result.binomial.geLower" : "事實違約個數是否大於等於下界" + "io.sc.engine.mv.result.binomial.geLower" : "事實違約個數是否大於等於下界", + + "io.sc.engine.mv.executorDialog.title" : "执行", + "io.sc.engine.mv.executorDialog.form.entity.rateStartDateFrom" : "評級有效期開始日期範圍(起始日期)", + "io.sc.engine.mv.executorDialog.form.entity.rateStartDateTo" : "評級有效期開始日期範圍(結束日期)", + "io.sc.engine.mv.executorDialog.form.entity.performPeriod" : "評級表現期(月)", + "io.sc.engine.mv.executorDialog.form.entity.binomialSignificanceLevel" : "二項檢驗採用的顯著水平", + "io.sc.engine.mv.executorDialog.form.entity.chiSquareSignificanceLevel" : "卡方檢驗採用的顯著水平", + "io.sc.engine.mv.executorDialog.form.action.execute" : "立即執行" } \ No newline at end of file diff --git a/io.sc.engine.mv.frontend/src/i18n/messages_zh_CN.json b/io.sc.engine.mv.frontend/src/i18n/messages_zh_CN.json index dd1c7c53..eba5628b 100644 --- a/io.sc.engine.mv.frontend/src/i18n/messages_zh_CN.json +++ b/io.sc.engine.mv.frontend/src/i18n/messages_zh_CN.json @@ -13,6 +13,16 @@ "menu.engine.mv.sample" : "样本管理", "menu.engine.mv.result" : "验证结果查看", + "io.sc.engine.mv.enums.GoodLevel.POOR" : "差", + "io.sc.engine.mv.enums.GoodLevel.MEDIUM" : "中等", + "io.sc.engine.mv.enums.GoodLevel.GOOD" : "好", + "io.sc.engine.mv.enums.GoodLevel.VERY_GOOD" : "很好", + "io.sc.engine.mv.enums.GoodLevel.EXCELLENT" : "非常好", + "io.sc.engine.mv.enums.GoodLevel.PERFECT" : "完美", + + "io.sc.engine.mv.enums.Stability.yes" : "模型比较稳定", + "io.sc.engine.mv.enums.Stability.no" : "模型发生了偏移", + "io.sc.engine.mv.config.cutOffPoint.grid.title" : "评分截断点配置列表", "io.sc.engine.mv.config.cutOffPoint.grid.entity.name" : "名称", "io.sc.engine.mv.config.cutOffPoint.grid.entity.from" : "起始值(含)", @@ -60,15 +70,18 @@ "io.sc.engine.mv.config.scale.grid.entity.order" : "排序", "io.sc.engine.mv.config.dataExtractor.grid.title" : "数据抽取器列表", - "io.sc.engine.mv.config.dataExtractor.grid.entity.name" : "名称", - "io.sc.engine.mv.config.dataExtractor.grid.entity.enable" : "是否可用", + "io.sc.engine.mv.config.dataExtractor.grid.toolbar.example" : "导入示例", + "io.sc.engine.mv.config.dataExtractor.grid.toolbar.example.tip" : "您确定要导入示例数据抽取器吗?", "io.sc.engine.mv.config.dataExtractor.grid.entity.datasourceName" : "外部数据源名称", - "io.sc.engine.mv.config.dataExtractor.grid.entity.order" : "执行顺序", "io.sc.engine.mv.config.dataExtractor.grid.entity.executeTimeWeight" : "预计执行时间权重", "io.sc.engine.mv.config.dataExtractor.grid.entity.groovyScript" : "Groovy 脚本", "io.sc.engine.mv.config.executor.grid.title" : "执行器列表", + "io.sc.engine.mv.sample.action.importExampleSample" : "导入示例样本", + "io.sc.engine.mv.sample.action.importExampleSample.tip" : "您确定要导入示例样本吗?", + "io.sc.engine.mv.sample.action.removeAllSample" : "删除所有样本", + "io.sc.engine.mv.sample.action.removeAllSample.tip" : "您确定要删除所有样本吗?", "io.sc.engine.mv.sample.tabs.sample" : "合格样本", "io.sc.engine.mv.sample.tabs.scoreRecord" : "评分记录", "io.sc.engine.mv.sample.tabs.defaultRecord" : "违约记录", @@ -106,7 +119,10 @@ "io.sc.engine.mv.sample.defaultRecord.grid.entity.customId" : "客户标识", "io.sc.engine.mv.sample.defaultRecord.grid.entity.defaultConfirmDate" : "违约确定日期", + "io.sc.engine.mv.result.task.progress" : "当前正在执行的任务进度:", + "io.sc.engine.mv.result.grid.title" : "验证结果列表", + "io.sc.engine.mv.result.grid.toolbar.execute" : "执行验证", "io.sc.engine.mv.result.grid.entity.validateDate" : "验证日期", "io.sc.engine.mv.result.grid.entity.runtimeParameters" : "运行时参数", "io.sc.engine.mv.result.grid.entity.runtimeParameters.rateStartDateFrom" : "评级开始日期从", @@ -167,6 +183,19 @@ "io.sc.engine.mv.result.curve.ks.y1" : "(Y1)正常样本占比", "io.sc.engine.mv.result.curve.ks.y2" : "(Y2)违约样本占比", + "io.sc.engine.mv.result.curve.psi.scoreSegStart" : "分数段开始值(含)", + "io.sc.engine.mv.result.curve.psi.scoreSegEnd" : "分数段结束值(含)", + "io.sc.engine.mv.result.curve.psi.countDev" : "段内个数", + "io.sc.engine.mv.result.curve.psi.totalCountDev" : "总数", + "io.sc.engine.mv.result.curve.psi.percentDev" : "百分比", + "io.sc.engine.mv.result.curve.psi.countApp" : "段内个数", + "io.sc.engine.mv.result.curve.psi.totalCountApp" : "总数", + "io.sc.engine.mv.result.curve.psi.percentApp" : "百分比", + "io.sc.engine.mv.result.curve.psi.percentDiff" : "百分比变化", + "io.sc.engine.mv.result.curve.psi.percentRate" : "百分比相对比例", + "io.sc.engine.mv.result.curve.psi.weight" : "加权系数", + "io.sc.engine.mv.result.curve.psi.stWeight" : "稳定性加权", + "io.sc.engine.mv.result.chiSquare.grid.title" : "卡方检验结果", "io.sc.engine.mv.result.chiSquare.level" : "评分等级", "io.sc.engine.mv.result.chiSquare.pd" : "违约概率", @@ -188,5 +217,13 @@ "io.sc.engine.mv.result.binomial.dUpper" : "临界值上界", "io.sc.engine.mv.result.binomial.dLower" : "临界值下界", "io.sc.engine.mv.result.binomial.leUpper" : "事实违约个数是否小于等于上界", - "io.sc.engine.mv.result.binomial.geLower" : "事实违约个数是否大于等于下界" + "io.sc.engine.mv.result.binomial.geLower" : "事实违约个数是否大于等于下界", + + "io.sc.engine.mv.executorDialog.title" : "执行", + "io.sc.engine.mv.executorDialog.form.entity.rateStartDateFrom" : "评级有效期开始日期范围(起始日期)", + "io.sc.engine.mv.executorDialog.form.entity.rateStartDateTo" : "评级有效期开始日期范围(结束日期)", + "io.sc.engine.mv.executorDialog.form.entity.performPeriod" : "评级表现期(月)", + "io.sc.engine.mv.executorDialog.form.entity.binomialSignificanceLevel" : "二项检验采用的显著水平", + "io.sc.engine.mv.executorDialog.form.entity.chiSquareSignificanceLevel" : "卡方检验采用的显著水平", + "io.sc.engine.mv.executorDialog.form.action.execute" : "立即执行" } \ No newline at end of file diff --git a/io.sc.engine.mv.frontend/src/menus/menus.json b/io.sc.engine.mv.frontend/src/menus/menus.json index bd4464da..b02b42b8 100644 --- a/io.sc.engine.mv.frontend/src/menus/menus.json +++ b/io.sc.engine.mv.frontend/src/menus/menus.json @@ -20,28 +20,28 @@ /*模型验证*/ {"type":"GROUP", "order":20000, "id":"menu.engine.mv", "titleI18nKey":"menu.engine.mv", "icon":"bi-command"}, /*模型验证/验证结果查看*/ - {"type":"ROUTE", "order":100, "parentId":"menu.engine.mv", "id":"menu.engine.mv.result", "titleI18nKey":"menu.engine.mv.result", "icon":"bi-link-45deg", "routeName":"route.engine.mv.result"}, + {"type":"ROUTE", "order":100, "parentId":"menu.engine.mv", "id":"menu.engine.mv.result", "titleI18nKey":"menu.engine.mv.result", "icon":"bi-display", "routeName":"route.engine.mv.result"}, /*模型验证/样本数据查看*/ - {"type":"ROUTE", "order":200, "parentId":"menu.engine.mv", "id":"menu.engine.mv.sample", "titleI18nKey":"menu.engine.mv.sample", "icon":"bi-egg", "routeName":"route.engine.mv.sample"}, + {"type":"ROUTE", "order":200, "parentId":"menu.engine.mv", "id":"menu.engine.mv.sample", "titleI18nKey":"menu.engine.mv.sample", "icon":"bi-card-list", "routeName":"route.engine.mv.sample"}, /*模型验证/配置*/ - {"type":"GROUP", "order":300, "parentId":"menu.engine.mv", "id":"menu.engine.mv.config", "titleI18nKey":"menu.engine.mv.config", "icon":"bi-question-circle"}, + {"type":"GROUP", "order":300, "parentId":"menu.engine.mv", "id":"menu.engine.mv.config", "titleI18nKey":"menu.engine.mv.config", "icon":"bi-gear"}, /*模型验证/配置/截断点*/ - {"type":"ROUTE", "order":200, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.cutOffPoint", "titleI18nKey":"menu.engine.mv.config.cutOffPoint", "icon":"bi-question-circle","routeName":"route.engine.mv.config.cutOffPoint"}, + {"type":"ROUTE", "order":200, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.cutOffPoint", "titleI18nKey":"menu.engine.mv.config.cutOffPoint", "icon":"bi-receipt","routeName":"route.engine.mv.config.cutOffPoint"}, /*模型验证/配置/预警阈值*/ - {"type":"ROUTE", "order":300, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.threshold", "titleI18nKey":"menu.engine.mv.config.threshold", "icon":"bi-question-circle","routeName":"route.engine.mv.config.threshold"}, + {"type":"ROUTE", "order":300, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.threshold", "titleI18nKey":"menu.engine.mv.config.threshold", "icon":"bi-receipt","routeName":"route.engine.mv.config.threshold"}, /*模型验证/配置/二项检验标准正态分布显著水平下的Z值常量*/ - {"type":"ROUTE", "order":400, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.binomial", "titleI18nKey":"menu.engine.mv.config.binomial", "icon":"bi-question-circle","routeName":"route.engine.mv.config.binomial"}, + {"type":"ROUTE", "order":400, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.binomial", "titleI18nKey":"menu.engine.mv.config.binomial", "icon":"bi-receipt","routeName":"route.engine.mv.config.binomial"}, /*模型验证/配置/卡方检验临界值常量*/ - {"type":"ROUTE", "order":500, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.chiSquare", "titleI18nKey":"menu.engine.mv.config.chiSquare", "icon":"bi-question-circle","routeName":"route.engine.mv.config.chiSquare"}, + {"type":"ROUTE", "order":500, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.chiSquare", "titleI18nKey":"menu.engine.mv.config.chiSquare", "icon":"bi-receipt","routeName":"route.engine.mv.config.chiSquare"}, /*模型验证/配置/模型*/ - {"type":"ROUTE", "order":600, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.model", "titleI18nKey":"menu.engine.mv.config.model", "icon":"bi-question-circle","routeName":"route.engine.mv.config.model"}, + {"type":"ROUTE", "order":600, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.model", "titleI18nKey":"menu.engine.mv.config.model", "icon":"bi-receipt","routeName":"route.engine.mv.config.model"}, /*模型验证/配置/咨询建模时客户评分分布情况*/ - {"type":"ROUTE", "order":700, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.distribution", "titleI18nKey":"menu.engine.mv.config.distribution", "icon":"bi-question-circle","routeName":"route.engine.mv.config.distribution"}, + {"type":"ROUTE", "order":700, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.distribution", "titleI18nKey":"menu.engine.mv.config.distribution", "icon":"bi-receipt","routeName":"route.engine.mv.config.distribution"}, /*模型验证/配置/标尺*/ - {"type":"ROUTE", "order":800, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.scale", "titleI18nKey":"menu.engine.mv.config.scale", "icon":"bi-question-circle","routeName":"route.engine.mv.config.scale"}, + {"type":"ROUTE", "order":800, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.scale", "titleI18nKey":"menu.engine.mv.config.scale", "icon":"bi-receipt","routeName":"route.engine.mv.config.scale"}, /*模型验证/配置/数据抽取器接口*/ - {"type":"ROUTE", "order":800, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.dataExtractor", "titleI18nKey":"menu.engine.mv.config.dataExtractor", "icon":"bi-question-circle","routeName":"route.engine.mv.config.dataExtractor"}, + {"type":"ROUTE", "order":800, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.dataExtractor", "titleI18nKey":"menu.engine.mv.config.dataExtractor", "icon":"bi-receipt","routeName":"route.engine.mv.config.dataExtractor"}, /*模型验证/配置/执行器*/ - {"type":"ROUTE", "order":100, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.executor", "titleI18nKey":"menu.engine.mv.config.executor", "icon":"bi-question-circle","routeName":"route.engine.mv.config.executor"} + {"type":"ROUTE", "order":100, "parentId":"menu.engine.mv.config", "id":"menu.engine.mv.config.executor", "titleI18nKey":"menu.engine.mv.config.executor", "icon":"bi-receipt","routeName":"route.engine.mv.config.executor"} ] diff --git a/io.sc.engine.mv.frontend/src/views/config/binomial.vue b/io.sc.engine.mv.frontend/src/views/config/binomial.vue index d181890f..5c130cf0 100644 --- a/io.sc.engine.mv.frontend/src/views/config/binomial.vue +++ b/io.sc.engine.mv.frontend/src/views/config/binomial.vue @@ -4,7 +4,7 @@ :config-button="true" selection="multiple" :checkbox-selection="true" - :data-url="Environment.apiContextPath('/api/mv/config/binomial')" + :data-url="Environment.apiContextPath('/api/mv/configure/binomial')" :pageable="false" :toolbar-configure="{ noIcon: false }" :toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'resetDefaultValues', 'separator', 'view', 'separator', 'export']" diff --git a/io.sc.engine.mv.frontend/src/views/config/chiSquare.vue b/io.sc.engine.mv.frontend/src/views/config/chiSquare.vue index 7707a4f0..7f529e0b 100644 --- a/io.sc.engine.mv.frontend/src/views/config/chiSquare.vue +++ b/io.sc.engine.mv.frontend/src/views/config/chiSquare.vue @@ -4,7 +4,7 @@ :config-button="true" selection="multiple" :checkbox-selection="true" - :data-url="Environment.apiContextPath('/api/mv/config/chiSquare')" + :data-url="Environment.apiContextPath('/api/mv/configure/chiSquare')" :pageable="false" :toolbar-configure="{ noIcon: false }" :toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'resetDefaultValues', 'separator', 'view', 'separator', 'export']" diff --git a/io.sc.engine.mv.frontend/src/views/config/cutOffPoint.vue b/io.sc.engine.mv.frontend/src/views/config/cutOffPoint.vue index 35824a08..f342248f 100644 --- a/io.sc.engine.mv.frontend/src/views/config/cutOffPoint.vue +++ b/io.sc.engine.mv.frontend/src/views/config/cutOffPoint.vue @@ -4,7 +4,7 @@ :config-button="true" selection="multiple" :checkbox-selection="true" - :data-url="Environment.apiContextPath('/api/mv/config/cutOffPoint')" + :data-url="Environment.apiContextPath('/api/mv/configure/cutOffPoint')" :pageable="false" :toolbar-configure="{ noIcon: false }" :toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'resetDefaultValues', 'separator', 'view', 'separator', 'export']" diff --git a/io.sc.engine.mv.frontend/src/views/config/dataExtractor.vue b/io.sc.engine.mv.frontend/src/views/config/dataExtractor.vue index 1d0d1738..c789eb9c 100644 --- a/io.sc.engine.mv.frontend/src/views/config/dataExtractor.vue +++ b/io.sc.engine.mv.frontend/src/views/config/dataExtractor.vue @@ -1,17 +1,41 @@ diff --git a/io.sc.engine.mv.frontend/src/views/result/Executor.vue b/io.sc.engine.mv.frontend/src/views/result/Executor.vue new file mode 100644 index 00000000..b0a0a0c7 --- /dev/null +++ b/io.sc.engine.mv.frontend/src/views/result/Executor.vue @@ -0,0 +1,83 @@ + + diff --git a/io.sc.engine.mv.frontend/src/views/result/Result.vue b/io.sc.engine.mv.frontend/src/views/result/Result.vue index 516b93cc..091e35bd 100644 --- a/io.sc.engine.mv.frontend/src/views/result/Result.vue +++ b/io.sc.engine.mv.frontend/src/views/result/Result.vue @@ -1,21 +1,45 @@ diff --git a/io.sc.engine.mv.frontend/src/views/result/ResultDetailDialog.vue b/io.sc.engine.mv.frontend/src/views/result/ResultDetailDialog.vue index e4a8b26e..88e83a70 100644 --- a/io.sc.engine.mv.frontend/src/views/result/ResultDetailDialog.vue +++ b/io.sc.engine.mv.frontend/src/views/result/ResultDetailDialog.vue @@ -2,9 +2,10 @@
- - - + + + + @@ -38,16 +39,16 @@ CAP (AR = {{ detailRef.ar }}) KS (KS = {{ detailRef.ks }}) - + {{ level }} - - {{ referenceValues.auc[index].label }} + + {{ scReferenceValues.auc[index].label }} - - {{ referenceValues.ar[index].label }} + + {{ scReferenceValues.ar[index].label }} - - {{ referenceValues.ks[index].label }} + + {{ scReferenceValues.ks[index].label }} @@ -58,19 +59,34 @@
- +
+

{{ $t('io.sc.engine.mv.result.curve.references') }}:

+ + + + + + + + + +
{{ $t('io.sc.engine.mv.performance') }}PSI (PSI = {{ detailRef.psi }})
{{ level }} + {{ stReferenceValues.psi[index].label }} +
-
+
-
+
+ + +
@@ -117,12 +185,12 @@ import { ref, nextTick, computed } from 'vue'; import { useI18n } from 'vue-i18n'; import * as echarts from 'echarts'; -import { axios, Environment } from 'platform-core'; +import { axios, Environment, Tools, Formater } from 'platform-core'; import CurveDataDialog from './CurveDataDialog.vue'; const { t } = useI18n(); -const referenceValues = { +const scReferenceValues = { auc: [ { label: '[0.00 - 0.65)', from: 0, to: 0.65 }, { label: '[0.65 - 0.75)', from: 0.65, to: 0.75 }, @@ -148,70 +216,100 @@ const referenceValues = { { label: '[0.75 - 1.00)', from: 0.75, to: 1 }, ], }; -const referenceLevels = computed(() => { +const scReferenceLevels = computed(() => { return [ - t('io.sc.platform.core.enums.GoodLevel.POOR'), - t('io.sc.platform.core.enums.GoodLevel.MEDIUM'), - t('io.sc.platform.core.enums.GoodLevel.GOOD'), - t('io.sc.platform.core.enums.GoodLevel.VERY_GOOD'), - t('io.sc.platform.core.enums.GoodLevel.EXCELLENT'), - t('io.sc.platform.core.enums.GoodLevel.PERFECT'), + t('io.sc.engine.mv.enums.GoodLevel.POOR'), + t('io.sc.engine.mv.enums.GoodLevel.MEDIUM'), + t('io.sc.engine.mv.enums.GoodLevel.GOOD'), + t('io.sc.engine.mv.enums.GoodLevel.VERY_GOOD'), + t('io.sc.engine.mv.enums.GoodLevel.EXCELLENT'), + t('io.sc.engine.mv.enums.GoodLevel.PERFECT'), ]; }); +const stReferenceValues = { + psi: [ + { label: '[0.00 - 0.25)', from: -999, to: 0.25 }, + { label: '[0.25 - 1.00)', from: 0.25, to: 999 }, + ], +}; + +const stReferenceLevels = computed(() => { + return [t('io.sc.engine.mv.enums.Stability.yes'), t('io.sc.engine.mv.enums.Stability.no')]; +}); + const dialogRef = ref(); const detailRef = ref(); const selectedTabRef = ref('discrimination'); const curveDataDialogRef = ref(); +const chiSquareValueRef = ref(0); let rocEchart; let capEchart; let ksEchart; let psiEchart; + const open = (detail: any) => { detailRef.value = detail; dialogRef.value.show(); + selectedTabRef.value = 'discrimination'; tabChanged(); }; const tabChanged = () => { nextTick(() => { if ('discrimination' === selectedTabRef.value) { + // roc if (!rocEchart) { - rocEchart = echarts.init(document.getElementById('rocEchart')); + rocEchart = echarts.init(document.getElementById('rocEchart'), null, { width: 400, height: 300 }); + } else { + rocEchart.dispose(); + rocEchart = echarts.init(document.getElementById('rocEchart'), null, { width: 400, height: 300 }); } axios - .get(Environment.apiContextPath('/api/mv/sc/cap/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) + .get(Environment.apiContextPath('/api/mv/viewer/roc/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) .then((response) => { rocEchart?.setOption(response.data); rocEchart?.resize(); }); + // cap if (!capEchart) { - capEchart = echarts.init(document.getElementById('capEchart')); + capEchart = echarts.init(document.getElementById('capEchart'), null, { width: 400, height: 300 }); + } else { + capEchart.dispose(); + capEchart = echarts.init(document.getElementById('capEchart'), null, { width: 400, height: 300 }); } axios - .get(Environment.apiContextPath('/api/mv/sc/cap/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) + .get(Environment.apiContextPath('/api/mv/viewer/cap/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) .then((response) => { capEchart?.setOption(response.data); capEchart?.resize(); }); + // ks if (!ksEchart) { - ksEchart = echarts.init(document.getElementById('ksEchart')); + ksEchart = echarts.init(document.getElementById('ksEchart'), null, { width: 400, height: 300 }); + } else { + ksEchart.dispose(); + ksEchart = echarts.init(document.getElementById('ksEchart'), null, { width: 400, height: 300 }); } axios - .get(Environment.apiContextPath('/api/mv/sc/ks/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) + .get(Environment.apiContextPath('/api/mv/viewer/ks/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) .then((response) => { ksEchart?.setOption(response.data); ksEchart?.resize(); }); } else if ('stability' === selectedTabRef.value) { + // psi if (!psiEchart) { - psiEchart = echarts.init(document.getElementById('psiEchart')); + psiEchart = echarts.init(document.getElementById('psiEchart'), null, { width: 400, height: 300 }); + } else { + psiEchart.dispose(); + psiEchart = echarts.init(document.getElementById('psiEchart'), null, { width: 400, height: 300 }); } axios - .get(Environment.apiContextPath('/api/mv/st/psi/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) + .get(Environment.apiContextPath('/api/mv/viewer/psi/option?modelId=' + detailRef.value.modelId + '&validateDate=' + detailRef.value.validateDate)) .then((response) => { psiEchart?.setOption(response.data); psiEchart?.resize(); @@ -244,6 +342,23 @@ const showData = (type: string) => { curveDataDialogRef.value.open(type, detailRef.value); }; +const passOrNotFormater = (value) => { + if (Tools.isUndefinedOrNull(value)) { + return ''; + } + if (value === 1) { + return { + componentType: 'QIcon', + attrs: { name: 'bi-check-circle', size: '20px', color: 'green' }, + }; + } else { + return { + componentType: 'QIcon', + attrs: { name: 'bi-x-circle', size: '20px', color: 'red' }, + }; + } +}; + defineExpose({ open, close, diff --git a/io.sc.engine.mv.frontend/src/views/sample/Sample.vue b/io.sc.engine.mv.frontend/src/views/sample/Sample.vue index 7d71d742..152f6b2d 100644 --- a/io.sc.engine.mv.frontend/src/views/sample/Sample.vue +++ b/io.sc.engine.mv.frontend/src/views/sample/Sample.vue @@ -1,67 +1,55 @@ @@ -25,7 +25,7 @@ diff --git a/io.sc.platform.core.frontend/src/views/TreeGrid.vue b/io.sc.platform.core.frontend/src/views/TreeGrid.vue index a8313c2a..55ef6444 100644 --- a/io.sc.platform.core.frontend/src/views/TreeGrid.vue +++ b/io.sc.platform.core.frontend/src/views/TreeGrid.vue @@ -1,120 +1,236 @@ diff --git a/io.sc.platform.core.frontend/template-project/package.json b/io.sc.platform.core.frontend/template-project/package.json index 8cff933a..8dd58e44 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.111", + "version": "8.1.113", "description": "前端核心包,用于快速构建前端的脚手架", "private": false, "keywords": [], @@ -92,7 +92,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.111", + "platform-core": "8.1.113", "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 a8313c2a..55ef6444 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,120 +1,236 @@ diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/enums/AuditLogAction.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/enums/AuditLogAction.java index aa62fc19..9a3ea7f5 100644 --- a/io.sc.platform.core/src/main/java/io/sc/platform/core/enums/AuditLogAction.java +++ b/io.sc.platform.core/src/main/java/io/sc/platform/core/enums/AuditLogAction.java @@ -7,6 +7,7 @@ public enum AuditLogAction { UPDATE("UPDATE"), QUERY("QUERY"), FIND_ONE("FIND_ONE"), + RESET_DEFAULT_VALUES("RESET_DEFAULT_VALUES"), EXPORT("EXPORT"), LOGIN("LOGIN"), LOGOUT("LOGOUT"); diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/enums/GoodLevel.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/enums/GoodLevel.java deleted file mode 100644 index be9c617b..00000000 --- a/io.sc.platform.core/src/main/java/io/sc/platform/core/enums/GoodLevel.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.sc.platform.core.enums; - -public enum GoodLevel { - POOR, - MEDIUM, - GOOD, - VERY_GOOD, - EXCELLENT, - PERFECT; -} diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums.properties index 0442ea41..aa1c388b 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums.properties @@ -13,6 +13,7 @@ io.sc.platform.core.enums.AuditLogAction.REMOVE=Remove io.sc.platform.core.enums.AuditLogAction.UPDATE=Update io.sc.platform.core.enums.AuditLogAction.QUERY=Query io.sc.platform.core.enums.AuditLogAction.FIND_ONE=Find One +io.sc.platform.core.enums.AuditLogAction.RESET_DEFAULT_VALUES=Reset Default Values io.sc.platform.core.enums.AuditLogAction.EXPORT=Export io.sc.platform.core.enums.AuditLogAction.LOGIN=Login io.sc.platform.core.enums.AuditLogAction.LOGOUT=Logout @@ -28,10 +29,3 @@ io.sc.platform.core.enums.RoundingMode.FLOOR=floor io.sc.platform.core.enums.RoundingMode.HALF_UP=Half Up io.sc.platform.core.enums.RoundingMode.HALF_DOWN=Half Down io.sc.platform.core.enums.RoundingMode.HALF_EVEN=Half Even - -io.sc.platform.core.enums.GoodLevel.POOR=Poor -io.sc.platform.core.enums.GoodLevel.MEDIUM=Medium -io.sc.platform.core.enums.GoodLevel.GOOD=Good -io.sc.platform.core.enums.GoodLevel.VERY_GOOD=Very Good -io.sc.platform.core.enums.GoodLevel.EXCELLENT=Excellent -io.sc.platform.core.enums.GoodLevel.PERFECT=Perfect diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums_tw_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums_tw_CN.properties index 4533c1c8..1a057b64 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums_tw_CN.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums_tw_CN.properties @@ -13,6 +13,7 @@ io.sc.platform.core.enums.AuditLogAction.REMOVE=\u522A\u9664 io.sc.platform.core.enums.AuditLogAction.UPDATE=\u66F4\u65B0 io.sc.platform.core.enums.AuditLogAction.QUERY=\u67E5\u8A62 io.sc.platform.core.enums.AuditLogAction.FIND_ONE=\u67E5\u627E\u55AE\u500B +io.sc.platform.core.enums.AuditLogAction.RESET_DEFAULT_VALUES=\u6062\u5FA9\u9ED8\u8A8D\u503C io.sc.platform.core.enums.AuditLogAction.EXPORT=\u5C0E\u51FA io.sc.platform.core.enums.AuditLogAction.LOGIN=\u767B\u9304 io.sc.platform.core.enums.AuditLogAction.LOGOUT=\u9000\u51FA @@ -27,11 +28,4 @@ io.sc.platform.core.enums.RoundingMode.CEILING=\u5411\u6B63\u7121\u7AAE\u65B9\u5 io.sc.platform.core.enums.RoundingMode.FLOOR=\u5411\u8CA0\u7121\u7AAE\u65B9\u5411\u820D\u5165 io.sc.platform.core.enums.RoundingMode.HALF_UP=\u7D93\u5178\u7684\u56DB\u820D\u4E94\u5165 io.sc.platform.core.enums.RoundingMode.HALF_DOWN=\u6700\u8FD1\u6578\u5B57\u820D\u5165(5\u820D) -io.sc.platform.core.enums.RoundingMode.HALF_EVEN=\u9280\u884C\u5BB6\u820D\u5165\u6CD5 - -io.sc.platform.core.enums.GoodLevel.POOR=\u5DEE -io.sc.platform.core.enums.GoodLevel.MEDIUM=\u4E2D\u7B49 -io.sc.platform.core.enums.GoodLevel.GOOD=\u597D -io.sc.platform.core.enums.GoodLevel.VERY_GOOD=\u5F88\u597D -io.sc.platform.core.enums.GoodLevel.EXCELLENT=\u975E\u5E38\u597D -io.sc.platform.core.enums.GoodLevel.PERFECT=\u5B8C\u7F8E \ No newline at end of file +io.sc.platform.core.enums.RoundingMode.HALF_EVEN=\u9280\u884C\u5BB6\u820D\u5165\u6CD5 \ No newline at end of file diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums_zh_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums_zh_CN.properties index 54a72c1c..f315457e 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums_zh_CN.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/enums_zh_CN.properties @@ -13,6 +13,7 @@ io.sc.platform.core.enums.AuditLogAction.REMOVE=\u522A\u9664 io.sc.platform.core.enums.AuditLogAction.UPDATE=\u66F4\u65B0 io.sc.platform.core.enums.AuditLogAction.QUERY=\u67E5\u8BE2 io.sc.platform.core.enums.AuditLogAction.FIND_ONE=\u67E5\u627E\u5355\u4E2A +io.sc.platform.core.enums.AuditLogAction.RESET_DEFAULT_VALUES=\u6062\u590D\u9ED8\u8BA4\u503C io.sc.platform.core.enums.AuditLogAction.EXPORT=\u5BFC\u51FA io.sc.platform.core.enums.AuditLogAction.LOGIN=\u767B\u5F55 io.sc.platform.core.enums.AuditLogAction.LOGOUT=\u9000\u51FA @@ -27,11 +28,4 @@ io.sc.platform.core.enums.RoundingMode.CEILING=\u5411\u6B63\u65E0\u7A77\u65B9\u5 io.sc.platform.core.enums.RoundingMode.FLOOR=\u5411\u8D1F\u65E0\u7A77\u65B9\u5411\u820D\u5165 io.sc.platform.core.enums.RoundingMode.HALF_UP=\u7ECF\u5178\u7684\u56DB\u820D\u4E94\u5165 io.sc.platform.core.enums.RoundingMode.HALF_DOWN=\u6700\u8FD1\u6570\u5B57\u820D\u5165(5\u820D) -io.sc.platform.core.enums.RoundingMode.HALF_EVEN=\u94F6\u884C\u5BB6\u820D\u5165\u6CD5 - -io.sc.platform.core.enums.GoodLevel.POOR=\u5DEE -io.sc.platform.core.enums.GoodLevel.MEDIUM=\u4E2D\u7B49 -io.sc.platform.core.enums.GoodLevel.GOOD=\u597D -io.sc.platform.core.enums.GoodLevel.VERY_GOOD=\u5F88\u597D -io.sc.platform.core.enums.GoodLevel.EXCELLENT=\u975E\u5E38\u597D -io.sc.platform.core.enums.GoodLevel.PERFECT=\u5B8C\u7F8E \ No newline at end of file +io.sc.platform.core.enums.RoundingMode.HALF_EVEN=\u94F6\u884C\u5BB6\u820D\u5165\u6CD5 \ No newline at end of file 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 0a76ebfe..df257caa 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 @@ -17,6 +17,7 @@ className=Class clone=Clone close=Close code=Code +complete=Complete component=Component confirm=Confirm confirmPassword=Confirm Password @@ -127,6 +128,7 @@ select=Select selectAll=Select All serializer=Serializer size=Size +start=Start startDate=Start Date status=Status submit=Submit @@ -174,4 +176,5 @@ quantitative=Quantitative qualitative=Qualitative range=Range color=Color -resetDefaultValues=Reset Default \ No newline at end of file +resetDefaultValues=Reset Default +running=Running \ 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 ccbf93e3..05538dc4 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 @@ -17,6 +17,7 @@ className=\u985E\u540D clone=\u8907\u88FD close=\u95DC\u9589 code=\u4EE3\u78BC +complete=\u5B8C\u6210 component=\u7D44\u4EF6 confirm=\u78BA\u5B9A confirmPassword=\u78BA\u8A8D\u5BC6\u78BC @@ -127,6 +128,7 @@ select=\u9078\u64C7 selectAll=\u5168\u90E8\u9078\u64C7 serializer=\u5E8F\u5217\u5316\u5668 size=\u5C3A\u5BF8 +start=\u958B\u59CB startDate=\u958B\u59CB\u65E5\u671F status=\u72C0\u614B submit=\u63D0\u4EA4 @@ -174,4 +176,5 @@ quantitative=\u5B9A\u91CF qualitative=\u5B9A\u6027 range=\u7BC4\u570D color=\u984F\u8272 -resetDefaultValues=\u6062\u5FA9\u9ED8\u8A8D\u503C \ No newline at end of file +resetDefaultValues=\u6062\u5FA9\u9ED8\u8A8D\u503C +running=\u6B63\u5728\u904B\u884C \ 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 ded8d47f..e35ee769 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 @@ -17,6 +17,7 @@ className=\u7C7B\u540D clone=\u590D\u5236 close=\u5173\u95ED code=\u4EE3\u7801 +complete=\u5B8C\u6210 component=\u7EC4\u4EF6 confirm=\u786E\u5B9A confirmPassword=\u786E\u8BA4\u5BC6\u7801 @@ -127,6 +128,7 @@ select=\u9009\u62E9 selectAll=\u5168\u90E8\u9009\u62E9 serializer=\u5E8F\u5217\u5316\u5668 size=\u5C3A\u5BF8 +start=\u5F00\u59CB startDate=\u5F00\u59CB\u65E5\u671F status=\u72B6\u6001 submit=\u63D0\u4EA4 @@ -174,4 +176,5 @@ quantitative=\u5B9A\u91CF qualitative=\u5B9A\u6027 range=\u8303\u56F4 color=\u989C\u8272 -resetDefaultValues=\u6062\u590D\u9ED8\u8BA4\u503C \ No newline at end of file +resetDefaultValues=\u6062\u590D\u9ED8\u8BA4\u503C +running=\u6B63\u5728\u8FD0\u884C \ 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 8855f75a..57740395 100644 --- a/io.sc.platform.developer.frontend/package.json +++ b/io.sc.platform.developer.frontend/package.json @@ -78,7 +78,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.111", + "platform-core": "8.1.113", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", diff --git a/io.sc.platform.lcdp.frontend/package.json b/io.sc.platform.lcdp.frontend/package.json index 0970d2f9..a65351e8 100644 --- a/io.sc.platform.lcdp.frontend/package.json +++ b/io.sc.platform.lcdp.frontend/package.json @@ -91,7 +91,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.111", + "platform-core": "8.1.113", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", diff --git a/io.sc.platform.mvc.frontend/package.json b/io.sc.platform.mvc.frontend/package.json index a33c37e4..c7b1155a 100644 --- a/io.sc.platform.mvc.frontend/package.json +++ b/io.sc.platform.mvc.frontend/package.json @@ -78,7 +78,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.111", + "platform-core": "8.1.113", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", diff --git a/io.sc.platform.mvc/src/main/java/io/sc/platform/mvc/controller/support/RestCrudController.java b/io.sc.platform.mvc/src/main/java/io/sc/platform/mvc/controller/support/RestCrudController.java index b5a20c05..aef886e8 100644 --- a/io.sc.platform.mvc/src/main/java/io/sc/platform/mvc/controller/support/RestCrudController.java +++ b/io.sc.platform.mvc/src/main/java/io/sc/platform/mvc/controller/support/RestCrudController.java @@ -122,4 +122,10 @@ public abstract class RestCrudController(vos,page.getPageable(),page.getTotalElements()); } + + @AuditLog(action=AuditLogAction.RESET_DEFAULT_VALUES) + @PostMapping("resetDefaultValues") + public void resetDefaultValues(HttpServletRequest request,HttpServletResponse response,QueryParameter queryParameter) throws Exception{ + service.resetDefaultValues(); + } } diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/CriteriaBuilder.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/CriteriaBuilder.java new file mode 100644 index 00000000..54640540 --- /dev/null +++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/CriteriaBuilder.java @@ -0,0 +1,52 @@ +package io.sc.platform.orm.service.support; + +import com.fasterxml.jackson.core.JsonProcessingException; +import io.sc.platform.core.util.ObjectMapper4Json; +import io.sc.platform.orm.service.support.criteria.Criteria; +import io.sc.platform.orm.service.support.criteria.impl.*; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class CriteriaBuilder { + public Criteria and(Criteria... criterias){ + if(criterias!=null && criterias.length>0) { + And condition = new And(); + condition.setCriteria(Arrays.asList(criterias)); + return condition; + } + return new None(); + } + + public Criteria or(Criteria... criterias){ + if(criterias!=null && criterias.length>0) { + Or condition = new Or<>(); + condition.setCriteria(Arrays.asList(criterias)); + return condition; + } + return new None(); + } + + public Criteria not(Criteria criteria){ + if(criteria!=null) { + Not condition = new Not<>(); + List> list =new ArrayList<>(1); + list.add(criteria); + condition.setCriteria(list); + return condition; + } + return new None(); + } + + public Criteria equals(String fieldName,String value){ + if(StringUtils.hasText(fieldName) && value!=null){ + Equals condition =new Equals<>(); + condition.setFieldName(fieldName); + condition.setValue(value); + return condition; + } + return new None(); + } +} diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryParameter.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryParameter.java index 92723865..9c9cbfff 100644 --- a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryParameter.java +++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryParameter.java @@ -78,6 +78,17 @@ public class QueryParameter { } } + public boolean existsCriteria(){ + if(this.criterias!=null && !this.criterias.isEmpty()){ + return true; + } + return false; + } + + public void addCriteria(Criteria criteria){ + criterias.add(criteria); + } + public Boolean getPageable() { return pageable; } 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 d20db6b6..69aaf51b 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 @@ -64,4 +64,27 @@ public class QueryResult { } return new PageImpl(result,pageable,total); } + + public static Page page(Page page, QueryParameter queryParameter){ + return page(copyContent(page),queryParameter, new DefaultQueryResultSorter()); + } + + public static Page page(Page page, QueryParameter queryParameter, QueryResultSorter sorter){ + return page(copyContent(page),queryParameter, sorter); + } + + private static List copyContent(Page page){ + if(page==null){ + return Collections.emptyList(); + } + List content =page.getContent(); + if(content==null || content.isEmpty()){ + return Collections.emptyList(); + } + List result =new ArrayList<>(content.size()); + for(T item : content){ + result.add(item); + } + return result; + } } diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/Criteria.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/Criteria.java index 81d6493c..4b7f668d 100644 --- a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/Criteria.java +++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/Criteria.java @@ -1,6 +1,7 @@ package io.sc.platform.orm.service.support.criteria; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonSubTypes.Type; @@ -105,7 +106,7 @@ public abstract class Criteria { protected ConversionService conversionService; protected Repositories repositories; protected String fieldName; - protected OperatorType operator; + @JsonIgnore protected OperatorType operator; protected List> criteria; public static List parse(String criteriaJsonString) { diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/And.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/And.java index 1ed239ce..ab28aeed 100644 --- a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/And.java +++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/And.java @@ -15,6 +15,7 @@ public class And extends Criteria { List predicates =new ArrayList<>(); for(Criteria _criteria : criteria){ _criteria.setConversionService(conversionService); + _criteria.setRepositories(repositories); predicates.add(_criteria.getPredicate(root,query,builder)); } return builder.and(predicates.toArray(new Predicate[]{})); diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/Equals.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/Equals.java index bc5b96b7..0e202b8a 100644 --- a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/Equals.java +++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/Equals.java @@ -35,4 +35,12 @@ public class Equals extends Criteria { } return null; } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } } diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/None.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/None.java new file mode 100644 index 00000000..3cd1d473 --- /dev/null +++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/criteria/impl/None.java @@ -0,0 +1,14 @@ +package io.sc.platform.orm.service.support.criteria.impl; + +import io.sc.platform.orm.service.support.criteria.Criteria; +import io.sc.platform.orm.service.support.criteria.PathInformation; +import org.springframework.util.StringUtils; + +import javax.persistence.criteria.*; + +public class None extends Criteria { + @Override + public Predicate getPredicate(Root root, CriteriaQuery query, CriteriaBuilder builder) { + return null; + } +} diff --git a/io.sc.platform.security.frontend/package.json b/io.sc.platform.security.frontend/package.json index e7293a11..306ca9c4 100644 --- a/io.sc.platform.security.frontend/package.json +++ b/io.sc.platform.security.frontend/package.json @@ -99,6 +99,6 @@ "vue-dompurify-html": "5.0.1", "vue-i18n": "9.8.0", "vue-router": "4.2.5", - "platform-core": "8.1.111" + "platform-core": "8.1.113" } } \ 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 d8ddd105..15013fc7 100644 --- a/io.sc.platform.system.frontend/package.json +++ b/io.sc.platform.system.frontend/package.json @@ -78,7 +78,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.111", + "platform-core": "8.1.113", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3",