From bcacc1a0d4dc501711ac5ecc919df006d8b46644 Mon Sep 17 00:00:00 2001 From: wangshaoping Date: Thu, 28 Nov 2024 10:41:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=208.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- erm.frontend/package.json | 105 ++-- gradle.properties | 5 +- io.sc.engine.mv.frontend/package.json | 105 ++-- .../impl/CardGongXinImporterServiceImpl.java | 8 +- .../impl/CardJingyingImporterServiceImpl.java | 3 +- .../impl/DaiKuanImporterServiceImpl.java | 3 +- .../impl/TestCaseImporterServiceImpl.java | 3 +- .../impl/CfgDataExtractorServiceImpl.java | 4 +- .../engine/mv/validator/RuntimeContext.java | 2 +- .../executor/impl/CoeBinomialExecutor.java | 14 +- .../executor/impl/CoeChiSquareExecutor.java | 10 +- .../executor/impl/ResultExecutor.java | 2 +- .../executor/impl/SampleExecutor.java | 12 +- .../executor/impl/ScCapExecutor.java | 16 +- .../validator/executor/impl/ScKsExecutor.java | 16 +- .../executor/impl/ScRocExecutor.java | 16 +- .../executor/impl/StPsiExecutor.java | 10 +- .../rule/client/remote/RemoteExecutor.java | 20 +- .../rule/client/remote/RemoteLoader.java | 26 +- .../io/sc/engine/rule/client/test/Test.java | 10 +- io.sc.engine.rule.core/build.gradle | 2 + .../engine/rule/core/classes/RuleResult.java | 9 +- .../rule/core/classes/SingleRuleResult.java | 5 +- .../sc/engine/rule/core/code/SourceCode.java | 8 +- .../rule/core/code/SourceCodeGenerator.java | 7 + .../generator/ExecuteUnit4LibGenerator.java | 26 + .../ExecuteUnit4ResourceGenerator.java | 59 ++ .../code/generator/ExecuteUnitGenerator.java | 22 + .../impl/ArgumentClassGenerator.java | 9 + .../generator/impl/CommonImportGenerator.java | 13 + .../impl/DictionaryClassGenerator.java | 11 + .../generator/impl/FunctionGenerator.java | 29 + .../generator/impl/LibClassGenerator.java | 12 + .../code/generator/impl/ModelGenerator.java | 57 ++ .../code/generator/impl/PackageGenerator.java | 15 + .../generator/impl/ParameterGenerator.java | 60 ++ .../impl/ParameterMethodGenerator.java | 23 + .../impl/ResourceClassGenerator.java | 37 ++ .../code/generator/template/functions.tpl | 10 + .../core/code/generator/template/import.tpl | 86 +++ .../core/code/generator/template/model.tpl | 28 + .../core/code/generator/template/package.tpl | 1 + .../code/generator/template/parameter.tpl | 37 ++ .../template/processor/DECISION_TABLE.ftl | 4 + .../template/processor/DECISION_TABLE_2C.ftl | 4 + .../template/processor/DECISION_TREE.ftl | 4 + .../processor/DECISION_TREE_FUNCTION.ftl | 13 + .../processor/EXECUTION_FLOW_FUNCTION.ftl | 13 + .../template/processor/GROOVY_SCRIPT.ftl | 3 + .../template/processor/MATH_FORMULA.ftl | 4 + .../template/processor/OBJECT_PROPERTIES.ftl | 4 + .../template/processor/OPTION_VALUE.ftl | 34 ++ .../generator/template/processor/PMML.ftl | 3 + .../code/generator/template/processor/SQL.ftl | 17 + .../generator/template/processor/TERNARY.ftl | 4 + .../template/processor/arithmetic.tpl | 4 + .../template/processor/conditionRange.ftl | 3 + .../template/processor/numberRange.ftl | 4 + .../core/code/generator/template/resource.tpl | 118 ++++ .../code/impl/JavaSourceCodeGenerator.java | 24 + .../core/code/impl/support/ExecuteResult.java | 76 +++ .../core/code/impl/support/ExecuteUnit.java | 38 ++ .../code/impl/support/ExecuteUnit4Lib.java | 22 + .../impl/support/ExecuteUnit4Resource.java | 36 ++ .../code/impl/support/ParameterResult.java | 4 +- .../code/impl/support/ResourceResult.java | 11 +- .../support/processor/ConditionRange.java | 13 +- .../impl/support/processor/DecisionTable.java | 11 +- .../support/processor/DecisionTable2C.java | 11 +- .../impl/support/processor/NumberRange.java | 30 +- .../support/processor/ObjectProperty.java | 4 +- .../code/impl/support/processor/Option.java | 4 +- .../code/impl/support/processor/Rule.java | 13 +- .../impl/support/processor/SingleRule.java | 13 +- .../support/processor/SqlFieldMapping.java | 11 +- .../JsonStringToObjectConverterFactory.java | 4 +- .../support/MapToObjectConverterFactory.java | 11 +- .../support/StringToDateConverter.java | 6 +- .../engine/rule/core/enums/ExecuteMode.java | 4 +- .../engine/rule/core/enums/ReplaceMode.java | 6 + .../rule/core/function/DateFunction.java | 4 +- .../engine/rule/core/util/CodeReplacer.java | 12 +- .../rule/core/util/DataTypeConvertor.java | 22 - .../io/sc/engine/rule/core/util/DateUtil.java | 235 -------- .../rule/core/util/ExpressionReplacer.java | 8 + .../io/sc/engine/rule/core/util/FileUtil.java | 523 ------------------ .../rule/core/util/JacksonObjectMapper.java | 27 - .../sc/engine/rule/core/util/ObjectUtil.java | 51 -- .../sc/engine/rule/core/util/PinyinUtil.java | 55 -- .../io/sc/engine/rule/core/util/Strings.java | 91 --- .../sc/engine/rule/core/util/TimeTracer.java | 76 --- .../engine/rule/core/util/ValueTypeUtil.java | 2 +- .../sc/engine/rule/core/i18n/enums.properties | 4 +- .../rule/core/i18n/enums_tw_CN.properties | 4 +- .../rule/core/i18n/enums_zh_CN.properties | 4 +- io.sc.engine.rule.frontend/package.json | 105 ++-- .../resources/designer/DecisionTreeDialog.vue | 4 +- .../designer/ExecutionFlowDialog.vue | 2 +- .../src/views/resources/designer/Model.vue | 6 +- .../views/resources/designer/Parameter.vue | 20 +- .../views/resources/designer/Processor.vue | 1 - .../src/views/shared/AutoCompletionManager.ts | 64 ++- .../src/views/shared/ImportDialog.vue | 81 +++ .../src/views/shared/MoveParameterDialog.vue | 2 +- .../shared/ParameterAndValueTypeManager.ts | 167 ++++++ .../src/views/shared/SourceCodeDialog.vue | 12 +- .../shared/UserDefinedFunctionsManager.ts | 10 +- .../src/views/shared/processors/Arithmetic.ts | 2 +- .../views/shared/processors/ConditionRange.ts | 4 +- .../views/shared/processors/DecisionTable.ts | 2 +- .../shared/processors/DecisionTable2c.ts | 2 +- .../views/shared/processors/DecisionTree.ts | 22 +- .../views/shared/processors/ExecutionFlow.ts | 18 + .../views/shared/processors/GroovyScript.ts | 2 +- .../views/shared/processors/HttpRequest.ts | 2 +- .../views/shared/processors/MathFormula.ts | 27 +- .../shared/processors/ObjectProperties.ts | 2 +- .../views/shared/processors/OptionValue.ts | 5 +- .../src/views/shared/processors/Pmml.ts | 2 +- .../src/views/shared/processors/Sql.ts | 2 +- .../src/views/shared/processors/Ternary.ts | 2 +- .../src/views/shared/processors/WhenThen.ts | 2 +- .../server/common/CodeAndNameReplacer.java | 10 +- .../ParameterAndValueTypeWebController.java | 45 ++ .../RuleEngineWorkFlowInitializer.java | 2 +- .../initializer/UserFunctionInitializer.java | 2 - .../service/ParameterAndValueTypeService.java | 15 + .../impl/AutoCompletionServiceImpl.java | 7 +- .../ParameterAndValueTypeServiceImpl.java | 307 ++++++++++ .../service/support/AutoCompletion.java | 1 + .../support/ParameterAndValueType.java | 169 ++++++ .../controller/DictionaryWebController.java | 7 +- ...serDefinedJavaClassFieldWebController.java | 19 +- .../UserDefinedJavaClassFieldEntity.java | 6 +- .../dictionary/service/DictionaryService.java | 10 - .../service/impl/DictionaryServiceImpl.java | 28 +- .../UserDefinedJavaClassFieldServiceImpl.java | 27 +- .../controller/ExecuteUnitWebController.java | 62 +++ .../service/ExecuteUnitService.java | 13 + .../service/impl/ExecuteUnitServiceImpl.java | 99 ++++ .../controller/FunctionWebController.java | 7 +- .../handler/IndicatorEntityEventHandler.java | 44 +- .../handler/ParameterEntityEventHandler.java | 46 +- ...finedJavaClassFieldEntityEventHandler.java | 194 +++---- .../IndicatorProcessorWebController.java | 10 +- .../lib/controller/LibWebController.java | 6 +- .../lib/entity/IndicatorProcessorEntity.java | 4 +- .../ArithmeticIndicatorProcessorEntity.java | 8 +- ...onditionRangeIndicatorProcessorEntity.java | 8 +- .../GroovyScriptIndicatorProcessorEntity.java | 8 +- .../HttpRequestIndicatorProcessorEntity.java | 10 +- .../MathFormulaIndicatorProcessorEntity.java | 12 +- .../NumberRangeIndicatorProcessorEntity.java | 10 +- ...ectPropertiesIndicatorProcessorEntity.java | 12 +- .../SqlIndicatorProcessorEntity.java | 12 +- .../TernaryIndicatorProcessorEntity.java | 12 +- .../WhenThenIndicatorProcessorEntity.java | 10 +- .../server/lib/service/IndicatorService.java | 7 +- .../impl/IndicatorProcessorServiceImpl.java | 34 +- .../service/impl/IndicatorServiceImpl.java | 39 +- .../lib/service/impl/LibServiceImpl.java | 12 +- .../controller/MigrationWebController.java | 10 +- .../ParameterProcessorWebController.java | 36 +- .../entity/ParameterProcessorEntity.java | 5 +- .../ArithmeticParameterProcessorEntity.java | 8 +- ...onditionRangeParameterProcessorEntity.java | 8 +- ...cisionTable2CParameterProcessorEntity.java | 8 +- ...DecisionTableParameterProcessorEntity.java | 8 +- .../DecisionTreeParameterProcessorEntity.java | 6 +- ...ExecutionFlowParameterProcessorEntity.java | 8 +- .../GroovyScriptParameterProcessorEntity.java | 8 +- .../HttpRequestParameterProcessorEntity.java | 10 +- .../MathFormulaParameterProcessorEntity.java | 17 +- .../NumberRangeParameterProcessorEntity.java | 14 +- ...ectPropertiesParameterProcessorEntity.java | 11 +- .../OptionValueParameterProcessorEntity.java | 8 +- .../PmmlParameterProcessorEntity.java | 8 +- .../RuleParameterProcessorEntity.java | 8 +- .../ScoreCardParameterProcessorEntity.java | 19 +- .../SingleRuleParameterProcessorEntity.java | 6 +- .../SqlParameterProcessorEntity.java | 12 +- .../TernaryParameterProcessorEntity.java | 12 +- .../WhenThenParameterProcessorEntity.java | 10 +- .../model/service/ParameterService.java | 26 +- .../model/service/impl/ModelServiceImpl.java | 6 +- .../impl/ParameterProcessorServiceImpl.java | 45 +- .../service/impl/ParameterServiceImpl.java | 93 +--- .../model/service/support/ObjectProperty.java | 9 +- .../rule/server/plugins/PluginManager.java | 2 +- .../controller/ResourceWebController.java | 6 +- .../resource/entity/ModelResourceEntity.java | 5 - .../resource/entity/ResourceEntity.java | 2 +- .../service/impl/ResourceServiceImpl.java | 22 +- .../service/impl/TemplateServiceImpl.java | 2 +- .../service/impl/TestCaseServiceImpl.java | 17 +- .../rule/server/util/CodeAndNameMapping.java | 46 -- .../util/VariableCodeAndNameReplacer.java | 38 +- .../META-INF/platform/plugins/components.json | 3 + .../META-INF/platform/plugins/security.json | 5 +- io.sc.engine.st.frontend/package.json | 105 ++-- .../controller/IndepFactorWebController.java | 4 - .../java/io/sc/engine/st/enums/ValueType.java | 2 +- .../st/jpa/entity/DepFactorDefineEntity.java | 2 +- .../jpa/entity/IndepFactorDefineEntity.java | 3 +- .../entity/ScenarioFactorDefineEntity.java | 5 +- .../st/service/impl/TestCaseServiceImpl.java | 8 +- .../service/impl/AttachmentServiceImpl.java | 4 +- io.sc.platform.core.frontend/package.json | 106 ++-- .../components/code-mirror/WCodeMirror.vue | 9 +- .../components/graph/PlatformGraph.ts | 8 +- .../graph/style/PlatformStylesheet.ts | 2 +- .../math/dialog/VariableEditorDialog.vue | 13 +- .../src/platform/components/tag/WEnumsTag.vue | 2 +- .../components/toolbar/ChildrenBtn.vue | 2 +- .../src/platform/index.ts | 1 + .../src/platform/utils/ExpressionTools.ts | 55 ++ .../src/platform/utils/index.ts | 1 + .../src/views/testcase/math/MathEditor.vue | 4 +- .../src/views/testcase/word/Word.vue | 2 +- .../template-project/package.json | 107 ++-- .../src/views/testcase/math/MathEditor.vue | 4 +- .../src/views/testcase/word/Word.vue | 2 +- io.sc.platform.core/build.gradle | 1 + .../platform/core/CommandLineArgsHandler.java | 4 +- .../io/sc/platform/core/DirectoryManager.java | 2 +- .../java/io/sc/platform/core/Environment.java | 2 +- .../java/io/sc/platform/core/License.java | 20 - .../io/sc/platform/core/audit/AuditLog.java | 4 +- .../support/DateJsonDeserializer.java | 2 +- .../support/DateJsonSerializer.java | 2 +- .../support/InstantJsonDeserializer.java | 2 +- .../support/InstantJsonSerializer.java | 2 +- .../core/compiler/JavaMemoryCompiler.java | 2 +- .../core/converter/String2DateConverter.java | 2 +- .../platform/core/plugins/PluginParser.java | 8 +- .../ApplicationInitializeServiceImpl.java | 2 +- .../ApplicationPropertiesFileServiceImpl.java | 4 +- .../impl/LicenseManagerServiceImpl.java | 3 +- .../core/service/impl/RuntimeServiceImpl.java | 2 +- .../springboot/AfterEnvironmentProcessor.java | 2 +- .../BeforeEnvironmentProcessor.java | 9 +- .../sc/platform/core/support/FileWrapper.java | 2 +- .../sc/platform/core/support/table/Table.java | 2 +- .../platform/core/util/ObjectMapper4Json.java | 33 -- .../platform/core/util/ObjectMapper4Xml.java | 19 - .../platform/core/util/ParameterChecker.java | 94 ---- .../io/sc/platform/core/util/PinyinUtil.java | 2 + .../io/sc/platform/core/util/PropertiesX.java | 1 + .../core/util/ServletContainerUtil.java | 76 --- .../io/sc/platform/core/util/ZipUtil.java | 2 +- .../util/support/MapObjectKeyConvertor.java | 5 - .../support/MapObjectKeyValueConvertor.java | 6 - io.sc.platform.developer.doc/package.json | 12 +- .../package.json | 105 ++-- .../plugins/InitializerWebController.java | 2 +- .../sql/controller/SqlWebController.java | 7 +- .../sql/service/impl/SqlServiceImpl.java | 2 +- .../wrapper/springboot/FilterWrapper.java | 9 +- .../wrapper/springboot/MappingWrapper.java | 2 +- .../wrapper/springboot/ServletWrapper.java | 2 +- .../controller/support/ProcessProperties.java | 13 - .../listener/VariableSetterListener.java | 23 +- .../support/CompleteTaskResponse.java | 5 +- .../flowable/util/BpmnConverterUtil.java | 30 +- .../platform/groovy/GroovyScriptExecutor.java | 2 +- .../controller/InstallerWebController.java | 4 +- .../installer/item/FinishInstallerItem.java | 2 +- .../installer/item/ServerInstallerItem.java | 6 +- .../service/impl/InstallerServiceImpl.java | 4 +- .../support/InstallerProgressableThread.java | 2 +- .../src/main/java/io/sc/platform/jdbc/A.java | 93 ---- .../exporter/LiquibaseDataCsvExporter.java | 8 +- .../exporter/LiquibaseSchemaExporter.java | 2 +- .../liquibase/task/CsvImportTaskChange.java | 8 +- .../schemacrawler/MetaDataLoaderImpl.java | 4 +- .../controller/support/ExporterThread.java | 3 +- .../controller/support/ImporterThread.java | 4 +- .../jdbc/datasource/DatasourceProperties.java | 4 +- .../platform/jdbc/p6spy/MessageFormater.java | 2 +- .../plugins/item/JdbcConnectionTemplate.java | 1 - .../JdbcConnectionTemplateServiceImpl.java | 2 +- .../support/DatasourceConfigRowMapper.java | 5 +- .../sql/builder/InsertIntoSqlBuilder.java | 3 +- .../jdbc/sql/dialect/impl/Db2Dialect.java | 27 +- .../jdbc/sql/dialect/impl/DerbyDialect.java | 25 +- .../jdbc/sql/dialect/impl/H2Dialect.java | 23 +- .../jdbc/sql/dialect/impl/MysqlDialect.java | 23 +- .../jdbc/sql/dialect/impl/OracleDialect.java | 25 +- .../sql/dialect/impl/PostgresqlDialect.java | 25 +- .../jdbc/util/SimpleDatasourceManager.java | 2 +- io.sc.platform.lcdp.frontend/package.json | 105 ++-- .../jpa/converter/SettingStringConverter.java | 6 +- .../jpa/converter/ThemeStringConverter.java | 6 +- .../package.json | 105 ++-- .../LicensePublicAndPrivateKeyGenerator.java | 2 +- .../impl/LicenseKeyGeneratorServiceImpl.java | 6 +- .../monitor/service/support/Disk.java | 2 - .../platform/monitor/service/support/Jvm.java | 2 +- .../platform/monitor/service/support/Os.java | 3 +- io.sc.platform.mvc.frontend/package.json | 105 ++-- .../platform/mvc/plugins/PluginManager.java | 4 +- .../mvc/plugins/item/FrontEndRoute.java | 50 +- .../mvc/service/impl/FrontEndServiceImpl.java | 3 +- .../impl/FrontendExportServiceImpl.java | 8 +- .../orm/converter/MapStringConverter.java | 6 +- .../io/sc/platform/orm/entity/DateRange.java | 2 +- .../orm/service/support/CriteriaBuilder.java | 2 - .../service/support/EmailDesensitizer.java | 1 - .../service/support/MobileDesensitizer.java | 1 - .../service/support/UserNameDesensitizer.java | 1 - .../service/support/criteria/Criteria.java | 4 +- .../support/criteria/impl/Between.java | 4 +- .../criteria/impl/BetweenInclusive.java | 4 +- .../support/criteria/impl/Contains.java | 4 +- .../support/criteria/impl/ContainsField.java | 1 - .../service/support/criteria/impl/Equals.java | 5 +- .../support/criteria/impl/GreaterThan.java | 5 +- .../support/criteria/impl/IContains.java | 4 +- .../support/criteria/impl/IEquals.java | 6 +- .../impl/ExecutorRegistryClientImpl.java | 4 +- .../client/thread/handler/GroovyHandler.java | 5 +- .../package.json | 105 ++-- .../client/impl/ExecutorClientImpl.java | 2 +- .../service/impl/DashboardServiceImpl.java | 4 +- .../server/thread/SchedulerThread.java | 7 +- .../JwtPublicAndPrivateKeyGenerator.java | 2 +- .../WebSecurityAutoConfiguration.java | 10 +- .../handler/PlatformAccessDeniedHandler.java | 3 - .../PlatformAuthenticationEntryPoint.java | 4 - .../PlatformAuthenticationSuccessHandler.java | 5 +- .../support/SecurityUserDeserializer.java | 4 +- .../platform/security/util/SecurityUtil.java | 9 +- .../nacos/installer/NacosInstallerItem.java | 4 +- io.sc.platform.system.frontend/package.json | 105 ++-- .../support/DatabaseMessageSource.java | 2 +- .../controller/LicenseWebController.java | 2 +- .../system/menu/mapper/MenuEntityMapper.java | 7 +- .../menu/service/impl/MenuServiceImpl.java | 5 +- .../support/MenuEntityTreeBuilder.java | 2 +- .../controller/LogViewerWebController.java | 2 +- .../LogLevelConfiguredLevelComparator.java | 2 +- .../service/impl/ParameterServiceImpl.java | 7 +- .../system/plugins/PluginManager.java | 2 +- io.sc.platform.util/build.gradle | 11 + .../gradle.properties | 0 .../java/io/sc/platform}/util/ByteUtil.java | 2 +- .../util/CascadeNumberGenerator.java | 2 +- .../java/io/sc/platform}/util/ClassUtil.java | 2 +- .../io/sc/platform}/util/CollectionUtil.java | 74 +-- .../java/io/sc/platform}/util/DateUtil.java | 5 +- .../java/io/sc/platform}/util/EnumUtil.java | 12 +- .../java/io/sc/platform}/util/FileUtil.java | 15 +- .../java/io/sc/platform}/util/IniConfig.java | 3 +- .../io/sc/platform}/util/InputStreamUtil.java | 2 +- .../java/io/sc/platform}/util/JaxbUtil.java | 16 +- .../java/io/sc/platform}/util/LocaleUtil.java | 2 +- .../io/sc/platform}/util/ManifestUtil.java | 2 +- .../io/sc/platform}/util/NetworkUtil.java | 2 +- .../java/io/sc/platform/util/NumberUtil.java | 4 +- .../io/sc/platform/util/ObjectMapperUtil.java | 52 ++ .../java/io/sc/platform/util/ObjectUtil.java | 42 ++ .../java/io/sc/platform}/util/PathUtil.java | 9 +- .../util/PlaceHolderExpressionUtil.java | 130 +++++ .../util/PrettyPrintXMLStreamWriter.java | 2 +- .../java/io/sc/platform}/util/Properties.java | 2 +- .../java/io/sc/platform}/util/RSAUtil.java | 2 +- .../java/io/sc/platform}/util/ReaderUtil.java | 15 +- .../io/sc/platform}/util/ReflectUtil.java | 2 +- .../io/sc/platform}/util/ResourceUtil.java | 2 +- .../java/io/sc/platform}/util/Sorter.java | 2 +- .../java/io/sc/platform}/util/StringUtil.java | 252 ++++++++- .../io/sc/platform}/util/TimeMonitor.java | 2 +- .../io/sc/platform}/util/TreeBuilder.java | 2 +- .../io/sc/platform}/util/TypeConvertor.java | 2 +- .../java/io/sc/platform}/util/UrlUtil.java | 10 +- .../java/io/sc/platform}/util/WriterUtil.java | 29 +- .../util/support/InputStreamSource.java | 8 + .../util/support/KeyGeneratorFunction.java | 6 + .../util/support}/ParameterChecker.java | 2 +- .../util/support/PlaceholderExpression.java | 71 +++ .../support/PlaceholderExpressionPart.java | 32 ++ .../util/support/ValueGeneratorFunction.java | 6 + io.sc.standard.frontend/package.json | 105 ++-- io.sc.standard/src/main/java/A.java | 181 ------ .../service/impl/CreditReportServiceImpl.java | 36 +- io.sc.website/package.json | 8 +- settings.gradle | 1 + 387 files changed, 4520 insertions(+), 3830 deletions(-) create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCodeGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnit4LibGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnit4ResourceGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnitGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ArgumentClassGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/CommonImportGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/DictionaryClassGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/FunctionGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/LibClassGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ModelGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/PackageGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ParameterGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ParameterMethodGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ResourceClassGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/functions.tpl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/import.tpl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/model.tpl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/package.tpl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/parameter.tpl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TABLE.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TABLE_2C.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TREE.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TREE_FUNCTION.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/EXECUTION_FLOW_FUNCTION.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/GROOVY_SCRIPT.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/MATH_FORMULA.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/OBJECT_PROPERTIES.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/OPTION_VALUE.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/PMML.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/SQL.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/TERNARY.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/arithmetic.tpl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/conditionRange.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/numberRange.ftl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/resource.tpl create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/JavaSourceCodeGenerator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteResult.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit4Lib.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit4Resource.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ReplaceMode.java delete mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/DataTypeConvertor.java delete mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/DateUtil.java delete mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/FileUtil.java delete mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/JacksonObjectMapper.java delete mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/ObjectUtil.java delete mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/PinyinUtil.java delete mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/Strings.java delete mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/TimeTracer.java create mode 100644 io.sc.engine.rule.frontend/src/views/shared/ImportDialog.vue create mode 100644 io.sc.engine.rule.frontend/src/views/shared/ParameterAndValueTypeManager.ts create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/controller/ParameterAndValueTypeWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/service/ParameterAndValueTypeService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/service/impl/ParameterAndValueTypeServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/service/support/ParameterAndValueType.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/executable/controller/ExecuteUnitWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/executable/service/ExecuteUnitService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/executable/service/impl/ExecuteUnitServiceImpl.java delete mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/util/CodeAndNameMapping.java create mode 100644 io.sc.platform.core.frontend/src/platform/utils/ExpressionTools.ts delete mode 100644 io.sc.platform.core/src/main/java/io/sc/platform/core/util/ObjectMapper4Json.java delete mode 100644 io.sc.platform.core/src/main/java/io/sc/platform/core/util/ObjectMapper4Xml.java delete mode 100644 io.sc.platform.core/src/main/java/io/sc/platform/core/util/ParameterChecker.java delete mode 100644 io.sc.platform.core/src/main/java/io/sc/platform/core/util/ServletContainerUtil.java delete mode 100644 io.sc.platform.core/src/main/java/io/sc/platform/core/util/support/MapObjectKeyConvertor.java delete mode 100644 io.sc.platform.core/src/main/java/io/sc/platform/core/util/support/MapObjectKeyValueConvertor.java delete mode 100644 io.sc.platform.jdbc.liquibase/src/main/java/io/sc/platform/jdbc/A.java create mode 100644 io.sc.platform.util/build.gradle rename io.sc.platform.core/src/main/java/io/sc/platform/core/util/NumberUtil.java => io.sc.platform.util/gradle.properties (100%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/ByteUtil.java (98%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/CascadeNumberGenerator.java (97%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/ClassUtil.java (99%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/CollectionUtil.java (73%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/DateUtil.java (98%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/EnumUtil.java (94%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/FileUtil.java (99%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/IniConfig.java (96%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/InputStreamUtil.java (93%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/JaxbUtil.java (89%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/LocaleUtil.java (97%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/ManifestUtil.java (96%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/NetworkUtil.java (97%) rename io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/NumberFormater.java => io.sc.platform.util/src/main/java/io/sc/platform/util/NumberUtil.java (98%) create mode 100644 io.sc.platform.util/src/main/java/io/sc/platform/util/ObjectMapperUtil.java create mode 100644 io.sc.platform.util/src/main/java/io/sc/platform/util/ObjectUtil.java rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/PathUtil.java (56%) create mode 100644 io.sc.platform.util/src/main/java/io/sc/platform/util/PlaceHolderExpressionUtil.java rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/PrettyPrintXMLStreamWriter.java (99%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/Properties.java (96%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/RSAUtil.java (99%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/ReaderUtil.java (82%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/ReflectUtil.java (99%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/ResourceUtil.java (96%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/Sorter.java (92%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/StringUtil.java (83%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/TimeMonitor.java (98%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/TreeBuilder.java (98%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/TypeConvertor.java (96%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/UrlUtil.java (78%) rename {io.sc.platform.core/src/main/java/io/sc/platform/core => io.sc.platform.util/src/main/java/io/sc/platform}/util/WriterUtil.java (87%) create mode 100644 io.sc.platform.util/src/main/java/io/sc/platform/util/support/InputStreamSource.java create mode 100644 io.sc.platform.util/src/main/java/io/sc/platform/util/support/KeyGeneratorFunction.java rename {io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util => io.sc.platform.util/src/main/java/io/sc/platform/util/support}/ParameterChecker.java (98%) create mode 100644 io.sc.platform.util/src/main/java/io/sc/platform/util/support/PlaceholderExpression.java create mode 100644 io.sc.platform.util/src/main/java/io/sc/platform/util/support/PlaceholderExpressionPart.java create mode 100644 io.sc.platform.util/src/main/java/io/sc/platform/util/support/ValueGeneratorFunction.java delete mode 100644 io.sc.standard/src/main/java/A.java diff --git a/erm.frontend/package.json b/erm.frontend/package.json index a178a8fa..1610b50a 100644 --- a/erm.frontend/package.json +++ b/erm.frontend/package.json @@ -23,19 +23,19 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.25.2", - "@babel/plugin-transform-class-properties": "7.25.4", - "@babel/plugin-transform-object-rest-spread": "7.24.7", - "@babel/preset-env": "7.25.4", - "@babel/preset-typescript": "7.24.7", - "@quasar/app-webpack": "4.0.0-beta.23", + "@babel/core": "7.26.0", + "@babel/plugin-transform-class-properties": "7.25.9", + "@babel/plugin-transform-object-rest-spread": "7.25.9", + "@babel/preset-env": "7.26.0", + "@babel/preset-typescript": "7.26.0", + "@quasar/app-webpack": "4.0.0-rc.4", "@quasar/cli": "2.4.1", "@types/mockjs": "1.0.10", - "@types/node": "22.7.4", - "@typescript-eslint/eslint-plugin": "8.7.0", - "@typescript-eslint/parser": "8.7.0", + "@types/node": "22.10.0", + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", "@vue/babel-plugin-jsx": "1.2.5", - "@vue/compiler-sfc": "3.5.10", + "@vue/compiler-sfc": "3.5.13", "@vuepress/bundler-webpack": "2.0.0-rc.15", "@vuepress/theme-default": "2.0.0-rc.49", "@webpack-cli/serve": "2.0.5", @@ -46,61 +46,61 @@ "copy-webpack-plugin": "12.0.2", "cross-env": "7.0.3", "css-loader": "7.1.2", - "eslint": "8.57.1", + "eslint": "9.15.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-vue": "9.28.0", + "eslint-plugin-vue": "9.31.0", "eslint-webpack-plugin": "4.2.0", - "html-webpack-plugin": "5.6.0", + "html-webpack-plugin": "5.6.3", "json5": "2.2.3", - "mini-css-extract-plugin": "2.9.1", + "mini-css-extract-plugin": "2.9.2", "nodemon": "3.1.7", - "postcss": "8.4.47", + "postcss": "8.4.49", "postcss-import": "16.1.0", "postcss-loader": "8.1.1", - "postcss-preset-env": "10.0.5", - "prettier": "3.3.3", - "sass": "1.79.4", - "sass-loader": "16.0.2", - "tailwindcss": "3.4.13", + "postcss-preset-env": "10.1.1", + "prettier": "3.4.1", + "sass": "1.81.0", + "sass-loader": "16.0.3", + "tailwindcss": "3.4.15", "typescript": "5.5.4", "vue-loader": "17.4.2", "vuepress": "2.0.0-rc.15", - "webpack": "5.95.0", + "webpack": "5.96.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.1.0", "webpack-merge": "6.0.1" }, "dependencies": { - "@codemirror/autocomplete": "6.18.1", - "@codemirror/commands": "6.6.2", + "@codemirror/autocomplete": "6.18.3", + "@codemirror/commands": "6.7.1", "@codemirror/lang-html": "6.4.9", "@codemirror/lang-java": "6.0.1", "@codemirror/lang-javascript": "6.2.2", "@codemirror/lang-json": "6.0.1", - "@codemirror/lang-sql": "6.7.1", + "@codemirror/lang-sql": "6.8.0", "@codemirror/lang-xml": "6.1.0", - "@codemirror/language": "6.10.3", - "@codemirror/search": "6.5.6", + "@codemirror/language": "6.10.4", + "@codemirror/search": "6.5.8", "@codemirror/state": "6.4.1", - "@codemirror/view": "6.34.1", - "@maxgraph/core": "0.13.0", - "@quasar/extras": "1.16.12", - "@univerjs/core": "0.2.15", - "@univerjs/design": "0.2.15", - "@univerjs/docs": "0.2.15", - "@univerjs/docs-ui": "0.2.15", - "@univerjs/engine-formula": "0.2.15", - "@univerjs/engine-render": "0.2.15", - "@univerjs/facade": "0.2.15", - "@univerjs/sheets": "0.2.15", - "@univerjs/sheets-formula": "0.2.15", - "@univerjs/sheets-ui": "0.2.15", - "@univerjs/thread-comment": "0.2.15", - "@univerjs/ui": "0.2.15", - "@vueuse/core": "11.1.0", - "axios": "1.7.7", + "@codemirror/view": "6.35.0", + "@maxgraph/core": "0.13.1", + "@quasar/extras": "1.16.13", + "@univerjs/core": "0.5.0", + "@univerjs/design": "0.5.0", + "@univerjs/docs": "0.5.0", + "@univerjs/docs-ui": "0.5.0", + "@univerjs/engine-formula": "0.5.0", + "@univerjs/engine-render": "0.5.0", + "@univerjs/facade": "0.5.0", + "@univerjs/sheets": "0.5.0", + "@univerjs/sheets-formula": "0.5.0", + "@univerjs/sheets-ui": "0.5.0", + "@univerjs/thread-comment": "0.5.0", + "@univerjs/ui": "0.5.0", + "@vueuse/core": "11.3.0", + "axios": "1.7.8", "codemirror": "6.0.1", "dayjs": "1.11.13", "echarts": "5.5.1", @@ -108,17 +108,18 @@ "file-saver": "2.0.5", "luckyexcel": "1.0.1", "mockjs": "1.1.0", - "node-sql-parser": "5.3.2", - "pinia": "2.2.2", + "node-sql-parser": "5.3.4", + "pinia": "2.2.6", "pinia-undo": "0.2.4", - "platform-core": "8.1.454", - "quasar": "2.17.0", - "svg-path-commander": "2.0.10", + "platform-core": "8.2.0", + "quasar": "2.17.4", + "sort-array": "5.0.0", + "svg-path-commander": "2.1.5", "tailwindcss": "3.4.10", - "vue": "3.5.10", - "vue-dompurify-html": "5.1.0", - "vue-i18n": "10.0.3", - "vue-router": "4.4.5", + "vue": "3.5.13", + "vue-dompurify-html": "5.2.0", + "vue-i18n": "10.0.4", + "vue-router": "4.5.0", "xml-formatter": "3.6.3" } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 601630ea..ec052acf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -34,11 +34,11 @@ application_version=1.0.0 ########################################################### # platform -########################################################### +######################################gra##################### platform_group=io.sc platform_version=8.1.50 platform_plugin_version=8.1.50 -platform_core_frontend_version=8.1.454 +platform_core_frontend_version=8.2.0 ########################################################### # dependencies version @@ -51,6 +51,7 @@ commons_io_version=2.16.1 commons_text_version=1.12.0 cxf_version=3.2.7 dm_hibernate_version=8.1.2.192 +enjoy_version=5.2.2 flowable_version=6.8.0 guava_version=31.1-jre ipaddress_version=5.4.0 diff --git a/io.sc.engine.mv.frontend/package.json b/io.sc.engine.mv.frontend/package.json index abdfeb84..b6d7fbec 100644 --- a/io.sc.engine.mv.frontend/package.json +++ b/io.sc.engine.mv.frontend/package.json @@ -23,19 +23,19 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.25.2", - "@babel/plugin-transform-class-properties": "7.25.4", - "@babel/plugin-transform-object-rest-spread": "7.24.7", - "@babel/preset-env": "7.25.4", - "@babel/preset-typescript": "7.24.7", - "@quasar/app-webpack": "4.0.0-beta.23", + "@babel/core": "7.26.0", + "@babel/plugin-transform-class-properties": "7.25.9", + "@babel/plugin-transform-object-rest-spread": "7.25.9", + "@babel/preset-env": "7.26.0", + "@babel/preset-typescript": "7.26.0", + "@quasar/app-webpack": "4.0.0-rc.4", "@quasar/cli": "2.4.1", "@types/mockjs": "1.0.10", - "@types/node": "22.7.4", - "@typescript-eslint/eslint-plugin": "8.7.0", - "@typescript-eslint/parser": "8.7.0", + "@types/node": "22.10.0", + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", "@vue/babel-plugin-jsx": "1.2.5", - "@vue/compiler-sfc": "3.5.10", + "@vue/compiler-sfc": "3.5.13", "@vuepress/bundler-webpack": "2.0.0-rc.15", "@vuepress/theme-default": "2.0.0-rc.49", "@webpack-cli/serve": "2.0.5", @@ -46,61 +46,61 @@ "copy-webpack-plugin": "12.0.2", "cross-env": "7.0.3", "css-loader": "7.1.2", - "eslint": "8.57.1", + "eslint": "9.15.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-vue": "9.28.0", + "eslint-plugin-vue": "9.31.0", "eslint-webpack-plugin": "4.2.0", - "html-webpack-plugin": "5.6.0", + "html-webpack-plugin": "5.6.3", "json5": "2.2.3", - "mini-css-extract-plugin": "2.9.1", + "mini-css-extract-plugin": "2.9.2", "nodemon": "3.1.7", - "postcss": "8.4.47", + "postcss": "8.4.49", "postcss-import": "16.1.0", "postcss-loader": "8.1.1", - "postcss-preset-env": "10.0.5", - "prettier": "3.3.3", - "sass": "1.79.4", - "sass-loader": "16.0.2", - "tailwindcss": "3.4.13", + "postcss-preset-env": "10.1.1", + "prettier": "3.4.1", + "sass": "1.81.0", + "sass-loader": "16.0.3", + "tailwindcss": "3.4.15", "typescript": "5.5.4", "vue-loader": "17.4.2", "vuepress": "2.0.0-rc.15", - "webpack": "5.95.0", + "webpack": "5.96.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.1.0", "webpack-merge": "6.0.1" }, "dependencies": { - "@codemirror/autocomplete": "6.18.1", - "@codemirror/commands": "6.6.2", + "@codemirror/autocomplete": "6.18.3", + "@codemirror/commands": "6.7.1", "@codemirror/lang-html": "6.4.9", "@codemirror/lang-java": "6.0.1", "@codemirror/lang-javascript": "6.2.2", "@codemirror/lang-json": "6.0.1", - "@codemirror/lang-sql": "6.7.1", + "@codemirror/lang-sql": "6.8.0", "@codemirror/lang-xml": "6.1.0", - "@codemirror/language": "6.10.3", - "@codemirror/search": "6.5.6", + "@codemirror/language": "6.10.4", + "@codemirror/search": "6.5.8", "@codemirror/state": "6.4.1", - "@codemirror/view": "6.34.1", - "@maxgraph/core": "0.13.0", - "@quasar/extras": "1.16.12", - "@univerjs/core": "0.2.15", - "@univerjs/design": "0.2.15", - "@univerjs/docs": "0.2.15", - "@univerjs/docs-ui": "0.2.15", - "@univerjs/engine-formula": "0.2.15", - "@univerjs/engine-render": "0.2.15", - "@univerjs/facade": "0.2.15", - "@univerjs/sheets": "0.2.15", - "@univerjs/sheets-formula": "0.2.15", - "@univerjs/sheets-ui": "0.2.15", - "@univerjs/thread-comment": "0.2.15", - "@univerjs/ui": "0.2.15", - "@vueuse/core": "11.1.0", - "axios": "1.7.7", + "@codemirror/view": "6.35.0", + "@maxgraph/core": "0.13.1", + "@quasar/extras": "1.16.13", + "@univerjs/core": "0.5.0", + "@univerjs/design": "0.5.0", + "@univerjs/docs": "0.5.0", + "@univerjs/docs-ui": "0.5.0", + "@univerjs/engine-formula": "0.5.0", + "@univerjs/engine-render": "0.5.0", + "@univerjs/facade": "0.5.0", + "@univerjs/sheets": "0.5.0", + "@univerjs/sheets-formula": "0.5.0", + "@univerjs/sheets-ui": "0.5.0", + "@univerjs/thread-comment": "0.5.0", + "@univerjs/ui": "0.5.0", + "@vueuse/core": "11.3.0", + "axios": "1.7.8", "codemirror": "6.0.1", "dayjs": "1.11.13", "echarts": "5.5.1", @@ -108,17 +108,18 @@ "file-saver": "2.0.5", "luckyexcel": "1.0.1", "mockjs": "1.1.0", - "node-sql-parser": "5.3.2", - "pinia": "2.2.2", + "node-sql-parser": "5.3.4", + "pinia": "2.2.6", "pinia-undo": "0.2.4", - "platform-core": "8.1.454", - "quasar": "2.17.0", - "svg-path-commander": "2.0.10", + "platform-core": "8.2.0", + "quasar": "2.17.4", + "sort-array": "5.0.0", + "svg-path-commander": "2.1.5", "tailwindcss": "3.4.10", - "vue": "3.5.10", - "vue-dompurify-html": "5.1.0", - "vue-i18n": "10.0.3", - "vue-router": "4.4.5", + "vue": "3.5.13", + "vue-dompurify-html": "5.2.0", + "vue-i18n": "10.0.4", + "vue-router": "4.5.0", "xml-formatter": "3.6.3" } } \ No newline at end of file diff --git a/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/CardGongXinImporterServiceImpl.java b/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/CardGongXinImporterServiceImpl.java index 783e1276..8bfc2e3c 100644 --- a/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/CardGongXinImporterServiceImpl.java +++ b/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/CardGongXinImporterServiceImpl.java @@ -3,24 +3,18 @@ package io.sc.engine.mv.sample.service.impl; import com.opencsv.CSVReader; import com.opencsv.CSVReaderBuilder; import io.sc.engine.mv.sample.service.CardGongXinImporterService; -import io.sc.platform.core.util.DateUtil; -import io.sc.platform.core.util.StringUtil; import io.sc.platform.jdbc.sql.builder.InsertIntoSqlBuilder; import io.sc.platform.jdbc.util.SqlBatcher; +import io.sc.platform.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.Resource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.temporal.TemporalField; import java.util.Date; import java.util.Iterator; import java.util.UUID; diff --git a/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/CardJingyingImporterServiceImpl.java b/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/CardJingyingImporterServiceImpl.java index 04c1302d..44db1a46 100644 --- a/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/CardJingyingImporterServiceImpl.java +++ b/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/CardJingyingImporterServiceImpl.java @@ -2,11 +2,10 @@ package io.sc.engine.mv.sample.service.impl; import com.opencsv.CSVReader; import com.opencsv.CSVReaderBuilder; -import io.sc.engine.mv.sample.service.CardGongXinImporterService; import io.sc.engine.mv.sample.service.CardJingyingImporterService; -import io.sc.platform.core.util.DateUtil; import io.sc.platform.jdbc.sql.builder.InsertIntoSqlBuilder; import io.sc.platform.jdbc.util.SqlBatcher; +import io.sc.platform.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.Resource; diff --git a/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/DaiKuanImporterServiceImpl.java b/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/DaiKuanImporterServiceImpl.java index 65997649..7f3da204 100644 --- a/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/DaiKuanImporterServiceImpl.java +++ b/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/DaiKuanImporterServiceImpl.java @@ -2,11 +2,10 @@ package io.sc.engine.mv.sample.service.impl; import com.opencsv.CSVReader; import com.opencsv.CSVReaderBuilder; -import io.sc.engine.mv.sample.service.CardGongXinImporterService; import io.sc.engine.mv.sample.service.DaiKuanImporterService; -import io.sc.platform.core.util.DateUtil; import io.sc.platform.jdbc.sql.builder.InsertIntoSqlBuilder; import io.sc.platform.jdbc.util.SqlBatcher; +import io.sc.platform.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.Resource; diff --git a/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/TestCaseImporterServiceImpl.java b/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/TestCaseImporterServiceImpl.java index d138bbe1..6d27287a 100644 --- a/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/TestCaseImporterServiceImpl.java +++ b/io.sc.engine.mv.sample/src/main/java/io/sc/engine/mv/sample/service/impl/TestCaseImporterServiceImpl.java @@ -3,10 +3,9 @@ package io.sc.engine.mv.sample.service.impl; import com.opencsv.CSVReader; import com.opencsv.CSVReaderBuilder; import io.sc.engine.mv.sample.service.TestCaseImporterService; -import io.sc.platform.core.util.DateUtil; -import io.sc.platform.core.util.StringUtil; import io.sc.platform.jdbc.sql.builder.InsertIntoSqlBuilder; import io.sc.platform.jdbc.util.SqlBatcher; +import io.sc.platform.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.Resource; diff --git a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/configure/service/impl/CfgDataExtractorServiceImpl.java b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/configure/service/impl/CfgDataExtractorServiceImpl.java index 5ae81cd2..1629cfcb 100644 --- a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/configure/service/impl/CfgDataExtractorServiceImpl.java +++ b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/configure/service/impl/CfgDataExtractorServiceImpl.java @@ -1,13 +1,13 @@ package io.sc.engine.mv.configure.service.impl; -import io.sc.engine.mv.validator.extractor.DataExtractorManager; import io.sc.engine.mv.configure.jpa.entity.CfgDataExtractor; import io.sc.engine.mv.configure.jpa.repository.CfgDataExtractorRepository; import io.sc.engine.mv.configure.service.CfgDataExtractorService; +import io.sc.engine.mv.validator.extractor.DataExtractorManager; import io.sc.platform.core.support.ProgressInfo; -import io.sc.platform.core.util.FileUtil; import io.sc.platform.orm.api.exception.UpdateNullNewObjectException; import io.sc.platform.orm.service.impl.DaoServiceImpl; +import io.sc.platform.util.FileUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; diff --git a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/RuntimeContext.java b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/RuntimeContext.java index 8cedb555..a844acdc 100644 --- a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/RuntimeContext.java +++ b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/RuntimeContext.java @@ -2,7 +2,7 @@ package io.sc.engine.mv.validator; import io.sc.engine.mv.enums.ExecuteMode; import io.sc.platform.core.support.KeyValue; -import io.sc.platform.core.util.DateUtil; +import io.sc.platform.util.DateUtil; import java.util.ArrayList; import java.util.Date; diff --git a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/CoeBinomialExecutor.java b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/CoeBinomialExecutor.java index 5eb5889a..905d2d7f 100644 --- a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/CoeBinomialExecutor.java +++ b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/CoeBinomialExecutor.java @@ -1,16 +1,12 @@ package io.sc.engine.mv.validator.executor.impl; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -import io.sc.engine.mv.enums.CoeResult; -import io.sc.engine.mv.validator.RuntimeContext; import io.sc.engine.mv.configure.jpa.entity.CfgBinomial; import io.sc.engine.mv.configure.jpa.repository.CfgBinomialRepository; +import io.sc.engine.mv.enums.CoeResult; +import io.sc.engine.mv.validator.RuntimeContext; import io.sc.engine.mv.validator.executor.AbstractExecutor; import io.sc.platform.core.support.ProgressInfo; -import io.sc.platform.core.util.DateUtil; +import io.sc.platform.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.PreparedStatementSetter; @@ -18,6 +14,10 @@ import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.RowCallbackHandler; import org.springframework.stereotype.Component; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + @Component public class CoeBinomialExecutor extends AbstractExecutor { private static final int ORDER =3000; diff --git a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/CoeChiSquareExecutor.java b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/CoeChiSquareExecutor.java index 2ad10dae..1b43a898 100644 --- a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/CoeChiSquareExecutor.java +++ b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/CoeChiSquareExecutor.java @@ -1,16 +1,16 @@ package io.sc.engine.mv.validator.executor.impl; -import io.sc.engine.mv.enums.CoeResult; -import io.sc.engine.mv.validator.RuntimeContext; -import io.sc.engine.mv.validator.executor.AbstractExecutor; -import io.sc.engine.mv.validator.executor.support.ExecutorUtil; import io.sc.engine.mv.configure.jpa.entity.CfgChiSquare; import io.sc.engine.mv.configure.jpa.entity.CfgScale; import io.sc.engine.mv.configure.jpa.repository.CfgChiSquareRepository; import io.sc.engine.mv.configure.jpa.repository.CfgScaleRepository; +import io.sc.engine.mv.enums.CoeResult; +import io.sc.engine.mv.validator.RuntimeContext; +import io.sc.engine.mv.validator.executor.AbstractExecutor; +import io.sc.engine.mv.validator.executor.support.ExecutorUtil; import io.sc.platform.core.support.ProgressInfo; -import io.sc.platform.core.util.DateUtil; import io.sc.platform.jdbc.util.SqlBatcher; +import io.sc.platform.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.PreparedStatementSetter; diff --git a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ResultExecutor.java b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ResultExecutor.java index 24164cf3..88954b6a 100644 --- a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ResultExecutor.java +++ b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ResultExecutor.java @@ -4,7 +4,7 @@ import io.sc.engine.mv.validator.RuntimeContext; import io.sc.engine.mv.validator.executor.AbstractExecutor; import io.sc.platform.core.support.KeyValue; import io.sc.platform.core.support.ProgressInfo; -import io.sc.platform.core.util.DateUtil; +import io.sc.platform.util.DateUtil; import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.stereotype.Component; diff --git a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/SampleExecutor.java b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/SampleExecutor.java index ef2fe698..3dab69b9 100644 --- a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/SampleExecutor.java +++ b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/SampleExecutor.java @@ -1,22 +1,22 @@ package io.sc.engine.mv.validator.executor.impl; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Date; - import io.sc.engine.mv.validator.RuntimeContext; import io.sc.engine.mv.validator.executor.AbstractExecutor; import io.sc.platform.core.support.ProgressInfo; -import io.sc.platform.core.util.DateUtil; import io.sc.platform.jdbc.sql.dialect.DateTimePart; import io.sc.platform.jdbc.sql.dialect.Dialect; +import io.sc.platform.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.stereotype.Component; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Date; + /** * 模型验证样本执行器 * @author wangshaoping diff --git a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScCapExecutor.java b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScCapExecutor.java index e0f9e22b..b21e9f9c 100644 --- a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScCapExecutor.java +++ b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScCapExecutor.java @@ -1,21 +1,15 @@ package io.sc.engine.mv.validator.executor.impl; -import java.math.BigDecimal; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Map; - +import io.sc.engine.mv.configure.jpa.entity.CfgCutOffPoint; import io.sc.engine.mv.validator.RuntimeContext; import io.sc.engine.mv.validator.executor.AbstractExecutor; import io.sc.engine.mv.validator.executor.support.CutOffPointFinder; import io.sc.engine.mv.validator.executor.support.ExecutorUtil; import io.sc.engine.mv.validator.executor.support.ScVariable; -import io.sc.engine.mv.configure.jpa.entity.CfgCutOffPoint; import io.sc.platform.core.support.NumberIterator; import io.sc.platform.core.support.ProgressInfo; -import io.sc.platform.core.util.DateUtil; import io.sc.platform.jdbc.util.SqlBatcher; +import io.sc.platform.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.PreparedStatementSetter; @@ -23,6 +17,12 @@ import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.RowCallbackHandler; import org.springframework.stereotype.Component; +import java.math.BigDecimal; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Map; + /** * 模型区分能力 CAP(总体) 验证执行器 * @author wangshaoping diff --git a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScKsExecutor.java b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScKsExecutor.java index 06335d57..f5d287dd 100644 --- a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScKsExecutor.java +++ b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScKsExecutor.java @@ -1,26 +1,26 @@ package io.sc.engine.mv.validator.executor.impl; -import java.math.BigDecimal; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Map; - +import io.sc.engine.mv.configure.jpa.entity.CfgCutOffPoint; import io.sc.engine.mv.validator.RuntimeContext; import io.sc.engine.mv.validator.executor.AbstractExecutor; import io.sc.engine.mv.validator.executor.support.CutOffPointFinder; import io.sc.engine.mv.validator.executor.support.ExecutorUtil; import io.sc.engine.mv.validator.executor.support.ScVariable; -import io.sc.engine.mv.configure.jpa.entity.CfgCutOffPoint; import io.sc.platform.core.support.NumberIterator; import io.sc.platform.core.support.ProgressInfo; -import io.sc.platform.core.util.DateUtil; import io.sc.platform.jdbc.util.SqlBatcher; +import io.sc.platform.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.jdbc.core.RowCallbackHandler; import org.springframework.stereotype.Component; +import java.math.BigDecimal; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Map; + /** * 模型区分能力 KS(总体) 验证执行器 * @author wangshaoping diff --git a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScRocExecutor.java b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScRocExecutor.java index 14e625e2..09375934 100644 --- a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScRocExecutor.java +++ b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScRocExecutor.java @@ -1,21 +1,15 @@ package io.sc.engine.mv.validator.executor.impl; -import java.math.BigDecimal; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Map; - +import io.sc.engine.mv.configure.jpa.entity.CfgCutOffPoint; import io.sc.engine.mv.validator.RuntimeContext; import io.sc.engine.mv.validator.executor.AbstractExecutor; import io.sc.engine.mv.validator.executor.support.CutOffPointFinder; import io.sc.engine.mv.validator.executor.support.ExecutorUtil; import io.sc.engine.mv.validator.executor.support.ScVariable; -import io.sc.engine.mv.configure.jpa.entity.CfgCutOffPoint; import io.sc.platform.core.support.NumberIterator; import io.sc.platform.core.support.ProgressInfo; -import io.sc.platform.core.util.DateUtil; import io.sc.platform.jdbc.util.SqlBatcher; +import io.sc.platform.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.PreparedStatementSetter; @@ -23,6 +17,12 @@ import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.RowCallbackHandler; import org.springframework.stereotype.Component; +import java.math.BigDecimal; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Map; + /** * 模型区分能力 ROC 验证执行器 * @author wangshaoping diff --git a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/StPsiExecutor.java b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/StPsiExecutor.java index e82e8520..7eb74295 100644 --- a/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/StPsiExecutor.java +++ b/io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/StPsiExecutor.java @@ -1,19 +1,19 @@ package io.sc.engine.mv.validator.executor.impl; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - import io.sc.engine.mv.validator.RuntimeContext; import io.sc.engine.mv.validator.executor.AbstractExecutor; import io.sc.platform.core.support.ProgressInfo; -import io.sc.platform.core.util.DateUtil; +import io.sc.platform.util.DateUtil; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.RowCallbackHandler; import org.springframework.stereotype.Component; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + /** * 模型稳定性 PSI 验证执行器 * @author wangshaoping diff --git a/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteExecutor.java b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteExecutor.java index 48faa59b..c04ff727 100644 --- a/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteExecutor.java +++ b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteExecutor.java @@ -1,12 +1,12 @@ package io.sc.engine.rule.client.remote; -import java.util.Map; - import io.sc.engine.rule.client.Executor; import io.sc.engine.rule.client.Loader; import io.sc.engine.rule.core.code.impl.support.ResourceResult; import io.sc.engine.rule.core.util.HttpRequestUtil; -import io.sc.engine.rule.core.util.JacksonObjectMapper; +import io.sc.platform.util.ObjectMapperUtil; + +import java.util.Map; /** * 远程执行客户端 @@ -33,23 +33,23 @@ public class RemoteExecutor implements Executor{ @Override public ResourceResult executeById(String resourceId,String json) throws Exception { String result =HttpRequestUtil.post(getApiUrlById(resourceId), "",json); - return JacksonObjectMapper.getDefaultObjectMapper().readValue(result, ResourceResult.class); + return ObjectMapperUtil.json().readValue(result, ResourceResult.class); } @Override public ResourceResult executeById(String resourceId, String subModelCode, String json) throws Exception { String result =HttpRequestUtil.post(getApiUrlById(resourceId,subModelCode), "",json); - return JacksonObjectMapper.getDefaultObjectMapper().readValue(result, ResourceResult.class); + return ObjectMapperUtil.json().readValue(result, ResourceResult.class); } @Override public ResourceResult executeById(String resourceId, Map map) throws Exception { - return executeById(resourceId,JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(map)); + return executeById(resourceId,ObjectMapperUtil.json().writeValueAsString(map)); } @Override public ResourceResult executeById(String resourceId, String subModelCode, Map map) throws Exception { - return executeById(resourceId,subModelCode,JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(map)); + return executeById(resourceId,subModelCode,ObjectMapperUtil.json().writeValueAsString(map)); } @Override @@ -60,17 +60,17 @@ public class RemoteExecutor implements Executor{ @Override public ResourceResult executeByCode(String resourceCode, Integer version, String subModelCode, String json) throws Exception { String result =HttpRequestUtil.post(getApiUrlByCode(resourceCode,version,subModelCode), "",json); - return JacksonObjectMapper.getDefaultObjectMapper().readValue(result, ResourceResult.class); + return ObjectMapperUtil.json().readValue(result, ResourceResult.class); } @Override public ResourceResult executeByCode(String resourceCode, Integer version, Map map) throws Exception { - return executeByCode(resourceCode,version,JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(map)); + return executeByCode(resourceCode,version,ObjectMapperUtil.json().writeValueAsString(map)); } @Override public ResourceResult executeByCode(String resourceCode, Integer version, String subModelCode, Map map) throws Exception { - return executeByCode(resourceCode,version,subModelCode,JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(map)); + return executeByCode(resourceCode,version,subModelCode,ObjectMapperUtil.json().writeValueAsString(map)); } @Override diff --git a/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteLoader.java b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteLoader.java index 98e21ba7..cadf4673 100644 --- a/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteLoader.java +++ b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteLoader.java @@ -1,19 +1,17 @@ package io.sc.engine.rule.client.remote; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import io.sc.platform.core.response.ResponseWrapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.client.Loader; import io.sc.engine.rule.core.classes.ResourceAbstract; import io.sc.engine.rule.core.code.impl.support.ResourceWrapper; import io.sc.engine.rule.core.util.HttpRequestUtil; -import io.sc.engine.rule.core.util.JacksonObjectMapper; +import io.sc.platform.util.ObjectMapperUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import com.fasterxml.jackson.core.type.TypeReference; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; public class RemoteLoader implements Loader{ private static final Logger log =LoggerFactory.getLogger(RemoteLoader.class); @@ -34,7 +32,7 @@ public class RemoteLoader implements Loader{ public ResourceWrapper getResourceById(String resourceId) throws Exception { if(resourceId!=null && !"".equals(resourceId.trim())) { String json =HttpRequestUtil.get(getApiUrlById(resourceId)); - return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, ResourceWrapper.class); + return ObjectMapperUtil.json().readValue(json, ResourceWrapper.class); } return null; } @@ -43,8 +41,8 @@ public class RemoteLoader implements Loader{ if(version==null) {//未指定版本时,不缓存,加载最新的 String json =HttpRequestUtil.get(getApiUrlByCode(resourceCode,version)); if(log.isDebugEnabled()) {log.debug("remote resource json:\n{}",json);} - ResourceWrapper wrapper =JacksonObjectMapper.getDefaultObjectMapper().readValue(json, ResourceWrapper.class); - if(log.isDebugEnabled()) {log.debug("resource json:\n{}",JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(wrapper));} + ResourceWrapper wrapper =ObjectMapperUtil.json().readValue(json, ResourceWrapper.class); + if(log.isDebugEnabled()) {log.debug("resource json:\n{}",ObjectMapperUtil.json().writeValueAsString(wrapper));} return wrapper; }else {//指定版本时,缓存 if(resourceCode!=null && !"".equals(resourceCode.trim())) { @@ -54,7 +52,7 @@ public class RemoteLoader implements Loader{ return wrapper; }else { String json =HttpRequestUtil.get(getApiUrlByCode(resourceCode,version)); - wrapper =JacksonObjectMapper.getDefaultObjectMapper().readValue(json, ResourceWrapper.class); + wrapper =ObjectMapperUtil.json().readValue(json, ResourceWrapper.class); if(wrapper!=null) { key =getCacheKey(resourceCode,version); if(key!=null && !"".equals(key.trim())) { @@ -72,7 +70,7 @@ public class RemoteLoader implements Loader{ public List getAllReleasableResourceAbstract() throws Exception { String json =HttpRequestUtil.get(getAllReleasableResourceAbstractApiUrl()); if(json!=null && !"".equals(json)) { - return JacksonObjectMapper.getDefaultObjectMapper().readValue(json,new TypeReference>(){}); + return ObjectMapperUtil.json().readValue(json,new TypeReference>(){}); } return null; } diff --git a/io.sc.engine.rule.client/src/test/java/io/sc/engine/rule/client/test/Test.java b/io.sc.engine.rule.client/src/test/java/io/sc/engine/rule/client/test/Test.java index 06998ed2..2db05749 100644 --- a/io.sc.engine.rule.client/src/test/java/io/sc/engine/rule/client/test/Test.java +++ b/io.sc.engine.rule.client/src/test/java/io/sc/engine/rule/client/test/Test.java @@ -7,7 +7,7 @@ import io.sc.engine.rule.client.enums.ExecutorMode; import io.sc.engine.rule.client.enums.LoaderMode; import io.sc.engine.rule.core.code.impl.support.ParameterResult; import io.sc.engine.rule.core.code.impl.support.ResourceResult; -import io.sc.engine.rule.core.util.TimeTracer; +import io.sc.platform.util.TimeMonitor; import java.util.HashMap; import java.util.List; @@ -20,7 +20,7 @@ public class Test { private static final Integer MODEL_VERSION =null; //需要执行的模型版本 private static final int COUNT =1; //需要执行的次数 - private static TimeTracer tracer =TimeTracer.getInstance("tracer"); //创建一个时间跟踪器,用于跟踪执行时间,在生产环境中不要这样做 + private static TimeMonitor tracer =new TimeMonitor(); //创建一个时间跟踪器,用于跟踪执行时间,在生产环境中不要这样做 public static void main(String[] args) throws Exception{ init(); @@ -52,15 +52,15 @@ public class Test { public static void testLocalExecutorRemoteLoader_map() throws Exception{ //从注册器中获取执行器 Executor executor =ExecutorFactory.getExecutor(EXECUTOR_NAME); - tracer.log("开始执行(采用 map 对象作为参数)===================================="); + tracer.info("开始执行(采用 map 对象作为参数)===================================="); for(int i=0;i data =prepareData(); //executor.getLoader().getResourceByCode(MODEL_CODE, MODEL_VERSION); executor.executeByCode(MODEL_CODE, MODEL_VERSION,data); } - tracer.log("执行完毕(采用 map 对象作为参数)"); - tracer.log("采用 map 对象作为输入参数将执行效率提高 20+ 倍!!!"); + tracer.info("执行完毕(采用 map 对象作为参数)"); + tracer.info("采用 map 对象作为输入参数将执行效率提高 20+ 倍!!!"); } diff --git a/io.sc.engine.rule.core/build.gradle b/io.sc.engine.rule.core/build.gradle index 7507849f..57b26216 100644 --- a/io.sc.engine.rule.core/build.gradle +++ b/io.sc.engine.rule.core/build.gradle @@ -1,5 +1,6 @@ dependencies { api( + project(":io.sc.platform.util"), project(":io.sc.platform.orm.api"), project(":io.sc.creditreport.core"), @@ -11,6 +12,7 @@ dependencies { "com.fasterxml.jackson.dataformat:jackson-dataformat-xml", "org.slf4j:slf4j-api", "org.freemarker:freemarker", + "com.jfinal:enjoy:${enjoy_version}", "org.codehaus.groovy:groovy", "org.codehaus.groovy:groovy-jsr223", diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/RuleResult.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/RuleResult.java index af83f9ec..cd696f95 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/RuleResult.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/RuleResult.java @@ -1,12 +1,11 @@ package io.sc.engine.rule.core.classes; +import com.fasterxml.jackson.core.JsonProcessingException; +import io.sc.platform.util.ObjectMapperUtil; + import java.util.ArrayList; import java.util.List; -import io.sc.engine.rule.core.util.JacksonObjectMapper; - -import com.fasterxml.jackson.core.JsonProcessingException; - /** * 规则结果值 * @author wangshaoping @@ -63,7 +62,7 @@ public class RuleResult { @Override public String toString() { try { - String result =JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(this); + String result = ObjectMapperUtil.json().writeValueAsString(this); return result; } catch (JsonProcessingException e) { return "RuleResult [triggered=" + triggered + ", level=" + level + ", rules=" + rules + "]"; diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/SingleRuleResult.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/SingleRuleResult.java index 29d33b9c..04321b70 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/SingleRuleResult.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/SingleRuleResult.java @@ -1,8 +1,7 @@ package io.sc.engine.rule.core.classes; -import io.sc.engine.rule.core.util.JacksonObjectMapper; - import com.fasterxml.jackson.core.JsonProcessingException; +import io.sc.platform.util.ObjectMapperUtil; /** * 单规则结果值 @@ -60,7 +59,7 @@ public class SingleRuleResult { @Override public String toString() { try { - String result =JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(this); + String result = ObjectMapperUtil.json().writeValueAsString(this); return result; } catch (JsonProcessingException e) { return "SingleRuleResult{" + diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCode.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCode.java index 80ea81e2..bfa81625 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCode.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCode.java @@ -1,5 +1,7 @@ package io.sc.engine.rule.core.code; +import com.fasterxml.jackson.annotation.JsonIgnore; + public class SourceCode { private String packageName; //包名 private String className; //类名 @@ -12,11 +14,13 @@ public class SourceCode { this.className =className; this.source =source; } - + + @JsonIgnore public String getQualifiedClassName() { return this.packageName + "." + this.className; } - + + @JsonIgnore public String getJavaFileName() { return this.className + ".java"; } diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCodeGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCodeGenerator.java new file mode 100644 index 00000000..a20d9404 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCodeGenerator.java @@ -0,0 +1,7 @@ +package io.sc.engine.rule.core.code; + +import io.sc.engine.rule.core.code.impl.support.ExecuteUnit; + +public interface SourceCodeGenerator { + public SourceCode generateSourceCode(ExecuteUnit executeUnit) throws Exception; +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnit4LibGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnit4LibGenerator.java new file mode 100644 index 00000000..7b0a3c1d --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnit4LibGenerator.java @@ -0,0 +1,26 @@ +package io.sc.engine.rule.core.code.generator; + +import io.sc.engine.rule.core.code.SourceCode; +import io.sc.engine.rule.core.code.impl.support.ExecuteUnit; +import io.sc.engine.rule.core.code.impl.support.ExecuteUnit4Lib; +import io.sc.engine.rule.core.code.impl.support.ExecuteUnit4Resource; + +public class ExecuteUnit4LibGenerator extends ExecuteUnitGenerator { + private ExecuteUnit4Lib executeUnit; + + public ExecuteUnit4LibGenerator(ExecuteUnit4Lib executeUnit) { + this.executeUnit =executeUnit; + } + + @Override + public String getClassName() { + return executeUnit.getLib().getCode() + "_V" + executeUnit.getLib().getVersion(); + } + + @Override + public String generate() throws Exception { + StringBuilder sb =new StringBuilder(); + + return sb.toString(); + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnit4ResourceGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnit4ResourceGenerator.java new file mode 100644 index 00000000..55581b2e --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnit4ResourceGenerator.java @@ -0,0 +1,59 @@ +package io.sc.engine.rule.core.code.generator; + +import com.jfinal.template.Engine; +import com.jfinal.template.Template; +import io.sc.engine.rule.core.code.impl.support.ExecuteUnit4Resource; +import io.sc.engine.rule.core.po.resource.ModelResource; +import io.sc.engine.rule.core.po.resource.Resource; +import io.sc.engine.rule.core.util.CodeReplacer; +import io.sc.engine.rule.core.util.ExpressionReplacer; + +import java.util.HashMap; +import java.util.Map; + +public class ExecuteUnit4ResourceGenerator extends ExecuteUnitGenerator { + private static final String template_location = "/io/sc/engine/rule/core/code/generator/template/resource.tpl"; + private ExecuteUnit4Resource executeUnit; + + public ExecuteUnit4ResourceGenerator(ExecuteUnit4Resource executeUnit) { + this.executeUnit =executeUnit; + Resource resource =executeUnit.getResource(); + if(resource instanceof ModelResource){ + ((ModelResource)resource).getModel().buildFullName(); + } + } + + @Override + public String getClassName() { + return executeUnit.getResource().getCode() + "_V" + executeUnit.getResource().getVersion(); + } + + @Override + public String generate() throws Exception { + Engine engine = new Engine(Engine.MAIN_ENGINE_NAME); + engine.setDevMode(true); + engine.setToClassPathSourceFactory(); + engine.setStaticFieldExpression(true); + engine.setStaticMethodExpression(true); + + engine.addSharedStaticMethod(CodeReplacer.class); + engine.addSharedStaticMethod(ExpressionReplacer.class); + //engine.addSharedObject("TC",new CodeReplacer()); + + Map data =new HashMap<>(); + data.put("packageName",this.getPackageName()); + data.put("executeUnit",executeUnit); + Template template =engine.getTemplate(template_location); + return template.renderToString(data); + +// StringBuilder sb =new StringBuilder(); +// sb.append(PackageGenerator.generate(getPackageName())).append("\n"); +// sb.append(CommonImportGenerator.generate()).append("\n"); +// sb.append(FunctionGenerator.generate(executeUnit.getFunctions())).append("\n"); +// sb.append(ResourceClassGenerator.generate(executeUnit.getResource())).append("\n"); +// sb.append(ArgumentClassGenerator.generate(executeUnit.getResource())).append("\n"); +// sb.append(DictionaryClassGenerator.generate(executeUnit.getDictionaries())).append("\n"); +// sb.append(LibClassGenerator.generate(executeUnit.getLibs())).append("\n"); +// return sb.toString(); + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnitGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnitGenerator.java new file mode 100644 index 00000000..4e75d4a1 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/ExecuteUnitGenerator.java @@ -0,0 +1,22 @@ +package io.sc.engine.rule.core.code.generator; + +import io.sc.engine.rule.core.code.SourceCode; +import io.sc.engine.rule.core.code.generator.impl.CommonImportGenerator; +import io.sc.engine.rule.core.code.generator.impl.PackageGenerator; + +public abstract class ExecuteUnitGenerator { + public SourceCode generateSourceCode() throws Exception { + SourceCode sourceCode =new SourceCode(); + sourceCode.setPackageName(getPackageName()); + sourceCode.setClassName(getClassName()); + sourceCode.setSource(generate()); + return sourceCode; + } + + public String getPackageName() { + return "io.sc.engine.rule.core.code"; + } + + public abstract String getClassName(); + public abstract String generate() throws Exception; +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ArgumentClassGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ArgumentClassGenerator.java new file mode 100644 index 00000000..858cf5f1 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ArgumentClassGenerator.java @@ -0,0 +1,9 @@ +package io.sc.engine.rule.core.code.generator.impl; + +import io.sc.engine.rule.core.po.resource.Resource; + +public class ArgumentClassGenerator { + public static String generate(Resource resource) { + return null; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/CommonImportGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/CommonImportGenerator.java new file mode 100644 index 00000000..cc5e3007 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/CommonImportGenerator.java @@ -0,0 +1,13 @@ +package io.sc.engine.rule.core.code.generator.impl; + +import org.springframework.util.StreamUtils; + +import java.nio.charset.StandardCharsets; + +public class CommonImportGenerator { + private static final String TEMPLATE_CLASSPATH = "/io/sc/engine/rule/core/code/generator/template/Import.tpl"; + + public static String generate() throws Exception{ + return StreamUtils.copyToString(ResourceClassGenerator.class.getResourceAsStream(TEMPLATE_CLASSPATH), StandardCharsets.UTF_8); + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/DictionaryClassGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/DictionaryClassGenerator.java new file mode 100644 index 00000000..5e1fcaa7 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/DictionaryClassGenerator.java @@ -0,0 +1,11 @@ +package io.sc.engine.rule.core.code.generator.impl; + +import io.sc.engine.rule.core.po.dictionary.Dictionary; + +import java.util.List; + +public class DictionaryClassGenerator { + public static String generate(List dictionaries) { + return null; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/FunctionGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/FunctionGenerator.java new file mode 100644 index 00000000..215d27a4 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/FunctionGenerator.java @@ -0,0 +1,29 @@ +package io.sc.engine.rule.core.code.generator.impl; + +import io.sc.engine.rule.core.po.function.Function; +import io.sc.platform.util.StringUtil; +import org.springframework.util.StreamUtils; + +import java.nio.charset.StandardCharsets; +import java.util.List; + +public class FunctionGenerator { + private static final String TEMPLATE_CLASSPATH = "/io/sc/engine/rule/core/code/generator/template/Function.tpl"; + + public static String generate(List functions) throws Exception{ + String template =StreamUtils.copyToString(ResourceClassGenerator.class.getResourceAsStream(TEMPLATE_CLASSPATH), StandardCharsets.UTF_8); + StringBuilder sb =new StringBuilder(""); + if(functions!=null && !functions.isEmpty()){ + for(Function function : functions){ + String[] pattern =new String[]{ + "/**", + " * {0}", + " */", + }; + sb.append(StringUtil.format(pattern,function.getDescription())); + sb.append(function.getBody()).append("\n\n"); + } + } + return StringUtil.format(template,sb.toString()); + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/LibClassGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/LibClassGenerator.java new file mode 100644 index 00000000..f9bc07e1 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/LibClassGenerator.java @@ -0,0 +1,12 @@ +package io.sc.engine.rule.core.code.generator.impl; + +import io.sc.engine.rule.core.po.dictionary.Dictionary; +import io.sc.engine.rule.core.po.lib.Lib; + +import java.util.List; + +public class LibClassGenerator { + public static String generate(List libs) { + return null; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ModelGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ModelGenerator.java new file mode 100644 index 00000000..6fd34119 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ModelGenerator.java @@ -0,0 +1,57 @@ +package io.sc.engine.rule.core.code.generator.impl; + +import io.sc.engine.rule.core.po.model.Model; +import io.sc.engine.rule.core.util.CodeReplacer; +import io.sc.platform.util.CollectionUtil; +import io.sc.platform.util.FileUtil; +import io.sc.platform.util.StringUtil; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ModelGenerator { + private static final String MODEL_TEMPLATE_CLASSPATH ="classpath:/io/sc/engine/rule/core/code/generator/templates/Model.tpl"; + private static final String MODEL_EXECUTE_METHOD_TEMPLATE_CLASSPATH ="classpath:/io/sc/engine/rule/core/code/generator/templates/ModelExecuteMethod.tpl"; + + public static String generate(Model model) throws Exception{ + String template = FileUtil.readString(MODEL_TEMPLATE_CLASSPATH); + StringBuilder sb =new StringBuilder(); + + Map variables =new HashMap<>(); + variables.put("enable",model.getEnable()); + variables.put("name",model.getName()); + variables.put("methodName", CodeReplacer.methodName(model.getCode())); + variables.put("executeMode",model.getExecuteMode().toString()); + variables.put("executeModelMethods",generateExecuteMethods(model)); + variables.put("executeParameterMethods",ParameterGenerator.generateExecuteMethods(model)); + variables.put("modelMethodBodys",generateMethodBodys(model.getChildren())); + variables.put("parameterMethodBodys",ParameterGenerator.generateMethodBodys(model.getAllParameters())); + sb.append(StringUtil.format(template,variables)); + return sb.toString(); + } + + public static String generateExecuteMethods(Model model) throws Exception { + StringBuilder sb =new StringBuilder(""); + if(CollectionUtil.hasElements(model.getChildren())){ + String template = FileUtil.readString(MODEL_EXECUTE_METHOD_TEMPLATE_CLASSPATH); + for(Model subModel : model.getChildren()) { + Map variables =new HashMap<>(); + variables.put("methodName", CodeReplacer.methodName(subModel.getCode())); + variables.put("comments",subModel.getName()); + sb.append(StringUtil.format(template,variables)); + } + } + return sb.toString(); + } + + public static String generateMethodBodys(List models) throws Exception { + StringBuilder sb =new StringBuilder(""); + if(CollectionUtil.hasElements(models)){ + for(Model model : models) { + sb.append(generate(model)); + } + } + return sb.toString(); + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/PackageGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/PackageGenerator.java new file mode 100644 index 00000000..d894c9d1 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/PackageGenerator.java @@ -0,0 +1,15 @@ +package io.sc.engine.rule.core.code.generator.impl; + +import io.sc.platform.util.StringUtil; +import org.springframework.util.StreamUtils; + +import java.nio.charset.StandardCharsets; + +public class PackageGenerator { + private static final String TEMPLATE_CLASSPATH = "/io/sc/engine/rule/core/code/generator/template/Package.tpl"; + + public static String generate(String packageName) throws Exception{ + String template =StreamUtils.copyToString(ResourceClassGenerator.class.getResourceAsStream(TEMPLATE_CLASSPATH), StandardCharsets.UTF_8); + return StringUtil.format(template,packageName); + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ParameterGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ParameterGenerator.java new file mode 100644 index 00000000..f1c8cd80 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ParameterGenerator.java @@ -0,0 +1,60 @@ +package io.sc.engine.rule.core.code.generator.impl; + +import io.sc.engine.rule.core.po.model.Model; +import io.sc.engine.rule.core.po.model.Parameter; +import io.sc.engine.rule.core.po.model.parameter.IntermediateParameter; +import io.sc.engine.rule.core.po.model.parameter.OutParameter; +import io.sc.engine.rule.core.util.CodeReplacer; +import io.sc.platform.util.CollectionUtil; +import io.sc.platform.util.FileUtil; +import io.sc.platform.util.StringUtil; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ParameterGenerator { + private static final String PARAMETER_TEMPLATE_CLASSPATH ="classpath:/io/sc/engine/rule/core/code/generator/templates/Parameter.tpl"; + private static final String PARAMETER_EXECUTE_METHOD_TEMPLATE_CLASSPATH ="classpath:/io/sc/engine/rule/core/code/generator/templates/ParameterExecuteMethod.tpl"; + + public static String generate(Parameter parameter) throws Exception{ + String template = FileUtil.readString(PARAMETER_TEMPLATE_CLASSPATH); + StringBuilder sb =new StringBuilder(); + + Map variables =new HashMap<>(); + variables.put("name",parameter.getName()); + variables.put("methodName", CodeReplacer.methodName(parameter.getCode())); + variables.put("type", parameter.getType().toString()); + sb.append(StringUtil.format(template,variables)); + return sb.toString(); + } + + public static String generateExecuteMethods(Model model) throws Exception { + StringBuilder sb =new StringBuilder(""); + if(CollectionUtil.hasElements(model.getParameters())){ + String template = FileUtil.readString(PARAMETER_EXECUTE_METHOD_TEMPLATE_CLASSPATH); + for(Parameter parameter : model.getParameters()) { + if(parameter instanceof IntermediateParameter || parameter instanceof OutParameter) { + Map variables = new HashMap<>(); + variables.put("methodName", CodeReplacer.methodName(parameter.getCode())); + variables.put("name", parameter.getName()); + variables.put("type", parameter.getType().toString()); + sb.append(StringUtil.format(template, variables)); + } + } + } + return sb.toString(); + } + + public static String generateMethodBodys(List parameters) throws Exception { + StringBuilder sb =new StringBuilder(""); + if(CollectionUtil.hasElements(parameters)){ + for(Parameter parameter : parameters) { + if(parameter instanceof IntermediateParameter || parameter instanceof OutParameter) { + sb.append(generate(parameter)); + } + } + } + return sb.toString(); + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ParameterMethodGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ParameterMethodGenerator.java new file mode 100644 index 00000000..beb0f422 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ParameterMethodGenerator.java @@ -0,0 +1,23 @@ +package io.sc.engine.rule.core.code.generator.impl; + +import io.sc.engine.rule.core.po.model.Parameter; +import io.sc.platform.util.FileUtil; +import io.sc.platform.util.StringUtil; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ParameterMethodGenerator { + private static final String TEMPLATE_CLASSPATH ="classpath:/io/sc/engine/rule/core/code/generator/templates/ParameterMethod.tpl"; + + public static String generate(Parameter parameter) throws Exception{ + List templates = FileUtil.readStringAsList(TEMPLATE_CLASSPATH); + + Map variables =new HashMap<>(); + variables.put("code",parameter.getCode()); + variables.put("name",parameter.getName()); + + return StringUtil.format(templates,variables); + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ResourceClassGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ResourceClassGenerator.java new file mode 100644 index 00000000..ca97e004 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/ResourceClassGenerator.java @@ -0,0 +1,37 @@ +package io.sc.engine.rule.core.code.generator.impl; + +import io.sc.engine.rule.core.po.model.Model; +import io.sc.engine.rule.core.po.resource.ModelResource; +import io.sc.engine.rule.core.po.resource.Resource; +import io.sc.engine.rule.core.util.CodeReplacer; +import io.sc.platform.util.FileUtil; +import io.sc.platform.util.StringUtil; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ResourceClassGenerator { + private static final String TEMPLATE_CLASSPATH ="classpath:/io/sc/engine/rule/core/code/generator/templates/Resource.tpl"; + + public static String generate(Resource resource) throws Exception{ + StringBuilder sb =new StringBuilder(""); + if(resource!=null){ + List templates = FileUtil.readStringAsList(TEMPLATE_CLASSPATH); + + Map variables =new HashMap<>(); + variables.put("resourceClassName", CodeReplacer.className(resource.getCode(),resource.getVersion())); + variables.put("resourceName",resource.getName()); + variables.put("resourceVersion",resource.getVersion()); + if(resource instanceof ModelResource) { + Model model =((ModelResource)resource).getModel(); + variables.put("topModelName", model.getName()); + variables.put("topModelMethodName", CodeReplacer.methodName(model.getCode())); + variables.put("topModelMethod", ModelGenerator.generate(model)); + } + + sb.append(StringUtil.format(templates,variables)); + } + return sb.toString(); + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/functions.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/functions.tpl new file mode 100644 index 00000000..c7eb39ad --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/functions.tpl @@ -0,0 +1,10 @@ +/******************************************************** + * Functions + ********************************************************/ +#for(function : executeUnit.functions) + +/** + * #(function.description) + */ +#(function.body) +#end \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/import.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/import.tpl new file mode 100644 index 00000000..a3cc9970 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/import.tpl @@ -0,0 +1,86 @@ +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.core.type.TypeReference; +import groovy.transform.Canonical; +import io.sc.engine.rule.client.Executor; +import io.sc.engine.rule.core.classes.ResourceAbstract; +import io.sc.engine.rule.core.classes.RuleResult; +import io.sc.engine.rule.core.classes.SingleRuleResult; +import io.sc.engine.rule.core.code.impl.support.FieldValidator; +import io.sc.engine.rule.core.code.impl.support.ParameterResult; +import io.sc.engine.rule.core.code.impl.support.ResourceResult; +import io.sc.engine.rule.core.code.impl.support.ValidateResult; +import io.sc.engine.rule.core.enums.ParameterType; +import io.sc.engine.rule.core.enums.RuntimeInputParameterType; +import io.sc.engine.rule.core.function.JpmmlEvaluator; +import io.sc.engine.rule.core.util.CodeReplacer; +import io.sc.engine.rule.core.util.ESql; +import io.sc.platform.util.DateUtil; +import io.sc.platform.util.ObjectMapperUtil; +import io.sc.platform.util.StringUtil; +import io.sc.platform.util.TypeConvertor; +import java.math.*; +import java.util.Map; +import java.util.Random; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import static io.sc.engine.rule.core.function.ArithmeticFunction.div; +import static io.sc.engine.rule.core.function.ArithmeticFunction.lg; +import static io.sc.engine.rule.core.function.ArithmeticFunction.ln; +import static io.sc.engine.rule.core.function.ArithmeticFunction.log; +import static io.sc.engine.rule.core.function.ArithmeticFunction.max; +import static io.sc.engine.rule.core.function.ArithmeticFunction.min; +import static io.sc.engine.rule.core.function.ArithmeticFunction.randomInt; +import static io.sc.engine.rule.core.function.ArithmeticFunction.root; +import static io.sc.engine.rule.core.function.ArithmeticFunction.sum; +import static io.sc.engine.rule.core.function.ArithmeticFunction.transformSequencing; +import static io.sc.engine.rule.core.function.DateFunction.now; +import static io.sc.engine.rule.core.function.DateFunction.yyyyMMdd; +import static io.sc.engine.rule.core.function.DateFunction.yyyy_MM_dd; +import static io.sc.engine.rule.core.function.NormalDistributionFunction.G; +import static io.sc.engine.rule.core.function.NormalDistributionFunction.iG; +import static io.sc.engine.rule.core.function.SpecialValueFunction.infinite; +import static io.sc.engine.rule.core.function.SpecialValueFunction.isInfinite; +import static io.sc.engine.rule.core.function.SpecialValueFunction.isNan; +import static io.sc.engine.rule.core.function.SpecialValueFunction.isNil; +import static io.sc.engine.rule.core.function.SpecialValueFunction.isZero; +import static io.sc.engine.rule.core.function.SpecialValueFunction.nan; +import static io.sc.engine.rule.core.function.SpecialValueFunction.nil; +import static io.sc.engine.rule.core.function.SpecialValueFunction.zero; +import static io.sc.engine.rule.core.function.StringFunction.contains; +import static io.sc.engine.rule.core.function.StringFunction.endsWith; +import static io.sc.engine.rule.core.function.StringFunction.join; +import static io.sc.engine.rule.core.function.StringFunction.length; +import static io.sc.engine.rule.core.function.StringFunction.lowerCase; +import static io.sc.engine.rule.core.function.StringFunction.startsWith; +import static io.sc.engine.rule.core.function.StringFunction.trim; +import static io.sc.engine.rule.core.function.StringFunction.upperCase; +import static io.sc.engine.rule.core.util.NumberFormater.comma; +import static io.sc.engine.rule.core.util.NumberFormater.decimal; +import static io.sc.engine.rule.core.util.NumberFormater.money; +import static io.sc.engine.rule.core.util.NumberFormater.percent; +import static java.lang.Math.E; +import static java.lang.Math.IEEEremainder; +import static java.lang.Math.PI; +import static java.lang.Math.abs; +import static java.lang.Math.acos; +import static java.lang.Math.asin; +import static java.lang.Math.atan; +import static java.lang.Math.atan2; +import static java.lang.Math.cbrt; +import static java.lang.Math.ceil; +import static java.lang.Math.cos; +import static java.lang.Math.cosh; +import static java.lang.Math.exp; +import static java.lang.Math.expm1; +import static java.lang.Math.floor; +import static java.lang.Math.pow; +import static java.lang.Math.random; +import static java.lang.Math.rint; +import static java.lang.Math.round; +import static java.lang.Math.sin; +import static java.lang.Math.sinh; +import static java.lang.Math.sqrt; +import static java.lang.Math.tan; +import static java.lang.Math.tanh; +import static java.lang.Math.toDegrees; +import static java.lang.Math.toRadians; \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/model.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/model.tpl new file mode 100644 index 00000000..8cebf93d --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/model.tpl @@ -0,0 +1,28 @@ +#define renderModel(model) + //模型(#(model.fullName)) + private static void #(methodName(model.code))(Executor executor,Argument argument){ + if(log.isDebugEnabled()){log.debug("开始调用模型: {}","#(model.fullName)");} + #if(!model.enable) + if(log.isDebugEnabled()){log.debug("开始调用模型: enable==false");} + #end + #if(model.executeMode.toString()=="DOWN_UP") + //模型的执行模式为:自下而上,首先执行子模型 + #for(subModel : model.children) + #(methodName(subModel.code))(executor,argument);//#(subModel.name) + #end + #end + + //处理模型的中间值和结果值 + #for(parameter : model.parameters) + #if(parameter.type.toString()=="INTERMEDIATE" || parameter.type.toString()=="OUT") + #(methodName(parameter.code))(executor,argument);//#(parameter.name),#(parameter.type) + #end + #end + } + + #for(subModel : model.children) +#@renderModel(subModel) + #end + + #@renderParameter(model) +#end \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/package.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/package.tpl new file mode 100644 index 00000000..86f8d5e5 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/package.tpl @@ -0,0 +1 @@ +package #(packageName); \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/parameter.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/parameter.tpl new file mode 100644 index 00000000..f8b0fa4d --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/parameter.tpl @@ -0,0 +1,37 @@ +#define renderParameter(model) + #for(parameter : model.allParameters) + //参数处理器, #(parameter.name)(#(parameter.type)) + private static void #(methodName(parameter.code))(Executor executor,Argument argument) { + if(log.isDebugEnabled()){log.debug(" {}","#(parameter.name)(#(parameter.type))");} + #for(processor : parameter.processors) + #if(processor.enable) + #switch (processor.type.toString()) + #case ("ARITHMETIC") + #include("/io/sc/engine/rule/core/code/generator/template/processor/arithmetic.tpl") + #case ("CONDITION_RANGE") + #include("/io/sc/engine/rule/core/code/generator/template/processor/conditionRange.ftl") + #case ("DECISION_TABLE") + #case ("DECISION_TABLE_2C") + #case ("DECISION_TREE") + #case ("EXECUTION_FLOW") + #case ("GROOVY_SCRIPT") + #case ("HTTP_REQUEST") + #case ("MATH_FORMULA") + #case ("NUMBER_RANGE") + #include("/io/sc/engine/rule/core/code/generator/template/processor/numberRange.ftl") + #case ("OBJECT_PROPERTIES") + #case ("OPTION_VALUE") + #case ("PMML") + #case ("RULE") + #case ("SCORE_CARD") + #case ("SINGLE_RULE") + #case ("SQL") + #case ("TERNARY") + #case ("WHEN_THEN") + #end + #end + #end + if(log.isDebugEnabled()){log.debug(" 参数结果值 : {}",argument.#(fieldName(parameter.code)));} + } + #end +#end \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TABLE.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TABLE.ftl new file mode 100644 index 00000000..afd56363 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TABLE.ftl @@ -0,0 +1,4 @@ + //决策表 + ${DecisionTable.generateGroovyCode(parameter,processor)} + if(log.isDebugEnabled()){log.debug(" 决策表运算结果 : {}",${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)});} + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TABLE_2C.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TABLE_2C.ftl new file mode 100644 index 00000000..ac42970b --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TABLE_2C.ftl @@ -0,0 +1,4 @@ + //简单决策表 + ${DecisionTable2C.generateGroovyCode(parameter,processor)} + if(log.isDebugEnabled()){log.debug(" 简单决策表运算结果 : {}",${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)});} + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TREE.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TREE.ftl new file mode 100644 index 00000000..6a873b76 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TREE.ftl @@ -0,0 +1,4 @@ + //决策树(此处只是入口,真正的决策树计算逻辑在后面通过一系列方法完成) + ${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)} =Tree_${CodeReplacer.fieldName(parameter.code)}_${DecisionTree.parse(processor.decisionTree).id}(executor,${ExpressionReplacer.ARGUMENT_NAME}); + if(log.isDebugEnabled()){log.debug(" 决策树运算结果 : {}",${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)});} + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TREE_FUNCTION.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TREE_FUNCTION.ftl new file mode 100644 index 00000000..cc765d79 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/DECISION_TREE_FUNCTION.ftl @@ -0,0 +1,13 @@ + /*-------------------------------------------------------------------------------* + * 决策树函数 * + *-------------------------------------------------------------------------------*/ +<#list (model.getAllParameters())! as parameter><#-- 循环将每个参数处理生成一个方法 --> + <#if ("INTERMEDIATE"==parameter.type || "OUT"==parameter.type)> + <#list (parameter.processors)! as processor> + <#if "DECISION_TREE"==processor.type> + //${parameter.name}(${parameter.type}) +${DecisionTree.generateGroovyCode(parameter,processor)} + + + + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/EXECUTION_FLOW_FUNCTION.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/EXECUTION_FLOW_FUNCTION.ftl new file mode 100644 index 00000000..70cbd867 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/EXECUTION_FLOW_FUNCTION.ftl @@ -0,0 +1,13 @@ + /*-------------------------------------------------------------------------------* + * 执行流函数 * + *-------------------------------------------------------------------------------*/ +<#list (model.getAllParameters())! as parameter><#-- 循环将每个参数处理生成一个方法 --> + <#if ("INTERMEDIATE"==parameter.type || "OUT"==parameter.type)> + <#list (parameter.processors)! as processor> + <#if "EXECUTION_FLOW"==processor.type> + //${parameter.name}(${parameter.type}) +${ExecutionFlow.generateGroovyCode(parameter,processor)} + + + + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/GROOVY_SCRIPT.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/GROOVY_SCRIPT.ftl new file mode 100644 index 00000000..62637aa0 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/GROOVY_SCRIPT.ftl @@ -0,0 +1,3 @@ +<#if processor.groovyScript??> +${ExpressionReplacer.groovy(processor.groovyScript,null)} + diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/MATH_FORMULA.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/MATH_FORMULA.ftl new file mode 100644 index 00000000..2cd23cee --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/MATH_FORMULA.ftl @@ -0,0 +1,4 @@ + //数学公式 + ${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)} =${MathFormula.generateGroovyCode(parameter,processor)}; + if(log.isDebugEnabled()){log.debug(" 数学公式运算结果 : {}",${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)});} + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/OBJECT_PROPERTIES.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/OBJECT_PROPERTIES.ftl new file mode 100644 index 00000000..fa4ef3cc --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/OBJECT_PROPERTIES.ftl @@ -0,0 +1,4 @@ + //对象属性函数 + ${ObjectProperty.generateGroovyCode(parameter,processor)} + if(log.isDebugEnabled()){log.debug(" 对象属性函数运算结果 : {}",${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)});} + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/OPTION_VALUE.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/OPTION_VALUE.ftl new file mode 100644 index 00000000..15e866e2 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/OPTION_VALUE.ftl @@ -0,0 +1,34 @@ + //选项值运算 +<#assign optionParameter=model.getParameterByOptionParameterCode(processor.optionCode)> +<#if optionParameter??> + if(${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(optionParameter.code)}!=null){ + <#list model.getParameterOptionsByOptionParameterCode(processor.optionCode) as option> + <#if option_index==0> + <#if optionParameter.valueType=='java.lang.String'> + if(${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(optionParameter.code)}=="""${option.inputValue}"""){ + <#else> + if(${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(optionParameter.code)}==${option.inputValue}){ + + <#else> + <#if optionParameter.valueType=='java.lang.String'> + }else if(${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(optionParameter.code)}=="""${option.inputValue}"""){ + <#else> + }else if(${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(optionParameter.code)}==${option.inputValue}){ + + + <#if parameter.valueType=='java.lang.String'> + ${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)} ="""${option.value}"""; + if(log.isDebugEnabled()){log.debug(" 选项运算结果 : {}",${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)});} + <#else> + ${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)} =${option.value}; + if(log.isDebugEnabled()){log.debug(" 选项运算结果 : {}",${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)});} + + + }else{ + if(log.isDebugEnabled()){log.debug(" !!!未匹配到选项列表,选项运算结果 : {}",${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)});} + } + }else{ + if(log.isDebugEnabled()){log.debug(" !!!未提供选项输入值,选项运算结果 : {}",${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)});} + } + + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/PMML.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/PMML.ftl new file mode 100644 index 00000000..f60f6669 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/PMML.ftl @@ -0,0 +1,3 @@ +<#if processor.pmml??> + arg.${CodeReplacer.fieldName(parameter.code)} =JpmmlEvaluator.evaluate('${parameter.id}_${processor.id}','''${processor.pmml}''',arg.toMap()); + diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/SQL.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/SQL.ftl new file mode 100644 index 00000000..f454710e --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/SQL.ftl @@ -0,0 +1,17 @@ + //SQL 运算 +<#if processor.sqlDatasourceName??> + javax.sql.DataSource ds =io.sc.engine.rule.client.spring.util.EngineSpringApplicationContextUtil.getDataSource('${processor.sqlDatasourceName}'); +<#else> + javax.sql.DataSource ds =io.sc.engine.rule.client.spring.util.EngineSpringApplicationContextUtil.getDefaultDataSource(); + + String sql =${ExpressionReplacer.groovy("\n"+processor.sql,"java.lang.String")}; +<#if processor.sql??> + ESql.withInstance(ds){ db-> + db.query(sql) { rs -> + if (rs.next()) { +${SqlFieldMapping.generateGroovyCode(parameter,processor)} + } + } + } + + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/TERNARY.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/TERNARY.ftl new file mode 100644 index 00000000..1e46ea04 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/TERNARY.ftl @@ -0,0 +1,4 @@ + //三元运算 + ${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)} =(${ExpressionReplacer.groovy(processor.ternaryCondition,null)}) ? (${ExpressionReplacer.groovy(processor.ternaryTrue,parameter.valueType)}) : (${ExpressionReplacer.groovy(processor.ternaryFalse,parameter.valueType)}); + if(log.isDebugEnabled()){log.debug(" 三元运算结果 : {}",${ExpressionReplacer.ARGUMENT_NAME}.${CodeReplacer.fieldName(parameter.code)});} + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/arithmetic.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/arithmetic.tpl new file mode 100644 index 00000000..0e6b9041 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/arithmetic.tpl @@ -0,0 +1,4 @@ + + //算数运算 + argument.#(fieldName(parameter.code)) =#(groovy(processor.arithmetic,parameter.valueType));//#(parameter.type), #(parameter.name) + if(log.isDebugEnabled()){log.debug(" 算数运算结果 : {}",argument.#(fieldName(parameter.code)));} \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/conditionRange.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/conditionRange.ftl new file mode 100644 index 00000000..b38e8b7b --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/conditionRange.ftl @@ -0,0 +1,3 @@ + //条件分段函数 + #(io.sc.engine.rule.core.code.impl.support.processor.ConditionRange::generateGroovyCode(parameter,processor)) + if(log.isDebugEnabled()){log.debug(" 条件分段函数运算结果 : {}",argument.#(fieldName(parameter.code)));} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/numberRange.ftl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/numberRange.ftl new file mode 100644 index 00000000..88492a98 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/processor/numberRange.ftl @@ -0,0 +1,4 @@ + //数值分段函数 + #(io.sc.engine.rule.core.code.impl.support.processor.NumberRange::generateGroovyCode(parameter,processor)) + if(log.isDebugEnabled()){log.debug(" 数值分段函数运算结果 : {}",argument.#(fieldName(parameter.code)));} + \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/resource.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/resource.tpl new file mode 100644 index 00000000..90b50672 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/template/resource.tpl @@ -0,0 +1,118 @@ +#include("package.tpl") + +#include("import.tpl") + +#include("functions.tpl") + +#set(resource = executeUnit.resource) +#set(libs =executeUnit.libs) +#set(model = resource.model) + +/******************************************************** + * Execute Unit + ********************************************************/ +/** + * type: #(executeUnit.type) + * code: #(resource.code), + * name: #(resource.name), + * version: #(resource.version) + */ +class #(className(resource.code,resource.version)) { + private static final Logger log =LoggerFactory.getLogger(#(className(resource.code,resource.version)).class); + + /** + * 执行方法(Map作为输入参数,该 Map 封装了调用模型的参数) + * @param map 输入参数封装器 + * @return 执行结果 + */ + public static ResourceResult execute(Map map) throws Exception{ + return execute(map["executor"],map["subModelCode"],map["argument"]); + } + + /** + * 执行方法 + * @param executor 执行器对象 + * @param subModelCode 子模型代码 + * @param data 输入参数 + * @return 执行结果 + */ + public static ResourceResult execute(Executor executor,String subModelCode,Object data) throws Exception{ + if(log.isDebugEnabled()){log.debug("开始执行: #(resource.name)");} + if(data instanceof Map){ + if(log.isDebugEnabled()){log.debug("显示输入参数(Map)=================================================\n{}",ObjectMapperUtil.json().writeValueAsString(data));} + }else if(data instanceof String){ + if(log.isDebugEnabled()){log.debug("显示输入参数(Json字符串)=================================================\n{}",data);} + } + + //初始化指标库 + #for(lib : libs) + if(log.isDebugEnabled()){log.debug("初始化指标库 : #(lib.name)_V#(lib.version)");} + + #(className(lib.code,lib.version)) #(varName(lib.code,lib.version)) =new #(className)(); + #(className(lib.code,lib.version)).convertArgument(data); + #end + + //初始化模型参数 + if(log.isDebugEnabled()){log.debug("从 {} 初始化模型参数","java.lang.String"==data.class?"Json":"Map");} + Argument argument =Argument.convertArgument(data); + + //输入参数合法性检查 + ValidateResult validateResult =new ValidateResult(); + + //输入参数合法性检查(指标库) + #for(lib : libs) + if(log.isDebugEnabled()){log.debug("开始检查输入参数数据合法性(指标库: #(lib.name)_V#(lib.version))");} + #(varName(lib.code,lib.version)).validate(validateResult); + if(validateResult.hasError()){ + if(log.isDebugEnabled()){log.debug("\t检查结果: 失败!");} + ResourceResult result =new ResourceResult(); + result.setValidateResult(validateResult); + return result; + } + if(log.isDebugEnabled()){log.debug("\t检查结果: 成功!");} + #end + + //输入参数合法性检查(模型) + if(log.isDebugEnabled()){log.debug("开始检查模型输入参数数据合法性");} + argument.validate(validateResult); + if(validateResult.hasError()){ + if(log.isDebugEnabled()){log.debug("\t检查结果: 失败!");} + ResourceResult result =new ResourceResult(); + result.setValidateResult(validateResult); + return result; + } + if(log.isDebugEnabled()){log.debug("\t检查结果: 成功!");} + + //执行指标库 + #for(lib : executeUnit.getLibs()) + if(log.isDebugEnabled()){log.debug("开始执行指标库: #(lib.name)_V#(lib.version)");} + #(varName(lib.code,lib.version)).execute(); + + #end + + //合并指标库指标 + if(log.isDebugEnabled()){log.debug("开始合并指标库指标");} + Map indicatorLibs =new HashMap(); + #for(lib : executeUnit.getLibs()) + indicatorLibs.put("#(varName(lib.code,lib.version))",#(varName(lib.code,lib.version))); + #end + argument.mergeParameterValueFromIndicatorLib(indicatorLibs); + if(log.isDebugEnabled()){log.debug("显示合并后输入参数:\n{}",ObjectMapperUtil.json().writeValueAsString(argument));} + + //执行模型 + if(subModelCode){ + subModelCode =CodeReplacer.methodName(subModelCode); + "${subModelCode}"(executor,argument);//调用子模型 + }else{ + #(methodName(model.code))(executor,argument);//调用顶级模型(#(model.name)) + } + + //返回结果 + ResourceResult result =argument.toResult(); + if(log.isDebugEnabled()){log.debug("模型调用成功,返回结果:\n{}",ObjectMapperUtil.json().writeValueAsString(result));} + return result; + } + + #include("parameter.tpl") + #include("model.tpl") + #@renderModel(model) diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/JavaSourceCodeGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/JavaSourceCodeGenerator.java new file mode 100644 index 00000000..869dfde9 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/JavaSourceCodeGenerator.java @@ -0,0 +1,24 @@ +package io.sc.engine.rule.core.code.impl; + +import io.sc.engine.rule.core.code.SourceCode; +import io.sc.engine.rule.core.code.SourceCodeGenerator; +import io.sc.engine.rule.core.code.generator.ExecuteUnit4LibGenerator; +import io.sc.engine.rule.core.code.generator.ExecuteUnit4ResourceGenerator; +import io.sc.engine.rule.core.code.generator.ExecuteUnitGenerator; +import io.sc.engine.rule.core.code.impl.support.ExecuteUnit; +import io.sc.engine.rule.core.code.impl.support.ExecuteUnit4Lib; +import io.sc.engine.rule.core.code.impl.support.ExecuteUnit4Resource; + +public class JavaSourceCodeGenerator implements SourceCodeGenerator { + @Override + public SourceCode generateSourceCode(ExecuteUnit executeUnit) throws Exception { + if(executeUnit instanceof ExecuteUnit4Resource){ + ExecuteUnitGenerator generator =new ExecuteUnit4ResourceGenerator((ExecuteUnit4Resource)executeUnit); + return generator.generateSourceCode(); + }else if(executeUnit instanceof ExecuteUnit4Lib){ + ExecuteUnitGenerator generator =new ExecuteUnit4LibGenerator((ExecuteUnit4Lib)executeUnit); + return generator.generateSourceCode(); + } + return null; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteResult.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteResult.java new file mode 100644 index 00000000..538ca8d4 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteResult.java @@ -0,0 +1,76 @@ +package io.sc.engine.rule.core.code.impl.support; + +import io.sc.engine.rule.core.enums.ParameterType; + +import java.util.ArrayList; +import java.util.List; + +public class ExecuteResult { + private ValidateResult validateResult; + private List data =new ArrayList(); + + /** + * 添加结果参数 + * @param code 代码 + * @param name 名称 + * @param type 类型 + * @param valueType 值类型 + * @param value 值 + */ + public void addParameterResult(String code, String name, ParameterType type, String valueType, String value) { + data.add(new ParameterResult(code,name,type,valueType,value)); + } + + /** + * 通过参数代码获取参数值 + * @param code 参数代码 + * @return 参数值 + */ + public boolean exists(String code) { + if(code!=null && !"".equals(code.trim())) { + if(data!=null && data.size()>0) { + for(ParameterResult parameterResult : data) { + if(code.equals(parameterResult.getCode())){ + return true; + } + } + } + } + return false; + } + + /** + * 通过参数代码获取参数值 + * @param code 参数代码 + * @return 参数值 + */ + public String getValueByParameterCode(String code) { + if(code!=null && !"".equals(code.trim())) { + if(data!=null && data.size()>0) { + for(ParameterResult parameterResult : data) { + if(code.equals(parameterResult.getCode())){ + return parameterResult.getValue(); + } + } + } + } + return null; + } + + public ValidateResult getValidateResult() { + return validateResult; + } + public void setValidateResult(ValidateResult validateResult) { + this.validateResult = validateResult; + } + public List getData() { + return data; + } + public void setData(List data) { + this.data = data; + } + + public void addParameterResult(ParameterResult result) { + this.data.add(result); + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit.java new file mode 100644 index 00000000..47d80710 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit.java @@ -0,0 +1,38 @@ +package io.sc.engine.rule.core.code.impl.support; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import io.sc.engine.rule.core.po.dictionary.Dictionary; +import io.sc.engine.rule.core.po.function.Function; + +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown=true) +@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type",defaultImpl=ExecuteUnit4Resource.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value=ExecuteUnit4Resource.class), + @JsonSubTypes.Type(value=ExecuteUnit4Lib.class) +}) +public abstract class ExecuteUnit { + protected List dictionaries;//元数据 + protected List functions; //自定义函数 + + public abstract String getType(); + + public List getDictionaries() { + return dictionaries; + } + + public void setDictionaries(List dictionaries) { + this.dictionaries = dictionaries; + } + + public List getFunctions() { + return functions; + } + + public void setFunctions(List functions) { + this.functions = functions; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit4Lib.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit4Lib.java new file mode 100644 index 00000000..12cb53a5 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit4Lib.java @@ -0,0 +1,22 @@ +package io.sc.engine.rule.core.code.impl.support; + +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.sc.engine.rule.core.po.lib.Lib; + +@JsonPropertyOrder({"type","lib","dictionaries","functions"}) +public class ExecuteUnit4Lib extends ExecuteUnit { + protected Lib lib; //指标库 + + @Override + public String getType() { + return "LIB"; + } + + public Lib getLib() { + return lib; + } + + public void setLib(Lib lib) { + this.lib = lib; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit4Resource.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit4Resource.java new file mode 100644 index 00000000..1c897660 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ExecuteUnit4Resource.java @@ -0,0 +1,36 @@ +package io.sc.engine.rule.core.code.impl.support; + +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import io.sc.engine.rule.core.po.lib.Lib; +import io.sc.engine.rule.core.po.model.Model; +import io.sc.engine.rule.core.po.resource.Resource; +import io.sc.engine.rule.core.vo.resource.ModelResource; + +import java.util.List; + +@JsonPropertyOrder({"type","resource","libs","dictionaries","functions"}) +public class ExecuteUnit4Resource extends ExecuteUnit{ + protected Resource resource; //资源 + protected List libs; //指标库 + + @Override + public String getType() { + return "RESOURCE"; + } + + public Resource getResource() { + return resource; + } + + public void setResource(Resource resource) { + this.resource = resource; + } + + public List getLibs() { + return libs; + } + + public void setLibs(List libs) { + this.libs = libs; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ParameterResult.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ParameterResult.java index 82c59959..64e78171 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ParameterResult.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ParameterResult.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import io.sc.engine.rule.core.classes.RuleResult; import io.sc.engine.rule.core.classes.SingleRuleResult; import io.sc.engine.rule.core.enums.ParameterType; -import io.sc.engine.rule.core.util.JacksonObjectMapper; +import io.sc.platform.util.ObjectMapperUtil; import java.math.BigDecimal; import java.math.RoundingMode; @@ -134,7 +134,7 @@ public class ParameterResult { @Override public String toString() { try { - return JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(this); + return ObjectMapperUtil.json().writeValueAsString(this); } catch (JsonProcessingException e) { return "ParameterResult [code=" + code + ", name=" + name + ", type=" + type + ", valueType=" + valueType + ", valueScale=" + valueScale + ", valueRoundingMode=" + valueRoundingMode + ", defaultValue=" diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceResult.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceResult.java index 64b74124..e18c1aac 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceResult.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceResult.java @@ -1,12 +1,11 @@ package io.sc.engine.rule.core.code.impl.support; -import java.util.ArrayList; -import java.util.List; - +import com.fasterxml.jackson.core.JsonProcessingException; import io.sc.engine.rule.core.enums.ParameterType; -import io.sc.engine.rule.core.util.JacksonObjectMapper; +import io.sc.platform.util.ObjectMapperUtil; -import com.fasterxml.jackson.core.JsonProcessingException; +import java.util.ArrayList; +import java.util.List; /** * 模型结果 @@ -92,7 +91,7 @@ public class ResourceResult { @Override public String toString() { try { - return JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(this); + return ObjectMapperUtil.json().writeValueAsString(this); } catch (JsonProcessingException e) { return "ResourceResult [status=" + status + ", validateResult=" + validateResult + ", data=" + data + "]"; } diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/ConditionRange.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/ConditionRange.java index a5f6db45..84ae81fc 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/ConditionRange.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/ConditionRange.java @@ -1,18 +1,17 @@ package io.sc.engine.rule.core.code.impl.support.processor; -import java.util.ArrayList; -import java.util.List; - +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.po.lib.Indicator; import io.sc.engine.rule.core.po.lib.processor.ConditionRangeIndicatorProcessor; import io.sc.engine.rule.core.po.model.Parameter; import io.sc.engine.rule.core.po.model.processor.ConditionRangeParameterProcessor; import io.sc.engine.rule.core.util.CodeReplacer; import io.sc.engine.rule.core.util.ExpressionReplacer; -import io.sc.engine.rule.core.util.JacksonObjectMapper; +import io.sc.platform.util.ObjectMapperUtil; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.core.type.TypeReference; +import java.util.ArrayList; +import java.util.List; @JsonIgnoreProperties(ignoreUnknown=true) public class ConditionRange { @@ -20,7 +19,7 @@ public class ConditionRange { private String value; public static List parse(String json) throws Exception{ - return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, new TypeReference>(){}); + return ObjectMapperUtil.json().readValue(json, new TypeReference>(){}); } public static String generateGroovyCode(Indicator indicator, ConditionRangeIndicatorProcessor processor) throws Exception{ diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/DecisionTable.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/DecisionTable.java index 351ad8b6..877bb383 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/DecisionTable.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/DecisionTable.java @@ -1,18 +1,17 @@ package io.sc.engine.rule.core.code.impl.support.processor; -import java.util.List; -import java.util.Map; - +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.po.model.Parameter; import io.sc.engine.rule.core.po.model.processor.DecisionTableParameterProcessor; import io.sc.engine.rule.core.util.ExpressionReplacer; -import io.sc.engine.rule.core.util.JacksonObjectMapper; +import io.sc.platform.util.ObjectMapperUtil; -import com.fasterxml.jackson.core.type.TypeReference; +import java.util.List; +import java.util.Map; public class DecisionTable { public static List> parse(String json) throws Exception{ - return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, new TypeReference>>(){}); + return ObjectMapperUtil.json().readValue(json, new TypeReference>>(){}); } public static String generateGroovyCode(Parameter parameter,DecisionTableParameterProcessor processor) throws Exception{ diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/DecisionTable2C.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/DecisionTable2C.java index eb9f8a6e..30244e8b 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/DecisionTable2C.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/DecisionTable2C.java @@ -1,19 +1,18 @@ package io.sc.engine.rule.core.code.impl.support.processor; -import java.util.List; -import java.util.Map; - +import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.po.model.Parameter; import io.sc.engine.rule.core.po.model.processor.DecisionTable2CParameterProcessor; import io.sc.engine.rule.core.util.CodeReplacer; import io.sc.engine.rule.core.util.ExpressionReplacer; -import io.sc.engine.rule.core.util.JacksonObjectMapper; +import io.sc.platform.util.ObjectMapperUtil; -import com.fasterxml.jackson.core.type.TypeReference; +import java.util.List; +import java.util.Map; public class DecisionTable2C { public static List> parse(String json) throws Exception{ - return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, new TypeReference>>(){}); + return ObjectMapperUtil.json().readValue(json, new TypeReference>>(){}); } public static String generateGroovyCode(Parameter parameter,DecisionTable2CParameterProcessor processor) throws Exception{ diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/NumberRange.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/NumberRange.java index b5193528..848b6214 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/NumberRange.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/NumberRange.java @@ -8,7 +8,7 @@ import io.sc.engine.rule.core.po.model.Parameter; import io.sc.engine.rule.core.po.model.processor.NumberRangeParameterProcessor; import io.sc.engine.rule.core.util.CodeReplacer; import io.sc.engine.rule.core.util.ExpressionReplacer; -import io.sc.engine.rule.core.util.JacksonObjectMapper; +import io.sc.platform.util.ObjectMapperUtil; import java.math.BigDecimal; import java.util.ArrayList; @@ -23,17 +23,17 @@ public class NumberRange { private String value; public static List parse(String json) throws Exception{ - return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, new TypeReference>(){}); + return ObjectMapperUtil.json().readValue(json, new TypeReference>(){}); } - - public static String generateGroovyCode(Indicator indicator,NumberRangeIndicatorProcessor processor) throws Exception{ - if(indicator==null || processor==null){ + + public static String generateGroovyCode(Parameter parameter,NumberRangeParameterProcessor processor) throws Exception{ + if(parameter==null || processor==null){ return null; } try { List numberRanges =parse(processor.getNumberRange()); List _numberRanges =new ArrayList(); - + //移除空行 if(numberRanges!=null && numberRanges.size()>0) { for(NumberRange numberRange : numberRanges) { @@ -42,10 +42,10 @@ public class NumberRange { } } } - - String parameterName =CodeReplacer.fieldName(indicator.getCode()); + + String parameterName =CodeReplacer.fieldName(parameter.getCode()); String var =processor.getNumberRangeVar(); - String valueType =indicator.getValueType(); + String valueType =parameter.getValueType(); if(_numberRanges!=null && _numberRanges.size()>0) { if(var==null || "".equals(var.trim())) { var =ExpressionReplacer.ARGUMENT_NAME + "." + parameterName; @@ -85,13 +85,13 @@ public class NumberRange { return sb.toString(); } }catch(Exception e) { - throw new RuntimeException("There was a Error when generate " + indicator.getName()+ "'s NumberRange groovy source code.", e); + throw new RuntimeException("There was a Error when generate " + parameter.getName()+ "'s NumberRange groovy source code.", e); } return null; } - public static String generateGroovyCode(Parameter parameter,NumberRangeParameterProcessor processor) throws Exception{ - if(parameter==null || processor==null){ + public static String generateGroovyCode(Indicator indicator,NumberRangeIndicatorProcessor processor) throws Exception{ + if(indicator==null || processor==null){ return null; } try { @@ -107,9 +107,9 @@ public class NumberRange { } } - String parameterName =CodeReplacer.fieldName(parameter.getCode()); + String parameterName =CodeReplacer.fieldName(indicator.getCode()); String var =processor.getNumberRangeVar(); - String valueType =parameter.getValueType(); + String valueType =indicator.getValueType(); if(_numberRanges!=null && _numberRanges.size()>0) { if(var==null || "".equals(var.trim())) { var =ExpressionReplacer.ARGUMENT_NAME + "." + parameterName; @@ -149,7 +149,7 @@ public class NumberRange { return sb.toString(); } }catch(Exception e) { - throw new RuntimeException("There was a Error when generate " + parameter.getName()+ "'s NumberRange groovy source code.", e); + throw new RuntimeException("There was a Error when generate " + indicator.getName()+ "'s NumberRange groovy source code.", e); } return null; } diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/ObjectProperty.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/ObjectProperty.java index 8865d0ba..c2a59ad5 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/ObjectProperty.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/ObjectProperty.java @@ -8,7 +8,7 @@ import io.sc.engine.rule.core.po.model.Parameter; import io.sc.engine.rule.core.po.model.processor.ObjectPropertiesParameterProcessor; import io.sc.engine.rule.core.util.CodeReplacer; import io.sc.engine.rule.core.util.ExpressionReplacer; -import io.sc.engine.rule.core.util.JacksonObjectMapper; +import io.sc.platform.util.ObjectMapperUtil; import org.springframework.util.StringUtils; import java.util.ArrayList; @@ -21,7 +21,7 @@ public class ObjectProperty { private String expression; public static List parse(String json) throws Exception { - return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, new TypeReference>(){}); + return ObjectMapperUtil.json().readValue(json, new TypeReference>(){}); } public static String generateGroovyCode(Indicator indicator, ObjectPropertiesIndicatorProcessor processor) throws Exception{ diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/Option.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/Option.java index adb06871..cb339873 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/Option.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/Option.java @@ -2,7 +2,7 @@ package io.sc.engine.rule.core.code.impl.support.processor; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.core.type.TypeReference; -import io.sc.engine.rule.core.util.JacksonObjectMapper; +import io.sc.platform.util.ObjectMapperUtil; import java.util.List; @@ -16,7 +16,7 @@ public class Option { public static List