diff --git a/app.engine.rule/build-common.gradle b/app.engine.rule/build-common.gradle new file mode 100644 index 00000000..f6cfe3d5 --- /dev/null +++ b/app.engine.rule/build-common.gradle @@ -0,0 +1,19 @@ +/** + * 设置打包文件的运行时目标环境(target) + * 设置方式: 通过命令行 -D 传入目标环境参数 + * 打包命令如下: + * 1. gradle bootwar # 默认, target=tomcat + * 2. gradle bootwar -Dtarget=undertow # undertow, target=undertow + * 3. gradle bootwar -Dtarget=jetty # jetty, target=jetty + */ +def target =System.getProperty("target") ?: "undertow"; +System.setProperty('target',target); + +// 根据 targetRuntime 变量的值执行实际的 build.gradle +apply from: "build-${target}.gradle" + +// 应用启动项目无需发布到仓库中 +publishPublicationPublicationToMavenRepository.enabled=false + +// 开启 docker 镜像生成任务 +jibBuildTar.enabled =true \ No newline at end of file diff --git a/app.engine.rule/build-jetty.gradle b/app.engine.rule/build-jetty.gradle new file mode 100644 index 00000000..6cf02057 --- /dev/null +++ b/app.engine.rule/build-jetty.gradle @@ -0,0 +1,15 @@ +println "[Jetty] 环境 ......" + +configurations { + all*.exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat" + all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-core" + all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-websocket" +} + +dependencies { + implementation("org.springframework.boot:spring-boot-starter-jetty") + + providedRuntime( + "org.springframework.boot:spring-boot-starter-jetty", + ) +} diff --git a/app.engine.rule/build-tomcat.gradle b/app.engine.rule/build-tomcat.gradle new file mode 100644 index 00000000..a9d85e43 --- /dev/null +++ b/app.engine.rule/build-tomcat.gradle @@ -0,0 +1,7 @@ +println "[Tomcat] 环境 ......" + +dependencies { + providedRuntime( + "org.springframework.boot:spring-boot-starter-tomcat", + ) +} diff --git a/app.engine.rule/build-undertow.gradle b/app.engine.rule/build-undertow.gradle new file mode 100644 index 00000000..00d3b492 --- /dev/null +++ b/app.engine.rule/build-undertow.gradle @@ -0,0 +1,15 @@ +println "[Undertow] 环境 ......" + +configurations { + all*.exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat" + all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-core" + all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-websocket" +} + +dependencies { + implementation("org.springframework.boot:spring-boot-starter-undertow") + + providedRuntime( + "org.springframework.boot:spring-boot-starter-undertow", + ) +} diff --git a/app.engine.rule/build.gradle b/app.engine.rule/build.gradle new file mode 100644 index 00000000..5c45bf86 --- /dev/null +++ b/app.engine.rule/build.gradle @@ -0,0 +1,114 @@ +apply plugin: 'war' +apply plugin: 'com.google.cloud.tools.jib' + +apply from: "build-common.gradle" + +dependencies { + implementation("org.springframework.boot:spring-boot-starter-web"){ + exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat" + } +} + +dependencies { + implementation ( + project(":io.sc.platform.app"), + project(":io.sc.platform.developer"), + project(":io.sc.platform.security.loginform"), + + project(":io.sc.platform.scheduler.manager"), + project(":io.sc.platform.scheduler.executor"), + + project(":io.sc.engine.mv"), + project(":io.sc.engine.mv.frontend"), + project(":io.sc.engine.mv.sample"), + + project(":io.sc.engine.rule.client"), + project(":io.sc.engine.rule.client.spring"), + project(":io.sc.engine.rule.core"), + project(":io.sc.engine.rule.server"), + project(":io.sc.engine.rule.sample"), + ) +} + +/** + * replace [application.version] in i18n message file + */ +processResources { + filesMatching('**/messages*.properties') { + println 'replace ${version} in [' + it + ']' + filteringCharset = 'iso8859-1' + filter(org.apache.tools.ant.filters.ReplaceTokens, beginToken: '$version', endToken: '',tokens: [version: '' + project.version]) + } + + doLast{ + // 为了能够兼容 eclipse 和 idea 两种开发环境,调整如下: + // 1. 将 environment.properties 文件放在了 src/main/resources 目录中 + // 2. 在打包时,将该文件删除 + delete "$buildDir/resources/main/running-mode.properties" + } + +} + +bootWar{ + mainClass = "${project.name}.Application" + //launchScript() + manifest { + attributes 'Implementation-Version': archiveVersion, + 'Implementation-Title': project.name + } +} + +bootJar{ + mainClass = "${project.name}.Application" + //launchScript() + manifest { + attributes 'Implementation-Version': archiveVersion, + 'Implementation-Title': project.name + } +} + + +jib { + outputPaths { + tar = "build/libs/${project.name}-${project.version}-image.tar" + } + from { + image = "openjdk:8u342-slim" + //image = "eclipse-temurin:8u382-b05-jdk-focal" + platforms { + platform { + architecture ="arm64" + os ="linux" + } + } + } + to { + image = "${project.name}:${project.version}" + } + extraDirectories { + paths { + path { + from = "build/libs/" + into = "/opt/${project.name}/" + includes = ["${project.name}-${project.version}.war"] + } + } + } + container { + /** + * 设置jvm的启动参数 + * user.timezone - 解决Java程序的时区问题 + */ + jvmFlags = ["-Duser.timezone=Asia/Shanghai"] + creationTime = "USE_CURRENT_TIMESTAMP" + ports = ["8080"] + entrypoint = [ + "java", + "-jar", + "/opt/" + project.name + "/" + project.name + "-" + project.version + ".war", + "--" + project.name + ".home.dir=" + "/opt/" + project.name + ] + //entrypoint = "java -version" + //appRoot = "/usr/local/tomcat/webapps/ROOT" + } +} diff --git a/app.engine.rule/gradle.properties b/app.engine.rule/gradle.properties new file mode 100644 index 00000000..e69de29b diff --git a/app.engine.rule/src/main/java/app/engine/rule/Application.java b/app.engine.rule/src/main/java/app/engine/rule/Application.java new file mode 100644 index 00000000..c90a22ed --- /dev/null +++ b/app.engine.rule/src/main/java/app/engine/rule/Application.java @@ -0,0 +1,16 @@ +package app.engine.rule; + +import io.sc.platform.core.ApplicationLauncher; +import io.sc.platform.core.PlatformSpringBootServletInitializer; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.WebApplicationInitializer; + +/** + * 应用程序入口 + */ +@SpringBootApplication(proxyBeanMethods = false) +public class Application extends PlatformSpringBootServletInitializer implements WebApplicationInitializer { + public static void main(String[] args) throws Exception { + ApplicationLauncher.run(Application.class,args); + } +} diff --git a/app.engine.rule/src/main/resources/META-INF/platform/plugins/frontend-module.json b/app.engine.rule/src/main/resources/META-INF/platform/plugins/frontend-module.json new file mode 100644 index 00000000..8eadc4af --- /dev/null +++ b/app.engine.rule/src/main/resources/META-INF/platform/plugins/frontend-module.json @@ -0,0 +1,11 @@ +{ + "name": "app.platform", + "components": [ + ], + "resources": [ + "/public/configure.js", + "/public/favicon.svg", + "/public/login-bg.jpg", + "/public/logo.svg" + ] +} \ No newline at end of file diff --git a/app.engine.rule/src/main/resources/META-INF/platform/plugins/messages.json b/app.engine.rule/src/main/resources/META-INF/platform/plugins/messages.json new file mode 100644 index 00000000..b03a3ed1 --- /dev/null +++ b/app.engine.rule/src/main/resources/META-INF/platform/plugins/messages.json @@ -0,0 +1,5 @@ +{ + "includes":[ + "app/engine/rule/i18n/messages" + ] +} \ No newline at end of file diff --git a/app.engine.rule/src/main/resources/app/engine/rule/i18n/messages.properties b/app.engine.rule/src/main/resources/app/engine/rule/i18n/messages.properties new file mode 100644 index 00000000..1937bde9 --- /dev/null +++ b/app.engine.rule/src/main/resources/app/engine/rule/i18n/messages.properties @@ -0,0 +1,3 @@ +application.title=Decision Engine Platform +application.version=$version +application.copyright=Copyright \u00A9 2019\u20132022 \ No newline at end of file diff --git a/app.engine.rule/src/main/resources/app/engine/rule/i18n/messages_tw_CN.properties b/app.engine.rule/src/main/resources/app/engine/rule/i18n/messages_tw_CN.properties new file mode 100644 index 00000000..78c1f506 --- /dev/null +++ b/app.engine.rule/src/main/resources/app/engine/rule/i18n/messages_tw_CN.properties @@ -0,0 +1,3 @@ +application.title=\u6C7A\u7B56\u5F15\u64CE\u7BA1\u7406\u5E73\u53F0 +application.version=$version +application.copyright=Copyright \u00A9 2019\u20132022 \ No newline at end of file diff --git a/app.engine.rule/src/main/resources/app/engine/rule/i18n/messages_zh_CN.properties b/app.engine.rule/src/main/resources/app/engine/rule/i18n/messages_zh_CN.properties new file mode 100644 index 00000000..a411c615 --- /dev/null +++ b/app.engine.rule/src/main/resources/app/engine/rule/i18n/messages_zh_CN.properties @@ -0,0 +1,3 @@ +application.title=\u51B3\u7B56\u5F15\u64CE\u7BA1\u7406\u5E73\u53F0 +application.version=$version +application.copyright=Copyright \u00A9 2019\u20132022 \ No newline at end of file diff --git a/app.engine.rule/src/main/resources/public/configure.js b/app.engine.rule/src/main/resources/public/configure.js new file mode 100644 index 00000000..9bc75ad4 --- /dev/null +++ b/app.engine.rule/src/main/resources/public/configure.js @@ -0,0 +1,11 @@ +// 在浏览器 window 对象中新建名为 APP 的容器变量, 用于存放平台的全局变量 +window.APP = {}; +// 全局配置 +window.APP.configure ={ + // 应用上下文路径 + webContextPath: '[(@{/})]'.startsWith('[')? '/' : '[(@{/})]', + // 默认后端 API 请求的服务地址前缀 + apiContextPaths: { + DEFAULT: '[(@{/})]'.startsWith('[') ? 'http://localhost:8080/' : '[(@{/})]' + } +}; \ No newline at end of file diff --git a/app.engine.rule/src/main/resources/public/favicon.svg b/app.engine.rule/src/main/resources/public/favicon.svg new file mode 100644 index 00000000..eab5885e --- /dev/null +++ b/app.engine.rule/src/main/resources/public/favicon.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app.engine.rule/src/main/resources/public/login-bg.jpg b/app.engine.rule/src/main/resources/public/login-bg.jpg new file mode 100644 index 00000000..2878bbf4 Binary files /dev/null and b/app.engine.rule/src/main/resources/public/login-bg.jpg differ diff --git a/app.engine.rule/src/main/resources/public/logo.svg b/app.engine.rule/src/main/resources/public/logo.svg new file mode 100644 index 00000000..2f63474f --- /dev/null +++ b/app.engine.rule/src/main/resources/public/logo.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app.engine.rule/src/main/resources/running-mode.properties b/app.engine.rule/src/main/resources/running-mode.properties new file mode 100644 index 00000000..e5b12e71 --- /dev/null +++ b/app.engine.rule/src/main/resources/running-mode.properties @@ -0,0 +1 @@ +development=true \ No newline at end of file diff --git a/app.platform/src/main/resources/mathml3/mathml3-common.xsd b/app.platform/src/main/resources/mathml3/mathml3-common.xsd deleted file mode 100755 index 98b801dc..00000000 --- a/app.platform/src/main/resources/mathml3/mathml3-common.xsd +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app.platform/src/main/resources/mathml3/mathml3-content.xsd b/app.platform/src/main/resources/mathml3/mathml3-content.xsd deleted file mode 100755 index 160c25be..00000000 --- a/app.platform/src/main/resources/mathml3/mathml3-content.xsd +++ /dev/null @@ -1,684 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app.platform/src/main/resources/mathml3/mathml3-presentation.xsd b/app.platform/src/main/resources/mathml3/mathml3-presentation.xsd deleted file mode 100755 index 418cbabc..00000000 --- a/app.platform/src/main/resources/mathml3/mathml3-presentation.xsd +++ /dev/null @@ -1,2151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app.platform/src/main/resources/mathml3/mathml3-strict-content.xsd b/app.platform/src/main/resources/mathml3/mathml3-strict-content.xsd deleted file mode 100755 index 869de61b..00000000 --- a/app.platform/src/main/resources/mathml3/mathml3-strict-content.xsd +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app.platform/src/main/resources/mathml3/mathml3.xsd b/app.platform/src/main/resources/mathml3/mathml3.xsd deleted file mode 100755 index 283c31e6..00000000 --- a/app.platform/src/main/resources/mathml3/mathml3.xsd +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/erm.frontend/.npmrc b/erm.frontend/.npmrc index dd3810ca..304f4652 100644 --- a/erm.frontend/.npmrc +++ b/erm.frontend/.npmrc @@ -3,6 +3,8 @@ registry=http://nexus.sc.io:8000/repository/npm-public/ # 用户邮箱 email= +# publish 时无需先进行 git 代码同步检查, 可避免 publish 时使用 --no-git-checks 选项 +git-checks=false # 注意: 以下 // 不是注释,不能去掉哦 # 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置 diff --git a/erm.frontend/package.json b/erm.frontend/package.json index bc9e4fea..bfdf3d64 100644 --- a/erm.frontend/package.json +++ b/erm.frontend/package.json @@ -23,92 +23,94 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.24.4", - "@babel/preset-env": "7.24.4", - "@babel/preset-typescript": "7.24.1", - "@babel/plugin-transform-class-properties": "7.24.1", - "@babel/plugin-transform-object-rest-spread": "7.24.1", - "@quasar/app-webpack": "3.12.5", - "@quasar/cli": "2.4.0", + "@babel/core": "7.24.7", + "@babel/preset-env": "7.24.7", + "@babel/preset-typescript": "7.24.7", + "@babel/plugin-transform-class-properties": "7.24.7", + "@babel/plugin-transform-object-rest-spread": "7.24.7", + "@quasar/app-webpack": "3.13.2", + "@quasar/cli": "2.4.1", "@types/mockjs": "1.0.10", - "@types/node": "20.12.7", - "@typescript-eslint/eslint-plugin": "7.7.1", - "@typescript-eslint/parser": "7.7.1", - "@vue/compiler-sfc": "3.4.24", + "@types/node": "20.14.10", + "@typescript-eslint/eslint-plugin": "7.15.0", + "@typescript-eslint/parser": "7.15.0", + "@vue/compiler-sfc": "3.4.31", "@webpack-cli/serve": "2.0.5", "autoprefixer": "10.4.19", "babel-loader": "9.1.3", "clean-webpack-plugin": "4.0.0", "copy-webpack-plugin": "12.0.2", "cross-env": "7.0.3", - "css-loader": "7.1.1", + "css-loader": "7.1.2", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-vue": "9.25.0", - "eslint-webpack-plugin": "4.1.0", + "eslint-plugin-vue": "9.27.0", + "eslint-webpack-plugin": "4.2.0", "html-webpack-plugin": "5.6.0", "json5": "2.2.3", "mini-css-extract-plugin": "2.9.0", - "nodemon": "3.1.0", - "postcss": "8.4.38", + "nodemon": "3.1.4", + "postcss": "8.4.39", "postcss-import": "16.1.0", "postcss-loader": "8.1.1", - "postcss-preset-env": "9.5.9", - "prettier": "3.2.5", - "sass": "1.75.0", + "postcss-preset-env": "9.6.0", + "prettier": "3.3.2", + "sass": "1.77.6", "sass-loader": "14.2.1", - "typescript": "5.4.5", + "typescript": "5.5.3", "vue-loader": "17.4.2", - "webpack": "5.91.0", + "webpack": "5.92.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4", - "webpack-merge": "5.10.0", + "webpack-merge": "6.0.1", "@vue/babel-plugin-jsx": "1.2.2" }, "dependencies": { - "@codemirror/autocomplete": "6.16.0", - "@codemirror/commands": "6.5.0", + "@codemirror/autocomplete": "6.17.0", + "@codemirror/commands": "6.6.0", "@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.6.3", + "@codemirror/lang-sql": "6.7.0", "@codemirror/lang-xml": "6.1.0", - "@codemirror/language": "6.10.1", + "@codemirror/language": "6.10.2", "@codemirror/search": "6.5.6", "@codemirror/state": "6.4.1", - "@codemirror/view": "6.26.3", - "@maxgraph/core": "0.10.0", - "@quasar/extras": "1.16.11", - "@vueuse/core": "10.9.0", - "axios": "1.6.8", + "@codemirror/view": "6.28.4", + "@maxgraph/core": "0.12.0", + "@quasar/extras": "1.16.12", + "@vueuse/core": "10.11.0", + "axios": "1.7.2", "codemirror": "6.0.1", - "dayjs": "1.11.10", - "echarts": "5.5.0", + "dayjs": "1.11.11", + "echarts": "5.5.1", "exceljs": "4.4.0", "file-saver": "2.0.5", "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.246", - "quasar": "2.15.3", - "tailwindcss": "3.4.3", - "vue": "3.4.24", - "vue-dompurify-html": "5.0.1", + "platform-core": "8.1.272", + "quasar": "2.15.4", + "tailwindcss": "3.4.4", + "vue": "3.4.31", + "vue-dompurify-html": "5.1.0", "vue-i18n": "9.13.1", - "vue-router": "4.3.2", - "@univerjs/core": "0.1.13", - "@univerjs/design": "0.1.13", - "@univerjs/docs": "0.1.13", - "@univerjs/docs-ui": "0.1.13", - "@univerjs/engine-formula": "0.1.13", - "@univerjs/engine-render": "0.1.13", - "@univerjs/facade": "0.1.13", - "@univerjs/sheets": "0.1.13", - "@univerjs/sheets-formula": "0.1.13", - "@univerjs/sheets-ui": "0.1.13", - "@univerjs/ui": "0.1.13" + "vue-router": "4.4.0", + "@univerjs/core": "0.2.0", + "@univerjs/design": "0.2.0", + "@univerjs/docs": "0.2.0", + "@univerjs/docs-ui": "0.2.0", + "@univerjs/engine-formula": "0.2.0", + "@univerjs/engine-render": "0.2.0", + "@univerjs/facade": "0.2.0", + "@univerjs/sheets": "0.2.0", + "@univerjs/sheets-formula": "0.2.0", + "@univerjs/sheets-ui": "0.2.0", + "@univerjs/ui": "0.2.0", + "pinia-undo": "0.2.4", + "xml-formatter": "3.6.3" } } \ No newline at end of file diff --git a/erm.frontend/webpack.config.mf.cjs b/erm.frontend/webpack.config.mf.cjs index 6425f66e..dd430adc 100644 --- a/erm.frontend/webpack.config.mf.cjs +++ b/erm.frontend/webpack.config.mf.cjs @@ -60,6 +60,18 @@ module.exports = { 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, + "xml-formatter": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/core": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/design": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-render": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/facade": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/ui": { requiredVersion: deps['vue-router'], singleton: true } } }), ] diff --git a/erm.frontend/webpack.env.build.cjs b/erm.frontend/webpack.env.build.cjs index 0776c382..fbcf0fbe 100644 --- a/erm.frontend/webpack.env.build.cjs +++ b/erm.frontend/webpack.env.build.cjs @@ -24,7 +24,7 @@ module.exports = merge(common, mf, { cacheGroups: { 'shared': { name: 'vue', - test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs)[\\/]/, + test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs|xml-formatter)[\\/]/, priority: 20, chunks: 'all', enforce: true @@ -71,6 +71,13 @@ module.exports = merge(common, mf, { chunks: 'all', enforce: true }, + '@univerjs': { + name: '@univerjs', + test: /[\\/]node_modules[\\/]@univerjs[\\/]/, + priority: 20, + chunks: 'all', + enforce: true + }, 'view': { name: 'view', test: /[\\/]view[\\/]/, diff --git a/frontend.sh b/frontend.sh new file mode 100755 index 00000000..69ce3d1e --- /dev/null +++ b/frontend.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +cd /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.engine.mv.frontend +gradle frontend + +cd /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.engine.rule.frontend +gradle frontend + +cd cd /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.engine.st.frontend +gradle frontend + +cd /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.platform.developer.frontend +gradle frontend + +cd /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.platform.lcdp.frontend +gradle frontend + +cd /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.platform.lcdp.frontend +gradle frontend + +cd /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.platform.mvc.frontend +gradle frontend + +cd /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.platform.security.frontend +gradle frontend + +cd /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.platform.system.frontend +gradle frontend + +cd /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/io.sc.standard.frontend +gradle frontend \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 3f53bb12..6d27c50a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,7 +38,7 @@ application_version=1.0.0 platform_group=io.sc platform_version=8.1.44 platform_plugin_version=8.1.44 -platform_core_frontend_version=8.1.246 +platform_core_frontend_version=8.1.273 ########################################################### # dependencies version @@ -48,6 +48,7 @@ asm_version=9.7 checker_version=3.43.0 commons_fileupload_version=1.4 commons_io_version=2.16.1 +commons_text_version=1.12.0 cxf_version=3.2.7 dm_hibernate_version=8.1.2.192 flowable_version=6.8.0 diff --git a/io.sc.engine.mv.doc/README.adoc b/io.sc.engine.mv.doc/README.adoc new file mode 100644 index 00000000..d6f029c7 --- /dev/null +++ b/io.sc.engine.mv.doc/README.adoc @@ -0,0 +1,3 @@ += 项目介绍 + + diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-appendix/appendix.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-appendix/appendix.adoc new file mode 100644 index 00000000..08630cbf --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-appendix/appendix.adoc @@ -0,0 +1,91 @@ +[appendix] += 附录 + +[#psi-custom-distribution-table] +== 群体稳定性报告需要开发样本数据(建模时的客户群体分布情况) + +|=== +|模型标识(FD_MODEL_ID) | 模型名称(FD_MODEL_NAME) | 分数段开始值(含)(FD_SCORE_SEG_START) | 分数段结束值(含)(FD_SCORE_SEG_END) | 客户个数(FD_COUNT) +|M1 | 模型1 | 0 | 154 | 2200 +|M1 | 模型1 | 155 | 194 | 1583 +|M1 | 模型1 | 195 | 234 | 1970 +|M1 | 模型1 | 235 | 274 | 2540 +|M1 | 模型1 | 275 | 314 | 2450 +|M1 | 模型1 | 315 | 354 | 1620 +|M1 | 模型1 | 355 | 394 | 1620 +|M1 | 模型1 | 395 | 434 | 2100 +|M1 | 模型1 | 434 | 1000 | 1250 +|=== + +TIP: 注意:上述分段看上去好像是按照分数进行等分的,其实并非如此,正确的分段方法是按照客户个数进行等分(当然,实际情况不可能按客户个数真正做到等分,通常通过人工进行基本等分即可),而分割的段数一般为 10 个分段。 + +系统提供界面给使用者录入上述表格数据,或者提供 Excel 模板,用户整理好后,由系统界面导入到后台数据库中。 + +在有了上述建模时的客户分布数据情况后,系统可以定期自动产生客户群体稳定性报告,在生成报告时,其分数段的划分和建模时导入的数据分数段划分保持一致。 + +TIP: 如果不能获取到建模时的客户分布情况数据,系统可以采用从上线后一定时间段的客户分布情况作为初始数据,其分数段划段原则为:尽可能平分客户个数,一般分10个段即可。 + +[#binomial_test_const_table] +== 二项检验常量表 + +image::chapter-appendix/001.png[] + +[%autowidth] +|=== +|显著水平 | 置信水平 | 正态分布Z值上界 | 正态分布Z值下界 +|0.01 | 0.99 | 2.576 | -2.576 +|0.05 | 0.95 | 1.96 | -1.96 +|0.1 | 0.9 | 1.645 | -1.645 +|=== + +TIP: 显著性水平的值越大,表示对模型的要求越高。 + +[#square_test_const_table] +== 卡方分布临界值常量表 +[%autowidth] +|=== +|自由度 | 显著水平 | | +| | 0.1 | 0.05 | 0.01 +|1 | 2.706 | 3.841 | 6.635 +|2 | 4.605 | 5.991 | 9.21 +|3 | 6.251 | 7.815 | 11.345 +|4 | 7.779 | 9.488 | 13.277 +|5 | 9.236 | 11.07 | 15.086 +|6 | 10.645 | 12.592 | 16.812 +|7 | 12.017 | 14.067 | 18.475 +|8 | 13.362 | 15.507 | 20.09 +|9 | 14.684 | 16.919 | 21.666 +|10 | 15.987 | 18.307 | 23.209 +|11 | 17.275 | 19.675 | 24.725 +|12 | 18.549 | 21.026 | 26.217 +|13 | 19.812 | 22.362 | 27.688 +|14 | 21.064 | 23.685 | 29.141 +|15 | 22.307 | 24.996 | 30.578 +|16 | 23.542 | 26.296 | 32 +|=== + +TIP: 显著性水平的值越大,表示对模型的要求越高。 + +== 模型验证系统数据源接口 +模型验证系统作为一个独立的系统,从系统角度讲具有高内聚性,但模型验证系统的验证样本需要外部系统供给,这些外部系统我们称之为数据源, +模型验证系统为数据源提供两个数据接口,只要数据源为模型验证系统提供了这两个接口的数据,模型验证系统即可正常工作。 + +. <> +. <> + +在实际进行系统集成时,只要按要求填充好以上两个数据表即可。 + +== 模型验证系统实现执行过程 +理解模型验证的系统实现过程,有利于理解系统的工作原理和结构,参考以下图示: + +image::chapter-appendix/002.png[] + +具体说明如下: + +. 图中每一框代表系统中的一个类或接口 +. 模型验证执行由 Validator 类(作为 spring bean)负责 +. Validator 类在执行时会先执行 DataExtractorManager 进行源数据抽取工作 +. Validator 类在执行时会然后执行 ExecutorManager 进行验证工作 +. DataExtractorManager 管理了多个 DataExtractor,会按照每个 DataExtractor 设定的执行顺序进行依次调用,顺序号越小,执行顺序越靠前。 +. ExecutorManager 管理了多个 Executor,会按照每个 Executor 设定的执行顺序进行依次调用,顺序号越小,执行顺序越靠前。 +. DataExtractor 和 Executor 都有一个或多个具体实现,负责完成具体的执行操作。 diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-估值准确性/二项检验/二项检验.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-估值准确性/二项检验/二项检验.adoc new file mode 100644 index 00000000..1ed1b4d2 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-估值准确性/二项检验/二项检验.adoc @@ -0,0 +1,69 @@ += 二项检验(保守度检验) +二项检验是在一个时期对模型单个等级的检验,即分别检验模型的每个等级所采用的违约概率是否合适,检验的步骤如下: + +[#binomial_test_data_repared] +== 准备建模时确定的各个等级对应的违约概率表 +通常在评级系统中,对标尺的划分是根据分数段来确定的,即当某个客户的评分处在[80,90]分数段内,对应的等级为 AAA,也就是说只要评分在 80 到 90 分之间,都对应等级 AAA。 + +在二项检验时,需要的是某个等级的违约概率,而这个概率是在建模时确定好的,所以需要初始化所有模型所有等级下的违约概率,和分数段对应等级不同的是,对于同一个等级下,其违约概率相同。 + +因此,为了能够进行二项检验,需要系统事先准备好模型等级的违约概率表(通常采用系统录入和导入方式实现),其示例及结构如下: + +|=== +|模型标识(FD_MODEL_ID) | 模型名称(FD_MODEL_NAME) | 等级(FD_LEVEL) | 违约概率(FD_PD) +|M1 | 模型1 | AAA+ | 0.001 +|M1 | 模型1 | AAA | 0.005 +|M1 | 模型1 | AAA- | 0.01 +|M1 | 模型1 | ... | ... +|M1 | 模型1 | C- | 0.1 +|M1 | 模型1 | ... | ... +|M2 | 模型2 | AAA+ | 0.005 +|M2 | 模型2 | AAA | 0.01 +|M2 | 模型2 | AAA- | 0.015 +|M2 | 模型2 | ... | ... +|M2 | 模型2 | C- | 0.1 +|... | ... | ... | ... +|=== + +上表中每一行代表某个模型的某个等级的建模时确定的违约概率。其字段意义说明如下: + +|=== +|字段中文名称 | 字段名称 | 字段类型 | 字段约束 | 备注 +|模型标识 | FD_MODEL_ID | varchar(32) | 不能为空 | +|模型名称 | FD_MODEL_NAME | varchar(100) | 不能为空 | +|等级 | FD_LEVEL | varchar(10) | 不能为空 | +|建模时确定的违约概率 | FD_PD | 小数(精度 6) | 不能为空 | +|=== + +== 统计并计算出用于二项检验的各个指标,生成以下数据表 + +image::chapter-correctness-of-estimating/001.png[] + +link:resources/files/chapter-correctness-of-estimating/binomial_test.xlsx[二项检验指标 Excel 模板] + +其字段意义说明如下: +|=== +|字段中文名称 | 字段名称 | 字段类型 | 字段约束 | 备注 +|模型标识 | FD_MODEL_ID | varchar(32) | 不能为空 | +|模型名称 | FD_MODEL_NAME | varchar(100) | 不能为空 | +|等级 | FD_LEVEL | varchar(10) | 不能为空 | +|建模时确定的违约概率 | FD_PD | 小数(精度 6) | 不能为空 | +|评级客户个数 | FD_COUNT | 整数 | 不能为空 | +|事实违约客户个数 | FD_DEFAULT_COUNT | 整数 | 不能为空 | +|正态分布平均数 | FD_ND_AVG | 小数(精度 6) | 不能为空 | +|正态分布标准差 | FD_ND_SD | 小数(精度 6) | 不能为空 | +|显著水平 | FD_SL | 小数(精度 6) | 不能为空 | <> +|置信水平 | FD_CL | 小数(精度 6) | 不能为空 | <> +|正态分布Z值上界 | FD_Z_UPPER | 小数(精度 6) | 不能为空 |<> +|正态分布Z值下界 | FD_Z_LOWER | 小数(精度 6) | 不能为空 | <> +|临界值上界 | FD_D_UPPER | 小数(精度 6) | 不能为空 | +|临界值下界 | FD_D_LOWER | 小数(精度 6) | 不能为空 | +|是否小于等于上界 | FD_LE_UPPER | 整数 | 不能为空 | 1:满足条件;0:不满足条件 +|是否大于等于下界 | FD_GE_LOWER | 整数 | 不能为空 | 1:满足条件;0:不满足条件 +|=== + +[TIP] +==== +. <>中列出了可选的三种情况(三行),在进行二项检验时,根据客户的需求选取一行即可。 +. 在进行二项检验时,可以采用双边检验,也可以采用单边检验。对于双边检验而言,需要在上下界均满足条件,即满足“小于等于上界”同时满足“大于等于下界” +==== diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-估值准确性/估值准确性.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-估值准确性/估值准确性.adoc new file mode 100644 index 00000000..adb7ae0a --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-估值准确性/估值准确性.adoc @@ -0,0 +1,4 @@ += 估值准确性验证 + +include::卡方检验/卡方检验.adoc[leveloffset=+1] +include::二项检验/二项检验.adoc[leveloffset=+1] diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-估值准确性/卡方检验/卡方检验.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-估值准确性/卡方检验/卡方检验.adoc new file mode 100644 index 00000000..15eaf145 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-估值准确性/卡方检验/卡方检验.adoc @@ -0,0 +1,39 @@ += 卡方检验(适合度检验) +卡方检验是在一个时期对模型所有等级的检验,即检验模型的所有等级及违约概率是否合适,检验的步骤如下: +== 准备建模时确定的各个等级对应的违约概率表 +该表同 <> 二项检验准备建模时确定的各个等级对应的违约概率表 + +== 统计并计算出用于卡方检验的各个指标,生成以下数据表 + +image::chapter-correctness-of-estimating/002.png[] + +link:resources/files/chapter-correctness-of-estimating/chi-square_test.xlsx[卡方检验指标 Excel 模板] + +其字段意义说明如下: + +|=== +|字段中文名称 | 字段名称 | 字段类型 | 字段约束 | 备注 +|模型标识 | FD_MODEL_ID | varchar(32) | 不能为空 | +|模型名称 | FD_MODEL_NAME | varchar(100) | 不能为空 | +|等级 | FD_LEVEL | varchar(10) | 不能为空 | +|建模时确定的违约概率 | FD_PD | 小数(精度 6) | 不能为空 | +|评级客户个数 | FD_COUNT | 整数 | 不能为空 | +|事实违约客户个数 | FD_DEFAULT_COUNT | 整数 | 不能为空 | +|卡方值 | FD_CHI_SQUARE | 小数(精度 6) | 不能为空 | +|=== + +== 汇总一个模型所有级别的卡方值,参照“卡方分布临界值常量表”进行对比 +将上述指标表按照模型对所有级别的卡方值求和,得到模型的卡方检验值,和“卡方分布临界值常量表”中对应的值进行比较, +如果模型的卡方检验值小于等于“卡方分布临界值常量表”中的值,表示该模型通过卡方检验,否则表示没有通过卡方检验。 + +对于上述示例来说,模型1的卡方检验值为 21.36777057,由于该模型包含3个等级,从 <> 中查找“自由度”为 3 对应的那行数据, + +---- +显著水平 0.1 0.05 0.01 +------------------------------ +1 2.706 3.841 6.635 +2 4.605 5.991 9.21 +3 6.251 7.815 11.345(自由度为3,选择此行最为参照数据) +---- + +通过比较,发现模型1的卡方检验值 21.36777057 不满足卡方分布临界值,所以该模型没有通过卡方检验。 diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-前言/前言.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-前言/前言.adoc new file mode 100644 index 00000000..72ea76c2 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-前言/前言.adoc @@ -0,0 +1,16 @@ += 前言 +模型的主要作用是通过历史预测未来,采用历史数据构建模型,并利用模型对未来进行预测。 +通过历史数据构建的模型反应的是历史的情况, +能够用于对未来进行预测的前提是假设未来一定时间内影响预测结果的因变量不会发生较大变化, +即未来一定时间内会延续历史。 + +随着时间和相关环境的变化,根据历史数据构建的模型是否还能具有较好的预测能力呢?这需要一些验证方法来鉴别。 + +在继续说明模型验证之前,我们先对“模型”进行一定的限定,对于衡量好坏客户(坏客户通常是指发生事实违约的客户)的风险模型来讲, +其预测的是未来一段时间内客户的违约概率(即违约的可能性),这种风险模型在构建时采用的目标样本是坏客户,即找出这些坏客户具有的共同特征, +所以在评判一个风险模型的好坏时,是看这个模型是否能够准确地分辨出坏客户,而不是该模型是否能够准确地分辨出好客户。 + +常见的对模型整体情况验证的方法主要包括: + +* 定量模型验证:模型区分能力验证、模型稳定性验证、估值准确性验证等。 +* 定性模型验证:治理结构、政策、流程、控制、文档管理、结果运用等。 diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/cap/cap.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/cap/cap.adoc new file mode 100644 index 00000000..8dad40f0 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/cap/cap.adoc @@ -0,0 +1,96 @@ += CAP 曲线及 AR 值 +CAP 曲线,也称作为累积准确曲线,AR 值,也称作为准确性比率 + +== CAP 曲线及 AR 值解读 +image::chapter-sc/cap/cap.png[] + +=== CAP 曲线坐标轴 + +. X轴(客户个数百分比): 评分小于等于某个分数的客户个数占整个客户个数的百分比 +. Y轴(违约个数百分比): 评分小于等于某个分数的实事违约客户个数占整个实事违约客户个数百分比 +. Z轴(截断点): 按评分进行分段 + +在实际绘制 CAP 曲线时,只包含 X 和 Y 轴,没有 Z 轴,这里为了便于理解,引入 Z 轴。那么 ROC 曲线是如何绘制的呢? + +同样需要引入截断点,截断点是将模型预测的得分进行等分,评级得分是一个整数,其取值范围可以是从 0 到 100,或者其他。假如我们将从 0 到 100 的得分等分为 100 个段,那么组成这些截断点的数列为(共101个): 1,2,3,...,99,100。这些截断点就构成了 Z 轴。 + +[%autowidth] +|=== +|截断点序号 | 截断点得分(小于等于) +| 1 | 0 +| 2 | 1 +| 3 | 2 +| ... | +| 100 | 99 +| 101 | 100 +|=== + +那么这些截断点在 CAP 曲线上所代表的含义是什么呢?在 CAP 曲线的 Z 轴(虚拟的)代表客户评分小于等于截断点的值。 + +. 截断点 0: 评分小于等于 0 分 +. 截断点 1: 评分小于等于 1 分 +. 截断点 100: 评分小于等于 100 分 +. 依次类推 + +=== CAP 曲线绘制 +在有了上述截断点的概念的情况下,我们就可以分别计算出在某个截断点(小于等于某个得分)的 X 轴和 Y 轴的坐标值, +这样就能根据截断点的个数绘制出多个坐标点,将这些坐标点通过平滑曲线连接, +便绘制出 CAP 曲线。 + +=== 随机模型(完全没有预测能力的模型)的表现 +==== 完美模型(理想模型)的表现 +==== 现实中较好模型的表现 +现实中较好的模型表现为介于完美模型和随机模型之间的曲线,曲线越接近于完美曲线越好。 + +==== AR 值 +直观的讲,AR 值就是下面面 CAP 曲线中两块面积的比值。 + +image::chapter-sc/cap/cap2.png[] + +image::chapter-sc/cap/ar.png[] + +其中 aR 为褐色部分的面积,aP 为褐色部分和黄色部分面积之和 + +. 完美模型 AR 值: 1 +. 随机模型 AR 值: 0 +. 现实中较好模型 AR 值: 介于完美模型和随机模型 AR 值之间,越接近 1 越好。 + +== CAP 曲线及 AR 值系统实现 +[#CAP_KPI] +=== CAP 指标表 +对每个需要验证的模型根据截断点分别对 <> 进行样本个数统计。 + +|=== +|模型标识 | 模型名称 | 截断点 | 评分小于等于截断点的客户个数 | 客户总数 | 评分小于等于截断点的事实违约客户个数 | 事实违约的总客户数 | 违约个数百分比(Y) | 客户个数百分比(X) +| | |评分小于等于 | TS | TT | TDS | TDT | TDS/TDT | TS/TT +|M1 | 模型1 | 0 | 1 | 100 | 1 | 10 | 0.1 | 0.01 +|M1 | 模型1 | 1 | 1 | 100 | 1 | 10 | 0.1 | 0.01 +|... | ... | ... | ... | ... | ... | ... | ... | ... +|M1 | 模型1 | 100 | 100 | 100 | 10 | 10 | 1 | 1 +|=== + +上表中每一行代表某个模型的一个截断点下的违约客户个数百分比和客户个数百分比。其字段意义说明如下: + +|=== +| 字段中文名称 | 字段名称 | 字段类型 | 字段约束 | 备注 + +| 模型标识 | FD_MODEL_ID | varchar(32) | 不能为空 | +| 模型名称 | FD_MODEL_NAME | varchar(100) | 不能为空 | +| 平分率截断点 | FD_SCORE_CUT_OFF_POINT | 整数 | 不能为空 | 对平分进行平分,代表在小于等于截断点时的数据 +| 评分小于等于截断点的客户个数 | FD_TS | 整数 | 不能为空 | +| 客户总数 | FD_TT | 整数 | 不能为空 | +| 评分小于等于截断点的事实违约客户个数 | FD_TDS | 整数 | 不能为空 | +| 事实违约的总客户数 | FD_TDT | 整数 | 不能为空 | +| 违约个数百分比(Y) | FD_Y | 小数(精度 6) | 不能为空 | FD_Y=FD_TDS/FD_TDT +| 客户个数百分比(X) | FD_X | 小数(精度 6) | 不能为空 | FD_X=FD_TS/FD_TT +|=== + +=== CAP 曲线绘制 +通过 <> 中的 X 和 Y 值 绘制并连接各个点 + +=== AR 值计算 +在具体的实现时,可以采用分割成多个梯形进行面积相加。 + +计算公式: + +image::chapter-sc/cap/ar2.png[] diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/ks/ks.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/ks/ks.adoc new file mode 100644 index 00000000..b16f0d85 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/ks/ks.adoc @@ -0,0 +1,59 @@ += KS 曲线及 KS 值 +== KS 曲线及 KS 值解读 + +image::chapter-sc/ks/ks.png[] + +=== KS 曲线坐标轴 + +* X轴(模型预测得分): 模型预测得分小于等于某个分数 +* Y轴(正常/违约客户占总正常/违约客户百分比): 模型预测得分小于等于某个分数的情况下,分别统计占比 + +在 KS 曲线中包含两条曲线: + +* 正常客户KS曲线:模型预测得分小于等于某个分数时,正常的客户占所有正常客户的百分比 +* 违约客户KS曲线:模型预测得分小于等于某个分数时,违约的客户占所有违约客户的百分比 + +=== KS 曲线绘制 + +=== KS 值 +直观的讲,就是两条 KS 曲线相距最远的线段的长度,即上图中红色的线段的长度。 + +== KS 曲线及 KS 值系统实现 + +[#KS_KPI] +=== KS 指标表 +对每个需要验证的模型根据模型预测评分分别对 <> 进行样本个数统计。 + +. KS 指标表: MV_SC_KS_KPI +|=== +|模型标识 | 模型名称 | 评分截断点(X) | 评分小于等于截断点事实正常的客户个数 | 事实正常的总客户个数 | 评分小于等于截断点事实违约客户个数 | 事实违约的总客户个数 | 正常客户占比(Y1) | 违约客户占比(Y2) +| | | 小于等于 | N | TN | D | TD | N/TN | D/TD +|M1 | 模型1 | 0 | 0 | 90 | 0 | 10 | 0 | 0 +|... | ... | ... | ... | ... | ... | ... | ... | ... +|M1 | 模型1 | 50 | 3 | 90 | 3 | 10 | 0.033 | 0.3 +|... | ... | ... | ... | ... | ... | ... | ... | ... +|M1 | 模型1 | 100 | 90 | 90 | 10 | 10 | 1 | 1 +|=== + +上表中每一行代表某个模型的一个截断点下的正常客户占比和违约客户占比。其字段意义说明如下: +|=== +|字段中文名称 | 字段名称 | 字段类型 | 字段约束 | 备注 +|模型标识 | FD_MODEL_ID | varchar(32) | 不能为空 | +|模型名称 | FD_MODEL_NAME | varchar(100) | 不能为空 | +|平分率截断点(X) | FD_SCORE_CUT_OFF_POINT | 整数 | 不能为空 | 对平分进行平分,代表在小于等于截断点时的数据 +|评分小于等于截断点事实正常的客户个数 | FD_N | 整数 | 不能为空 | +|事实正常的总客户个数 | FD_TN | 整数 | 不能为空 | +|评分小于等于截断点事实违约客户个数 | FD_D | 整数 | 不能为空 | +|事实违约的总客户个数 | FD_TD | 整数 | 不能为空 | +|正常客户占比(Y1) | FD_Y1 | 小数(精度 6) | 不能为空 | FD_Y1=FD_N/FD_TN +|违约客户占比(Y2) | FD_Y2 | 小数(精度 6) | 不能为空 | FD_Y2=FD_D/FD_TD +|=== + +=== KS 曲线绘制 + +* 通过 <> 中的 X 和 Y1 值 绘制并连接各个点形成正常客户的 KS 曲线。 +* 通过 <> 中的 X 和 Y2 值 绘制并连接各个点形成违约客户的 KS 曲线。 +* 将两条曲线绘制在同一张坐标系中 + +=== KS 值计算 +max(Y1-Y2) diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/roc/roc.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/roc/roc.adoc new file mode 100644 index 00000000..5ae3099d --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/roc/roc.adoc @@ -0,0 +1,113 @@ += ROC 曲线及 AUC 值 +== ROC 曲线及 AUC 值解读 + +image::chapter-sc/roc/roc.png[] + +=== ROC 曲线坐标轴 +. X轴(误警率): 模型在某个截断点的误警率 +. Y轴(命中率): 模型在某个截断点的命中率 +. Z轴(截断点): 按预测违约概率进行分段 + +在实际绘制 ROC 曲线时,只包含 X 和 Y 轴,没有 Z 轴,这里为了便于理解,引入 Z 轴。那么 ROC 曲线是如何绘制的呢? + +模型区分能力验证主要验证模型预测情况和实际表现情况的关系。对于风险模型,模型预测的是一个客户的违约概率,模型的实际表现情况是一个客户是否违约。 +两者是不能直接进行比较的,所以需要引入截断点,截断点是将模型预测的违约概率进行等分,我们知道违约概率是一个介于 0 到 1 的百分比数, +假如我们将其等分为 20 个段,那么组成这些截断点的数列为(共21个): 1,0.95,0.90,0.85,...,0.05,0。这些截断点就构成了 Z 轴。 + +[%autowidth] +|=== +| 截断点序号 | 截断点违约概率(大于等于) +| 1 | 1.00 +| 2 | 0.95 +| 3 | 0.90 +| 4 | 0.85 +| 5 | 0.80 +| 6 | 0.75 +| 7 | 0.70 +| 8 | 0.65 +| 9 | 0.60 +| 10 | 0.55 +| 11 | 0.50 +| 12 | 0.45 +| 13 | 0.40 +| 14 | 0.35 +| 15 | 0.30 +| 16 | 0.25 +| 17 | 0.20 +| 18 | 0.15 +| 19 | 0.10 +| 20 | 0.05 +| 21 | 0.00 +|=== + + +那么这些截断点在 ROC 曲线上所代表的含义是什么呢?在 ROC 曲线的 Z 轴(虚拟的)代表当模型预测的违约概率大于等于其截断点值时被认为预测此客户为违约。 + +. 截断点 1 : 把模型预测违约概率为 1 的客户认定为模型预测此客户将违约 +. 截断点 0.95: 把模型预测违约概率大于等于 0.95 的客户认定为模型预测此客户将违约 +. 截断点 0.90: 把模型预测违约概率大于等于 0.90 的客户认定为模型预测此客户将违约 +. 依次类推 + +=== ROC 曲线绘制 +在有了上述截断点的概念的情况下,我们就可以分别计算出在某个截断点(大于等于某个违约概率被认为预测为违约)模型的命中率和误警率, +然后在基于命中率和误警率坐标系中绘制一个点,这样就能根据截断点的个数绘制出多个坐标点,将这些坐标点通过平滑曲线连接,便绘制出 ROC 曲线。 + +=== 随机模型(完全没有预测能力的模型)的表现 +此类模型在任何一个截断点下,其命中率(预测成功率)和误警率(预测失败率)相同,那就等于用扔硬币猜正反面来预测,所以此类模型不具有预测能力。在上图中表现为正方形的对角线。 + +=== 完美模型(理想模型)的表现 +如果一个模型预测为违约客户,而实际上这些客户就发生了违约,那么这个模型就是完美的,即和实际一致。在上图中表现为一条水平线段(命中率为 1 的水平线段)。 + +=== 现实中较好模型的表现 +现实中较好的模型表现为介于完美模型和随机模型之间的曲线,曲线越接近于完美曲线越好。 + +=== AUC 值 +直观的讲,AUC 的值就是上面 ROC 曲线和 X 轴构成的图像的面积,即小图中黄色部分的面积。 + +image::chapter-sc/roc/roc2.png[] + +. 完美模型 AUC 值: 1*1 =1 +. 随机模型 AUC 值: 1*1/2 =0.5 +. 现实中较好模型 AUC 值: 介于完美模型和随机模型 AUC 值之间,越接近 1 越好。 + +== ROC 曲线及 AUC 值系统实现 +[#ROC_KPI] +=== ROC 指标表 +对每个需要验证的模型根据截断点分别对 <> 进行样本个数统计。 +|=== +| 模型标识 | 模型名称 | 截断点 | 实际违约且预测违约样本总数 | 实际违约且预测正常样本总数 | 实际正常且预测违约样本总数 | 实际正常且预测正常样本总数 | 实际违约样本总数 | 实际正常样本总数 | 违约预测命中率(Y) | 违约预测误警率(X) +| | | 大于等于 | DD | DN | ND | NN | TD=DD+DN | TN=ND+NN | DD/TD | ND/TN +| M1 | 模型1 | 1 | 10 | 1 | 2 | 20 | 11 | 22 | 0.9091 | 0.0909 +| M1 | 模型1 | 0.95 | 10 | 1 | 2 | 20 | 11 | 22 | 0.9091 | 0.0909 +| M1 | 模型1 | 0.90 | 10 | 1 | 2 | 20 | 11 | 22 | 0.9091 | 0.0909 +| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... +| M1 | 模型1 | 0.05 | 10 | 1 | 2 | 20 | 11 | 22 | 0.9091 | 0.0909 +| M1 | 模型1 | 0 | 10 | 1 | 2 | 20 | 11 | 22 | 0.9091 | 0.0909 +|=== + +上表中每一行代表某个模型的一个截断点下的命中率和误警率。其字段意义说明如下: +|=== +| 字段中文名称 | 字段名称 | 字段类型 | 字段约束 | 备注 + +| 模型标识 | FD_MODEL_ID | varchar(32) | 不能为空 | +| 模型名称 | FD_MODEL_NAME | varchar(100) | 不能为空 | +| 违约概率截断点 | FD_PD_CUT_OFF_POINT | 小数(精度 6) | 不能为空 |对违约概率进行平分,代表在大于等于截断点时的数据 +| 实际违约且预测违约样本总数 | FD_DD | 整数 | 不能为空 | +| 实际违约且预测正常样本总数 | FD_DN | 整数 | 不能为空 | +| 实际正常且预测违约样本总数 | FD_ND | 整数 | 不能为空 | +| 实际正常且预测正常样本总数 | FD_NN | 整数 | 不能为空 | +| 实际违约样本总数 | FD_DT | 整数 | 不能为空 | FD_DT=FD_DD+FD_DN +| 实际正常样本总数 | FD_NT | 整数 | 不能为空 | FD_NT=FD_ND+FD_NN +| 违约预测命中率(Y) | FD_Y | 小数(精度 6) | 不能为空 | FD_Y=FD_DD/FD_TD +| 违约预测误警率(X) | FD_X | 小数(精度 6) | 不能为空 | FD_X=FD_ND/FD_TN +|=== + +=== ROC 曲线绘制 +通过 <> 中的 X 和 Y 值 绘制并连接各个点 + +=== AUC 值计算 +在具体的实现时,可以采用分割成多个梯形进行面积相加。 + +计算公式: + +image::chapter-sc/roc/auc.png[] diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/区分能力.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/区分能力.adoc new file mode 100644 index 00000000..2ef562a8 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-区分能力/区分能力.adoc @@ -0,0 +1,18 @@ += 模型区分能力验证 +通过模型区分能力的验证,可以鉴别模型区分好坏客户的能力(即可以鉴别模型预测的效果), +常用方法:ROC曲线(AUC值), CAP曲线(AR值), KS曲线(KS值)等。 + +模型的区分能力高低决定了模型预测效果的好坏,理论上讲,一个完美(理想)的模型将会是这样的:模型预测某个客户在将来一段时间内会违约,实际上这个客户在将来一段时间内就发生了事实违约。 + +事实上一个风险模型预测的是一个客户在未来一段时间内的违约概率,注意是概率而不是预测客户是否违约。在实际使用中,我们可以对预测的违约概率进行截断点处理,即当预测某个客户的违约概率大于某一个固定值(例如: 90%),那么就认为模型预测某个客户在未来一段时间内会违约。 + +[TIP] +==== +一个风险模型的主要目的是管控风险,一个好的风险模型应该能够鉴别坏的客户,通俗的讲就是这个模型能够尽可能地找到可能为坏的客户,即便将部分事实上好的客户判断为坏的客户也是可以接受的。 + +对于银行来说,即便误判了一些好的客户,减少了一定的业务利润,但却拒绝了大多数坏的客户,减少了大的损失,这一点对于对大额贷款的公司类客户显得更为重要。当然这也不能过分,过分的拒绝客户,就影响业绩,极端的情况就是什么业务也不做,自然也就没有风险,但也没有任何利润。 +==== + +include::roc/roc.adoc[leveloffset=+1] +include::cap/cap.adoc[leveloffset=+1] +include::ks/ks.adoc[leveloffset=+1] diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/操作手册.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/操作手册.adoc new file mode 100644 index 00000000..127c4e8a --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/操作手册.adoc @@ -0,0 +1,5 @@ += 操作手册 + +include::验证结果/验证结果.adoc[leveloffset=+1] +include::样本管理/样本管理.adoc[leveloffset=+1] +include::配置/配置.adoc[leveloffset=+1] diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/样本管理/样本管理.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/样本管理/样本管理.adoc new file mode 100644 index 00000000..e3e659ee --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/样本管理/样本管理.adoc @@ -0,0 +1,6 @@ += 样本管理 +== 评分记录 +image::chapter-use-help/sample/001.png[] + +== 违约记录 +image::chapter-use-help/sample/002.png[] \ No newline at end of file diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/配置/配置.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/配置/配置.adoc new file mode 100644 index 00000000..1a916dc9 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/配置/配置.adoc @@ -0,0 +1,27 @@ += 配置 +== 执行器 +image::chapter-use-help/configure/001.png[] + +== 评分截断点 +image::chapter-use-help/configure/002.png[] + +== 预警阈值 +image::chapter-use-help/configure/003.png[] + +== 二项检验 Z 值常量 +image::chapter-use-help/configure/004.png[] + +== 卡方分布临界值常量 +image::chapter-use-help/configure/005.png[] + +== 模型 +image::chapter-use-help/configure/006.png[] + +== 建模时评分分布 +image::chapter-use-help/configure/007.png[] + +== 标尺 +image::chapter-use-help/configure/008.png[] + +== 数据抽取器 +image::chapter-use-help/configure/009.png[] \ No newline at end of file diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/验证结果/验证结果.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/验证结果/验证结果.adoc new file mode 100644 index 00000000..a9cf43d4 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-操作手册/验证结果/验证结果.adoc @@ -0,0 +1,41 @@ += 验证结果 +== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新验证结果 +| 执行验证 | 执行验证 +| 详情 | 查看验证结果详细信息 +| 删除 | 删除验证结果 +| 查看 | 查看当前选择的验证结果的详细信息 +| 导出 | 将当前验证结果导出成 csv 文件 +|=== + +== 执行验证 +image::chapter-use-help/result/001.png[] + +点击 "执行验证" 按钮, 系统弹出对话框, 输入执行参数, 点击 "立即执行" 按钮。 + +image::chapter-use-help/result/002.png[] + +执行完成后, 系统生成验证结果。 + +image::chapter-use-help/result/003.png[] + +== 查看验证结果摘要 +image::chapter-use-help/result/004.png[] + +== 查看验证结果详情 +选择要查看的验证结果摘要, 点击 "详情" 按钮, 打开验证结果详情对话框。 + +区分能力: + +image::chapter-use-help/result/005.png[] + +稳定性: + +image::chapter-use-help/result/006.png[] + +标尺检验 + +image::chapter-use-help/result/007.png[] \ No newline at end of file diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-概述/概述.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-概述/概述.adoc new file mode 100644 index 00000000..7069c38c --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-概述/概述.adoc @@ -0,0 +1,62 @@ += 模型验证概述 +上述提到的常见的三种验证方法(模型区分能力验证、模型稳定性验证、估值准确性验证), +均是对模型的整体情况进行验证,也就是从三个方面(维度)来检验模型的总体情况如何。 + +== 模型验证阶段、验证内容及方法、验证主体约束 +image::chapter-summary/001.png[] + +以上是根据银监会的监管框架要求总结了关于模型验证阶段、验证内容及方法、验证主体相关约束,具体说明如下: + +. 返回检验: 是指模型定量验证的方法,简单来说是通过实际表现和预测结果进行比较进行验证的一种方法。 +. 按模型验证阶段主要分为:投产前、投产后两个主要阶段,所谓投产前是指咨询建模完成后,模型还没有应用到实际的业务系统中(即系统还未落地实施);而投产后是指模型已经应用到实际业务系统中(即咨询建模的成果已经通过系统实施完成,并在实际业务中使用模型) +. 按模型验证内容主要分为:定量验证和定性验证,请注意,这里所说的定量、定性与指标类型中的定量、定性不是一个概念。模型定量验证部分主要是通过标准的数理统计验证算法(区分能力验证、稳定性验证、估值准确性验证等)对模型进行验证(通常可以获得定量的验证结果),而模型定性验证部分则是从治理结构、政策、流程、文档等方面进行验证。 +. 按模型验证内容还可以分为:全面验证和持续监控,全面验证同时包含定量和定性验证,而持续监控只包含定量验证。 +. 模型开发主体:指咨询建模的公司或组织(国际著名的四大会计公司:普华永道、毕马威、德勤、安永,其他咨询公司:SAS、FICO等) +. 模型应用主体:指实际使用模型的公司或组织(通常指银行) +. 主体保持独立:指主体间不能相同或相关,例如投产前全面验证需要满足:“与模型开发主体和模型应用主体保持独立”,表示进行验证的单位或组织不能是模型的开发主体,也不能是模型的应用主体,即进行验证的单位或组织是第三方(不能是开发时的咨询公司,也不能是银行应用、开发模型的团队) + +== 定量模型验证的三个维度 +image::chapter-summary/002.png[] + +具体说明如下: + +. 定量模型验证的三个维度(即三个主要验证方面):模型区分能力、模型稳定性、模型估值准确性 +. 模型区分能力: 对于模型整体定量验证而言,模型区分能力验证是验证模型对坏客户的鉴别能力(模型总得分越低,客户变为坏客户的可能性越大),对于单指标的区分能力验证,模型区分能力验证是验证单个指标对鉴别坏客户的能力(通常表现为单指标的单调性,即单指标的得分越低,客户变坏(违约)的可能性越大) +. 模型稳定性: 主要用于分析客户群体是否发生较大变化,通常在咨询建模期间,建模者会对客户群体进行划分,分别计算出各个群体在整个群体中的占比,在实际应用模型过程中,如果这种占比发生了较大变化,说明模型变得不够稳定了。 +. 估值准确性: 估值准确性的验证,通常包含卡方检验和二项检验,卡方检验主要检验的是模型标尺的整体划分是否符合要求,而二项检验主要检验的是模型标尺单级别的违约概率设置是否符合要求。 + +== 定量模型验证三个维度的验证顺序 +通常在对模型进行定量验证时采用的方法(即验证维度)分为三种:模型区分能力、模型稳定性、模型估值准确性, +那这三种验证方法的顺序和重要性又是怎样的呢?以下给出在实际模型定量验证采用的通用工作流程。 + +image::chapter-summary/003.png[] + +具体说明如下: + +. 首先进行模型整体区分能力验证,如果没有通过,则表明模型在整体预测方面已经出现问题(即当前实际情况与建模时的情况发生了较大变化),通常需要考虑重新建模,即对组成模型的各个指标以及权重进行重新调整,如果条件允许,可以对单指标进行区分能力检验,分析具体是哪些指标对模型区分好坏客户能力失去了作用,为模型调整提供依据。 +. 如果通过了模型的区分能力验证,再进行模型稳定性验证,如果没有通过模型稳定性验证,通常也需要考虑对模型进行调整,通过分析单个特征变量客户群的变化,能够为模型调整提供依据。 +. 如果通过了区分能力和稳定性验证,再进行模型估值准确性验证,在进行模型估值准确性验证时,通常采用两种检验方法:卡方检验和二项检验。在实际操作时,一般先进行卡方检验,该检验验证的是模型的标尺划分是否合理,如果没有通过,需要考虑对标尺进行重新划分,在通过卡方检验之后,再进行二项检验,该检验验证的是标尺中单个级别的违约概率设置是否合适,如果没有通过二项检验,需要考虑重新调整单级别的违约概率。 + +== 模型验证总体功能 +image::chapter-summary/functions.png[] + +具体说明如下: + +. 在进行模型验证之前需要准备必须的数据,这些数据主要包含两方面:评级及违约相关的数据;咨询建模数据。 +.. 评级及违约相关的数据是最重要的,也是必须的。 +.. 咨询建模数据,仅用于模型稳定性验证中计算 PSI 时使用(如果无法获取,可采用评级系统上线后一段时间内的数据代替)。 +. 模型验证系统所需的数据可通过数据抽取模块将其加载到模型验证系统中。此模块的具体实现可根据情况而定(可以通过 SQL 语句直接从源系统中抽取,也可以通过 ETL 方式加载到系统中,甚至也可以通过 xls 导入到系统中),目的是将这些需要的数据导入到模型验证系统中固定的数据表和字段中 +. 在所需的数据导入到模型验证系统后,首先需要进行的就是对这些数据(我们称之为验证样本)进行一些过滤,生成合格的验证样本用于后续的验证操作。 +. 在有了合格的验证样本后,通过验证算法对模型进行实际的验证处理,并将验证处理的结果保存到模型验系统的数据库中,以便后续展示给使用者。 +. 模型验证实际处理逻辑执行完毕后,就可以查看验证结果了。 +.. “模型区分能力验证结果”,“模型稳定性验证结果”,“模型估值准确性验证结果”分别对应的是模型验证的三个维度的详细结果信息; +.. “模型验证结果摘要”是展示对一个模型的总体验证结果摘要信息,包含上述三个维度验证结果:AUC,AR,KS,PSI,是否通过卡方检验,是否通过二项检验;查看参与本次模型验证验证样本相关数据信息 + +== 模型验证系统数据架构 +image::chapter-summary/structure.png[] + +具体说明如下: + +. 模型验证数据来源于“源系统”,主要分为评级相关、违约相关和咨询建模相关三部分 +. 数据表分为计算相关和历史相关两大类 +. 验证结果分为单项和总体两个层面 \ No newline at end of file diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-源数据/源数据.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-源数据/源数据.adoc new file mode 100644 index 00000000..9df5c84b --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-源数据/源数据.adoc @@ -0,0 +1,16 @@ += 模型验证源数据 +模型验证源数据作为模型验证的必要条件,是完成模型验证的第一个也是最重要的一个环节,主要涉及的源数据包括:评级及违约相关数据和咨询建模相关数据。 + +== 评级及违约相关数据 +模型验证中一个最重要的验证就是模型的区分能力验证,该验证主要是通过模型的预测结果和实际结果来进行,其中模型的预测结果通常对应客户的评级结果,而模型的实际结果通常对应客户的实际违约情况。 + +== 咨询建模相关数据 +=== 群体稳定性报告需要开发样本数据(建模时的客户群体分布情况) +在生成客户群体稳定性报告时,需要用到建模时的客户群体分布情况,详情参见 <> + +== 常量和配置相关数据 +=== 二项检验常量表 +在进行二项检验时,需要用到二项检验常量表,详情参见 <> + +=== 卡方分布临界值常量表 +在进行卡方检验时,需要用到卡方分布临界值常量表,详情参见 <> diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/区分能力变动曲线/区分能力变动曲线.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/区分能力变动曲线/区分能力变动曲线.adoc new file mode 100644 index 00000000..b1ede8d1 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/区分能力变动曲线/区分能力变动曲线.adoc @@ -0,0 +1,8 @@ +== 区分能力变动曲线 +根据银监会的监管要求,“商业银行应当对不同时间段模型区分能力的稳定性进行验证,并确保模型区分能力超过设定时限后随时间段长度的增大而逐渐减弱而非骤降。” +因此,考虑对模型区分能力验证工具的AR值、KS值的稳定性进行验证, +展示一年或三年内模型的AR值、KS值的变动曲线,如果有骤降的情况发生,需检查原因,考虑建立更长时期的模型。 + +image::chapter-stability/sc-change/001.png[] + +在系统实现时,采用系统定期跑批数据(排除人工运行产生的数据)绘制变化曲线。 \ No newline at end of file diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/客户群体稳定性报告/客户群体稳定性报告.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/客户群体稳定性报告/客户群体稳定性报告.adoc new file mode 100644 index 00000000..cf1e952e --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/客户群体稳定性报告/客户群体稳定性报告.adoc @@ -0,0 +1,16 @@ += 客户群体稳定性报告 +通过对模型发展群体(开发样本)的评分分布百分比和模型实施群体(实施样本)评分百分比的比较,转换,统计出一个反映从模型发展到模型实施的客户群体变化幅度大小的稳定性指数PSI(Population Shift Index)。指数越高,稳定性越低,客户群体的评分分布变化越大。一般来说: + +* PSI 在 0.1 以下意味着从模型发展群体到模型实施群体的评分分布之间的变化很小,稳定性较高。 +* PSI 在 0.1-0.25 之间意味着从模型发展群体到模型实施群体的评分分布之间发生了变化,需要关注。 +* PSI 0.25 以上意味着从模型发展群体到模型实施群体的评分分布之间发生了较大变化。 + +如果稳定指数在 0.25 以上,银行应该进一步通过变量分析报告来分析客户群体变化的趋势,以找到导致评分大幅度变化的原因,并决定是否需要作适当调整。 + +== 客户群体稳定性报告模板及其计算方法 +image::chapter-stability/psi/001.png[] + +link:resources/files/chapter-stability/psi.xlsx[客户群体稳定性报告 Excel 模板] + +== 客户群体稳定性报告系统实现 +在生成客户群体稳定性报告时,需要用到建模时的客户群体分布情况,详情参见 <> \ No newline at end of file diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/稳定性.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/稳定性.adoc new file mode 100644 index 00000000..d41083d2 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/稳定性.adoc @@ -0,0 +1,10 @@ += 稳定性验证 +稳定性是指模型对时间和宏观环境的变化保持稳定。具体的模型验证工具主要包括: + +. 转移分析 +. 客户群体稳定性报告 +. 区分能力变动曲线 + +include::转移分析/转移分析.adoc[leveloffset=+1] +include::客户群体稳定性报告/客户群体稳定性报告.adoc[leveloffset=+1] +include::区分能力变动曲线/区分能力变动曲线.adoc[leveloffset=+1] diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/转移分析/转移分析.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/转移分析/转移分析.adoc new file mode 100644 index 00000000..a0a24e7d --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-稳定性/转移分析/转移分析.adoc @@ -0,0 +1,43 @@ += 转移分析 +转移分析是通过构建评级等级的转移矩阵,观察等级的变化情况,从而判断模型是否稳定。 + +转移矩阵分析是假设在最稳定的模型中,其它条件不变的情况下,同一评级客户前后期的评级等级应当维持不变。由此可知在最稳定的模型情况下,其转移矩阵表现为如下状态: + +image::chapter-stability/transition_matrix/001.png[] + +但在实际情况下,这种理论上的稳定模型是不存在的,一定会出现等级转移的情况。 + +在进行转移分析来判断模型的稳定性时,可通过以下步骤进行: + +== 建立转移矩阵 +转移矩阵实际上是转置概率矩阵,这里出转置概率的定义及其含义: + +image::chapter-stability/transition_matrix/002.png[] + +以下通过实例说明如何建立转移矩阵: + +假定 1 年前评级等级为 5 的客户个数总共有 10 个,1 年后这 10 个客户的评级等级发生如下变化: + +* 这 10 个客户中有 2 个的评级等级变成了 4 +* 这 10 个客户中有 3 个的评级等级变成了 6 +* 这 10 个客户中有 5 个的评级等级与 1 年前相同,等级为 5 + +那么对于评级等级为 5 的转移矩阵为 + +image::chapter-stability/transition_matrix/003.png[] + +== 观察分析转移矩阵 +在观察和分析转移矩阵时,我们可以从以下两个方面进行分析 + +. 转移概率是否随着等级变动的幅度加大而递减,其业务含义为:即便等级有发生变化,但变化越小,模型的稳定性才越好。 +. 等级大幅度的变动是否属于合理范围,其业务含义为:当发现等级的变化幅度较大时,需要判断是否从业务角度有合理的解释。 + +== 观察多个连续的转移矩阵 +通过观察多个连续的转移矩阵(至少跨2个时间周期,产生2个转移矩阵),即对评级等级变化情况进行多次持续跟踪, +观察是否出现评级等级变化回复的情况(例如:评级等级在第一年到第二年发生了调高,而第二年到第三年又回调到第一年的等级;或评级等级在第一年到第二年发生了调低,而第二年到第三年又回调到第一年的等级)。 +回复的比率越高,则代表模型的稳定性越高。 + +== 计算转移矩阵的SVD值(Singular Value Decomposition:奇异值分解方法),衡量评级变动的程度 +SVD值可以作为评估评级稳定性的量化指标,其值越小,表示评级等级变动的幅度越小,说明模型越稳定。 + +SVD值的计算方法如下: diff --git a/io.sc.engine.mv.doc/asciidoc/chapter-验证样本/验证样本.adoc b/io.sc.engine.mv.doc/asciidoc/chapter-验证样本/验证样本.adoc new file mode 100644 index 00000000..b453457a --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/chapter-验证样本/验证样本.adoc @@ -0,0 +1,124 @@ += 模型验证合格验证样本 +模型验证的准确性在很大程度上依赖于验证样本选取的正确性和合理性, +一个可用于模型验证的样本数据应该包含两个方面的信息: + +* 模型的预测信息(评级信息) +* 模型的实际表现信息(违约确定信息) + +我们先对这两个部分的信息进行适当的解释,之后,我们再给出如何选取一个合格的模型验证样本。 + +[#MV_SCORE_RECORD] +== 模型的预测信息(评级信息) +通常一个模型对客户的预测信息存在于评级系统中,一个最基本的预测信息包含的数据结构如下: + +. 评级预测记录表(模型预测表):MV_SCORE_RECORD +|=== +| 客户标识 | 模型标识 | 模型名称 | 评级结果(违约概率) | 评级结果(得分) | 评级结果(等级) | 评级有效期开始日期(评级生效日期) | 评级有效期结束日期(评级失效日期) + +| A | M1 | 模型1 | 0.001 | 90 | 5 | 2013-01-01 | 2013-12-30 +| A | M1 | 模型1 | 0.0015 | 80 | 6 | 2014-01-01 | 2014-12-30 +| A | M1 | 模型1 | 0.0012 | 85 | 6 | 2014-06-01 | 2015-05-31 +| A | M1 | 模型1 | 0.005 | 60 | 10 | 2015-09-01 | 2016-08-31 +|=== + +上表中每一行代表一次有效评级。其字段意义说明如下: +|=== +| 字段中文名称 | 字段名称 | 字段类型 | 字段约束 | 备注 + +| 客户标识 | FD_CUSTOM_ID | varchar(32) | 不能为空 | +| 模型标识 | FD_MODEL_ID | varchar(32) | 不能为空 | +| 模型名称 | FD_MODEL_NAME | varchar(100) | 不能为空 | +| 评级结果(违约概率) | FD_PD | 小数(精度 6) | 不能为空 | 通过模型计算出的违约概率,非经人工调整后的违约概率 +| 评级结果(得分) | FD_SCORE | 整数 | 不能为空 | 通过模型计算出的得分,非经人工调整后的得分 +| 评级结果(等级) | FD_LEVEL | varchar(10) | 不能为空 | 通过模型计算出的等级,非经人工调整后的等级 +| 评级有效期开始日期(评级生效日期) | FD_SCORE_BEGIN_DATE | date | 不能为空 | +| 评级有效期结束日期(评级失效日期) | FD_SCORE_END_DATE | date | 不能为空 | +|=== + +我们先看一看一个通用的评级及信贷业务流程 + +image::chapter-datasource/001.png[] + +一个可以用于模型验证的评级及违约相关数据,对于一个客户而言,必须存在一个有效的评级记录(模型预测结果),同时也必须存在与之对应的一个违约情况记录(模型实际结果,存在违约记录表示事实违约,不存在违约记录表示事实正常), + +一个合格的可以作为模型验证样本的评级记录需要满足以下条件: + +. 评级记录的状态必须是有效的,即一个客户的评级步骤必须全部走完,并且通过审批。(排除那些未完成的评级记录、未审批通过的评级记录、状态为非有效的评级记录) +. 该评级客户是银行或金融机构的客户,即该客户和银行或金融机构发生了信贷关系。(排除虽然有效评级,但没有发放贷款,通常表现为客户的评级结果没有达到信贷的条件,即被拒绝的客户),也就是说需要对满足条件 1 的评级记录进行部分排除,排除条件为评级记录对应的客户不在银行或金融机构的客户名单中的那些评级记录。 + +[#MV_DEFAULT_RECORD] +== 模型的实际表现信息(违约确定信息) +[%autowidth] +|=== +| 客户标识 | 客户违约确定(认定)日期 + +| A | 2015-11-02 +|=== + +上表中每一行代表一次确认(认定)客户违约。其字段意义说明如下: +[%autowidth] +|=== +| 字段中文名称 | 字段名称 | 字段类型 | 字段约束 | 备注 + +| 客户标识 | FD_CUSTOM_ID | varchar(32) | 不能为空 | +| 违约认定日期 | FD_DEFAULT_CONFIRM_DATE | date | 不能为空 | +|=== + +TIP: 模型的实际表现情况,对于信用风险内评模型而言,主要考察的是客户的实际违约情况, +对于在表现期(对公评级通常为自评级生效后1年)内没有发生事实违约的我们称之为好客户样本, +而在表现期内发生了事实违约的我们称之为坏样本。 +原则上只有在最终确认为违约时才能作为坏样本,即在对坏样本“违约认定日期”定为违约认定日期。 + +== 合格验证样本数据结构 +[#MV_GENERAL_SAMPLE] +=== 用于模型验证的合格验证样本表: MV_GENERAL_SAMPLE + +|=== +| 客户标识 | 模型标识 | 模型名称 | 评级结果(违约概率) | 评级结果(得分) | 评级结果(等级) | 评级有效期开始日期(评级生效日期) | 评级有效期结束日期(评级失效日期) | 实际违约状态 + +| A | M1 | 模型1 | 0.001 | 90 | 5 | 2013-01-01 | 2013-12-30 | D +| A | M1 | 模型1 | 0.0005 | 80 | 6 | 2014-01-01 | 2014-12-30 | N +| B | M2 | 模型2 | 0.0005 | 80 | 6 | 2014-06-01 | 2015-05-31 | D +| B | M2 | 模型2 | 0.0005 | 80 | 6 | 2015-09-01 | 2016-08-31 | N +|=== + +上表中每一行代表一条合格的验证样本。其字段意义说明如下: +|=== +|字段中文名称 | 字段名称 | 字段类型 | 字段约束 | 备注 + +|客户标识 | FD_CUSTOM_ID | varchar(32) | 不能为空 | +|模型标识 | FD_MODEL_ID | varchar(32) | 不能为空 | +|模型名称 | FD_MODEL_NAME | varchar(100) | 不能为空 | +|评级结果(违约概率) | FD_PD | 小数(精度 6) | 不能为空 | 通过模型计算出的违约概率,非经人工调整后的违约概率 +|评级结果(得分) | FD_SCORE | 整数 | 不能为空 | 通过模型计算出的得分,非经人工调整后的得分 +|评级结果(等级) | FD_LEVEL | varchar(10) | 不能为空 | 通过模型计算出的等级,非经人工调整后的等级 +|评级有效期开始日期(评级生效日期) | FD_SCORE_BEGIN_DATE | date |不能为空 | +|评级有效期结束日期(评级失效日期) | FD_SCORE_END_DATE | date |不能为空 | +|实际违约状态 | FD_DEFAULT_STATUS | varchar(1) |不能为空 | D:表示实际发生违约N:表示实际未发生违约 +|=== + +== 合格样本选取规则 +在有了合格的模型预测信息(评级记录)和模型的实际表现信息(违约情况)后,我们需要结合两者信息根据合适的过滤规则生成可以真正用于模型验证的合格样本集。这些规则包括: + +. 客户在评级系统中存在有效评级记录(存在有效的评级结果,包括:评分,违约概率,等级等),且存在评级有效期 +. 如果客户在评级有效期内,被确定(认定)为违约,则该评级及其违约状态合并为一条有效验证样本 +. 如果客户在整个评级预测有效期内,没有发生违约,则该评级及其非违约状态(正常状态)合并为一条有效验证样本 +. 如果客户存在多条评级记录,对每一条评级记录采用上述策略 + +== 模型验证样本时间范围选取规则 +采用评级有效期开始日期范围作为样本选取的约束条件,具体规则如下: +[%autowidth] +|=== +| S | E | 样本的评级有效期开始日期介于从 S 到 E 之间 +| | E | 样本的评级有效期开始日期介于从上线以来到 E 之间 +| S | | 样本的评级有效期开始日期介于从 S 到 当前日期之间 +| | | 样本的评级有效期开始日期介于从上线以来到当前日期之间 +|=== + +[TIP] +.虽然模型验证样本的时间选择窗口基于评级有效期开始日期或评级有效期结束日期,但系统还会根据建模时确定的观察期或表现期来过滤样本,即,虽然选择的样本的评级有效期开始日期位于约束条件范围内,还需查看表现期(对公评级通常为1年)内的情况而定: +==== +. 如果表现期内发生事实违约,则该样本被采纳,作为坏样本。 +. 如果整个表现期结束,如果没有发生事实违约,则该样本被采纳,作为好样本。 +. 如果表现期未结束,且没有发生事实违约,则该样本不被采纳(需在验证样本集中排除),因为还未到表现期,客户是否违约还未定。 +==== \ No newline at end of file diff --git a/io.sc.engine.mv.doc/asciidoc/index.adoc b/io.sc.engine.mv.doc/asciidoc/index.adoc new file mode 100644 index 00000000..d4241405 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/index.adoc @@ -0,0 +1,40 @@ +:doctype: book +:backend: html5 +:toc: right +:toc-title: 目录 +:toclevels: 5 +:sectnums: +:sectnumlevels: 5 +:sectanchors: + +:linkcss: +:webfonts!: + +:icons: font +:iconfont-remote!: + +:source-highlighter: highlightjs +:highlightjsdir: ./resources/highlightjs + +:imagesdir: ./resources/images +:stylesdir: ./resources/styles +:scriptsdir: ./resources/javascript + +:docinfodir: ./resources/docinfo +:docinfo: shared + += 模型验证参考手册 +2022-12-09 : 迭代中 + +include::chapter-前言/前言.adoc[leveloffset=+1] +include::chapter-概述/概述.adoc[leveloffset=+1] +include::chapter-操作手册/操作手册.adoc[leveloffset=+1] +include::chapter-源数据/源数据.adoc[leveloffset=+1] +include::chapter-验证样本/验证样本.adoc[leveloffset=+1] +include::chapter-区分能力/区分能力.adoc[leveloffset=+1] +include::chapter-稳定性/稳定性.adoc[leveloffset=+1] +include::chapter-估值准确性/估值准确性.adoc[leveloffset=+1] +include::chapter-appendix/appendix.adoc[leveloffset=+1] + + + diff --git a/io.sc.engine.mv.doc/asciidoc/resources/docinfo/docinfo-footer.html b/io.sc.engine.mv.doc/asciidoc/resources/docinfo/docinfo-footer.html new file mode 100644 index 00000000..c1b8ce48 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/resources/docinfo/docinfo-footer.html @@ -0,0 +1,8 @@ + + diff --git a/io.sc.engine.mv.doc/asciidoc/resources/docinfo/docinfo.html b/io.sc.engine.mv.doc/asciidoc/resources/docinfo/docinfo.html new file mode 100644 index 00000000..c0ba4220 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/resources/docinfo/docinfo.html @@ -0,0 +1,5 @@ + + + + + diff --git a/io.sc.engine.mv.doc/asciidoc/resources/files/chapter-correctness-of-estimating/binomial_test.xlsx b/io.sc.engine.mv.doc/asciidoc/resources/files/chapter-correctness-of-estimating/binomial_test.xlsx new file mode 100644 index 00000000..f95b010a Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/files/chapter-correctness-of-estimating/binomial_test.xlsx differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/files/chapter-correctness-of-estimating/chi-square_test.xlsx b/io.sc.engine.mv.doc/asciidoc/resources/files/chapter-correctness-of-estimating/chi-square_test.xlsx new file mode 100644 index 00000000..11638f93 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/files/chapter-correctness-of-estimating/chi-square_test.xlsx differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/files/chapter-stability/psi.xlsx b/io.sc.engine.mv.doc/asciidoc/resources/files/chapter-stability/psi.xlsx new file mode 100644 index 00000000..15160d5b Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/files/chapter-stability/psi.xlsx differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/fonts/FontAwesome.otf b/io.sc.engine.mv.doc/asciidoc/resources/fonts/FontAwesome.otf new file mode 100644 index 00000000..df53d549 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/fonts/FontAwesome.otf differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.eot b/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.eot differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.svg b/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.ttf b/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.ttf differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.woff b/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.woff differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.woff2 b/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/fonts/fontawesome-webfont.woff2 differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/highlightjs/highlight.min.js b/io.sc.engine.mv.doc/asciidoc/resources/highlightjs/highlight.min.js new file mode 100644 index 00000000..902a0801 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/resources/highlightjs/highlight.min.js @@ -0,0 +1,2 @@ +/*! highlight.js v9.12.0 | BSD3 License | git.io/hljslicense */ +!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/&/g,"&").replace(//g,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return w(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||w(i))return i}function o(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset"}function u(e){s+=""}function c(e){("start"===e.event?o:u)(e.node)}for(var l=0,s="",f=[];e.length||r.length;){var g=i();if(s+=n(a.substring(l,g[0].offset)),l=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===l);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return s+n(a.substr(l))}function l(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(n){return o(e,{v:null},n)})),e.cached_variants||e.eW&&[o(e)]||[e]}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},u=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");o[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?u("keyword",a.k):x(a.k).forEach(function(e){u(e,a.k[e])}),a.k=o}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]),a.c=Array.prototype.concat.apply([],a.c.map(function(e){return l("self"===e?a:e)})),a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var c=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=c.length?t(c.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function l(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function p(e,n,t,r){var a=r?"":I.classPrefix,i='',i+n+o}function h(){var e,t,r,a;if(!E.k)return n(k);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(k);r;)a+=n(k.substring(t,r.index)),e=l(E,r),e?(B+=e[1],a+=p(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(k);return a+n(k.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!y[E.sL])return n(k);var t=e?f(E.sL,k,!0,x[E.sL]):g(k,E.sL.length?E.sL:void 0);return E.r>0&&(B+=t.r),e&&(x[E.sL]=t.top),p(t.language,t.value,!1,!0)}function b(){L+=null!=E.sL?d():h(),k=""}function v(e){L+=e.cN?p(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(k+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?k+=n:(t.eB&&(k+=n),b(),t.rB||t.eB||(k=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?k+=n:(a.rE||a.eE||(k+=n),b(),a.eE&&(k=n));do E.cN&&(L+=C),E.skip||(B+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"")+'"');return k+=n,n.length||1}var N=w(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,E=i||N,x={},L="";for(R=E;R!==N;R=R.parent)R.cN&&(L=p(R.cN,"",!0)+L);var k="",B=0;try{for(var M,j,O=0;;){if(E.t.lastIndex=O,M=E.t.exec(t),!M)break;j=m(t.substring(O,M.index),M[0]),O=M.index+j}for(m(t.substr(O)),R=E;R.parent;R=R.parent)R.cN&&(L+=C);return{r:B,value:L,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function g(e,t){t=t||I.languages||x(y);var r={r:0,value:n(e)},a=r;return t.filter(w).forEach(function(n){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function p(e){return I.tabReplace||I.useBR?e.replace(M,function(e,n){return I.useBR&&"\n"===e?"
":I.tabReplace?n.replace(/\t/g,I.tabReplace):""}):e}function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function d(e){var n,t,r,o,l,s=i(e);a(s)||(I.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):n=e,l=n.textContent,r=s?f(s,l,!0):g(l),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),l)),r.value=p(r.value),e.innerHTML=r.value,e.className=h(e.className,s,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function b(e){I=o(I,e)}function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,d)}}function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener("load",v,!1)}function N(n,t){var r=y[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function R(){return x(y)}function w(e){return e=(e||"").toLowerCase(),y[e]||y[L[e]]}var E=[],x=Object.keys,y={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="
",I={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=f,e.highlightAuto=g,e.fixMarkup=p,e.highlightBlock=d,e.configure=b,e.initHighlighting=v,e.initHighlightingOnLoad=m,e.registerLanguage=N,e.listLanguages=R,e.getLanguage=w,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("java",function(e){var a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",t=a+"(<"+a+"(\\s*,\\s*"+a+")*>)?",r="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",s="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",c={cN:"number",b:s,r:0};return{aliases:["jsp"],k:r,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},c,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("python",function(e){var r={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},b={cN:"meta",b:/^(>>>|\.\.\.) /},c={cN:"subst",b:/\{/,e:/\}/,k:r,i:/#/},a={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[b],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[b],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[b,c]},{b:/(fr|rf|f)"""/,e:/"""/,c:[b,c]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[c]},{b:/(fr|rf|f)"/,e:/"/,c:[c]},e.ASM,e.QSM]},s={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},i={cN:"params",b:/\(/,e:/\)/,c:["self",b,s,a]};return c.c=[a,s,b],{aliases:["py","gyp"],k:r,i:/(<\/|->|\?)|=>/,c:[b,s,a,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,i,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:c,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[t],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[t],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("asciidoc",function(e){return{aliases:["adoc"],c:[e.C("^/{4,}\\n","\\n/{4,}$",{r:10}),e.C("^//","$",{r:0}),{cN:"title",b:"^\\.\\w.*$"},{b:"^[=\\*]{4,}\\n",e:"\\n^[=\\*]{4,}$",r:10},{cN:"section",r:10,v:[{b:"^(={1,5}) .+?( \\1)?$"},{b:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{cN:"meta",b:"^:.+?:",e:"\\s",eE:!0,r:10},{cN:"meta",b:"^\\[.+?\\]$",r:0},{cN:"quote",b:"^_{4,}\\n",e:"\\n_{4,}$",r:10},{cN:"code",b:"^[\\-\\.]{4,}\\n",e:"\\n[\\-\\.]{4,}$",r:10},{b:"^\\+{4,}\\n",e:"\\n\\+{4,}$",c:[{b:"<",e:">",sL:"xml",r:0}],r:10},{cN:"bullet",b:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{cN:"symbol",b:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",r:10},{cN:"strong",b:"\\B\\*(?![\\*\\s])",e:"(\\n{2}|\\*)",c:[{b:"\\\\*\\w",r:0}]},{cN:"emphasis",b:"\\B'(?!['\\s])",e:"(\\n{2}|')",c:[{b:"\\\\'\\w",r:0}],r:0},{cN:"emphasis",b:"_(?![_\\s])",e:"(\\n{2}|_)",r:0},{cN:"string",v:[{b:"``.+?''"},{b:"`.+?'"}]},{cN:"code",b:"(`.+?`|\\+.+?\\+)",r:0},{cN:"code",b:"^[ \\t]",e:"$",r:0},{b:"^'{3,}[ \\t]*$",r:10},{b:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",rB:!0,c:[{b:"(link|image:?):",r:0},{cN:"link",b:"\\w",e:"[^\\[]+",r:0},{cN:"string",b:"\\[",e:"\\]",eB:!0,eE:!0,r:0}],r:10}]}});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,a,t]}});hljs.registerLanguage("shell",function(s){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("ini",function(e){var b={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},b,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={cN:"subst",b:/#\{/,e:/}/,k:c},i=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,r]},{b:/"/,e:/"/,c:[e.BE,r]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[r,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+n},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];r.c=i;var s=e.inherit(e.TM,{b:n}),t="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(i)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:i.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+t,e:"[-=]>",rB:!0,c:[s,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:t,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[s]},s]},{b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("makefile",function(e){var i={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],o=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=o,s.c=o,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:o}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},i=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:_,l:i,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:i,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("ruby",function(e){var b="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},c={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},s=[e.C("#","$",{c:[c]}),e.C("^\\=begin","^\\=end",{c:[c],r:10}),e.C("^__END__","\\n$")],n={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(s)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:b}),i].concat(s)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:b}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[a,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(s),r:0}].concat(s);n.c=d,i.c=d;var l="[>?]>",o="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",w=[{b:/^\s*=>/,starts:{e:"$",c:d}},{cN:"meta",b:"^("+l+"|"+o+"|"+u+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:s.concat(w).concat(d)}});hljs.registerLanguage("yaml",function(e){var b="true false yes no null",a="^[ \\-]*",r="[a-zA-Z_][\\w\\-]*",t={cN:"attr",v:[{b:a+r+":"},{b:a+'"'+r+'":'},{b:a+"'"+r+"':"}]},c={cN:"template-variable",v:[{b:"{{",e:"}}"},{b:"%{",e:"}"}]},l={cN:"string",r:0,v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/\S+/}],c:[e.BE,c]};return{cI:!0,aliases:["yml","YAML","yaml"],c:[t,{cN:"meta",b:"^---s*$",r:10},{cN:"string",b:"[\\|>] *$",rE:!0,c:l.c,e:t.v[0].b},{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0,r:0},{cN:"type",b:"!!"+e.UIR},{cN:"meta",b:"&"+e.UIR+"$"},{cN:"meta",b:"\\*"+e.UIR+"$"},{cN:"bullet",b:"^ *-",r:0},e.HCM,{bK:b,k:{literal:b}},e.CNM,l]}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}});hljs.registerLanguage("cs",function(e){var i={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},t={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},r=e.inherit(t,{i:/\n/}),a={cN:"subst",b:"{",e:"}",k:i},c=e.inherit(a,{i:/\n/}),n={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,c]},s={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},a]},o=e.inherit(s,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},c]});a.c=[s,n,t,e.ASM,e.QSM,e.CNM,e.CBCM],c.c=[o,n,r,e.ASM,e.QSM,e.CNM,e.inherit(e.CBCM,{i:/\n/})];var l={v:[s,n,t,e.ASM,e.QSM]},b=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp"],k:i,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},l,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",r:0},{cN:"function",b:"("+b+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:i,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:i,r:0,c:[l,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*#]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U)?L?"',e:'"',i:"\\n",c:[t.BE]},{b:'(u8?|U)?R"',e:'"',c:[t.BE]},{b:"'\\\\?.",e:"'",i:"."}]},s={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},i={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},t.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},t.CLCM,t.CBCM]},a=t.IR+"\\s*\\(",c={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},n=[e,t.CLCM,t.CBCM,s,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:c,i:"",k:c,c:["self",e]},{b:t.IR+"::",k:c},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:c,c:n.concat([{b:/\(/,e:/\)/,k:c,c:n.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+t.IR+"[\\*&\\s]+)+"+a,rB:!0,e:/[{;=]/,eE:!0,k:c,i:/[^\w\s\*&]/,c:[{b:a,rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:c,r:0,c:[t.CLCM,t.CBCM,r,s,e]},t.CLCM,t.CBCM,i]},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b://,c:["self"]},t.TM]}]),exports:{preprocessor:i,strings:r,k:c}}}); diff --git a/io.sc.engine.mv.doc/asciidoc/resources/highlightjs/styles/github.min.css b/io.sc.engine.mv.doc/asciidoc/resources/highlightjs/styles/github.min.css new file mode 100644 index 00000000..791932b8 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/resources/highlightjs/styles/github.min.css @@ -0,0 +1,99 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} + +.hljs-string, +.hljs-doctag { + color: #d14; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-link { + color: #009926; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-appendix/001.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-appendix/001.png new file mode 100644 index 00000000..b54f9aa2 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-appendix/001.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-appendix/002.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-appendix/002.png new file mode 100644 index 00000000..5959ccba Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-appendix/002.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-correctness-of-estimating/001.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-correctness-of-estimating/001.png new file mode 100644 index 00000000..7599d7a9 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-correctness-of-estimating/001.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-correctness-of-estimating/002.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-correctness-of-estimating/002.png new file mode 100644 index 00000000..5fda2cb7 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-correctness-of-estimating/002.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-datasource/001.graffle b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-datasource/001.graffle new file mode 100644 index 00000000..bb343949 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-datasource/001.graffle differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-datasource/001.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-datasource/001.png new file mode 100644 index 00000000..7ac02922 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-datasource/001.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/ar.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/ar.png new file mode 100644 index 00000000..3358d2c5 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/ar.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/ar2.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/ar2.png new file mode 100644 index 00000000..15240707 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/ar2.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/cap.graffle b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/cap.graffle new file mode 100644 index 00000000..b7cf5b5c Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/cap.graffle differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/cap.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/cap.png new file mode 100644 index 00000000..6a708069 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/cap.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/cap2.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/cap2.png new file mode 100644 index 00000000..cc5c2696 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/cap/cap2.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/ks/ks.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/ks/ks.png new file mode 100644 index 00000000..f33d3823 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/ks/ks.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/auc.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/auc.png new file mode 100644 index 00000000..09fd6ad3 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/auc.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/roc.graffle b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/roc.graffle new file mode 100644 index 00000000..53109998 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/roc.graffle differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/roc.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/roc.png new file mode 100644 index 00000000..ea135839 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/roc.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/roc2.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/roc2.png new file mode 100644 index 00000000..e2389195 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/roc/roc2.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/structure.graffle b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/structure.graffle new file mode 100644 index 00000000..db46e8f4 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/structure.graffle differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/structure.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/structure.png new file mode 100644 index 00000000..a76b2feb Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-sc/structure.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/psi/001.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/psi/001.png new file mode 100644 index 00000000..b5ef8287 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/psi/001.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/sc-change/001.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/sc-change/001.png new file mode 100644 index 00000000..a5cb7200 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/sc-change/001.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/transition_matrix/001.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/transition_matrix/001.png new file mode 100644 index 00000000..e283ae88 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/transition_matrix/001.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/transition_matrix/002.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/transition_matrix/002.png new file mode 100644 index 00000000..c95d890c Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/transition_matrix/002.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/transition_matrix/003.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/transition_matrix/003.png new file mode 100644 index 00000000..262e404a Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-stability/transition_matrix/003.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/001.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/001.png new file mode 100644 index 00000000..0c57b4b9 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/001.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/001.pptx b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/001.pptx new file mode 100644 index 00000000..e2eb9d6b Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/001.pptx differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/002.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/002.png new file mode 100644 index 00000000..f2499bfd Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/002.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/002.pptx b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/002.pptx new file mode 100644 index 00000000..d7dae5b5 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/002.pptx differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/003.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/003.png new file mode 100644 index 00000000..78edbcfd Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/003.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/003.pptx b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/003.pptx new file mode 100644 index 00000000..82c338d2 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/003.pptx differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/functions.graffle b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/functions.graffle new file mode 100644 index 00000000..309a9045 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/functions.graffle differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/functions.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/functions.png new file mode 100644 index 00000000..dc43e1d0 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/functions.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/structure.graffle b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/structure.graffle new file mode 100644 index 00000000..b7947910 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/structure.graffle differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/structure.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/structure.png new file mode 100644 index 00000000..f086e750 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-summary/structure.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/001.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/001.png new file mode 100644 index 00000000..0bec1cbd Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/001.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/002.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/002.png new file mode 100644 index 00000000..9d8e4643 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/002.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/003.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/003.png new file mode 100644 index 00000000..d206bec5 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/003.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/004.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/004.png new file mode 100644 index 00000000..f9be8255 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/004.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/005.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/005.png new file mode 100644 index 00000000..b92e56c3 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/005.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/006.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/006.png new file mode 100644 index 00000000..798abc54 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/006.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/007.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/007.png new file mode 100644 index 00000000..ce89faca Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/007.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/008.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/008.png new file mode 100644 index 00000000..3a33882e Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/008.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/009.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/009.png new file mode 100644 index 00000000..0b3c8e01 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/configure/009.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/001.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/001.png new file mode 100644 index 00000000..0dafffe0 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/001.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/002.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/002.png new file mode 100644 index 00000000..8e672c00 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/002.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/003.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/003.png new file mode 100644 index 00000000..e01d93c3 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/003.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/004.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/004.png new file mode 100644 index 00000000..c533fe7d Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/004.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/005.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/005.png new file mode 100644 index 00000000..4d5d8893 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/005.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/006.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/006.png new file mode 100644 index 00000000..ed1eef61 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/006.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/007.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/007.png new file mode 100644 index 00000000..2ed155d6 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/result/007.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/sample/001.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/sample/001.png new file mode 100644 index 00000000..2091def5 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/sample/001.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/sample/002.png b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/sample/002.png new file mode 100644 index 00000000..e565ec16 Binary files /dev/null and b/io.sc.engine.mv.doc/asciidoc/resources/images/chapter-use-help/sample/002.png differ diff --git a/io.sc.engine.mv.doc/asciidoc/resources/javascript/tocbot.min.js b/io.sc.engine.mv.doc/asciidoc/resources/javascript/tocbot.min.js new file mode 100644 index 00000000..942a709a --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/resources/javascript/tocbot.min.js @@ -0,0 +1 @@ +!function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,n){(function(o){var i,l,r;!function(n,o){l=[],i=o(n),void 0!==(r="function"==typeof i?i.apply(t,l):i)&&(e.exports=r)}(void 0!==o?o:this.window||this.global,function(e){"use strict";function t(){for(var e={},t=0;te.fixedSidebarOffset?-1===n.className.indexOf(e.positionFixedClass)&&(n.className+=p+e.positionFixedClass):n.className=n.className.split(p+e.positionFixedClass).join("")}function r(t){var n=document.documentElement.scrollTop||f.scrollTop;e.positionFixedSelector&&l();var o,i=t;if(m&&null!==document.querySelector(e.tocSelector)&&i.length>0){d.call(i,function(t,l){if(t.offsetTop>n+e.headingsOffset+10){return o=i[0===l?l:l-1],!0}if(l===i.length-1)return o=i[i.length-1],!0});var r=document.querySelector(e.tocSelector).querySelectorAll("."+e.linkClass);u.call(r,function(t){t.className=t.className.split(p+e.activeLinkClass).join("")});var c=document.querySelector(e.tocSelector).querySelector("."+e.linkClass+".node-name--"+o.nodeName+'[href="#'+o.id+'"]');c.className+=p+e.activeLinkClass;var a=document.querySelector(e.tocSelector).querySelectorAll("."+e.listClass+"."+e.collapsibleClass);u.call(a,function(t){var n=p+e.isCollapsedClass;-1===t.className.indexOf(n)&&(t.className+=p+e.isCollapsedClass)}),c.nextSibling&&(c.nextSibling.className=c.nextSibling.className.split(p+e.isCollapsedClass).join("")),s(c.parentNode.parentNode)}}function s(t){return-1!==t.className.indexOf(e.collapsibleClass)?(t.className=t.className.split(p+e.isCollapsedClass).join(""),s(t.parentNode.parentNode)):t}function c(t){var n=t.target||t.srcElement;"string"==typeof n.className&&-1!==n.className.indexOf(e.linkClass)&&(m=!1)}function a(){m=!0}var u=[].forEach,d=[].some,f=document.body,m=!0,p=" ";return{enableTocAnimation:a,disableTocAnimation:c,render:n,updateToc:r}}},function(e,t){e.exports=function(e){function t(e){return e[e.length-1]}function n(e){return+e.nodeName.split("H").join("")}function o(t){var o={id:t.id,children:[],nodeName:t.nodeName,headingLevel:n(t),textContent:t.textContent.trim()};return e.includeHtml&&(o.childNodes=t.childNodes),o}function i(i,l){for(var r=o(i),s=n(i),c=l,a=t(c),u=a?a.headingLevel:0,d=s-u;d>0;)a=t(c),a&&void 0!==a.children&&(c=a.children),d--;return s>=e.collapseDepth&&(r.isCollapsed=!0),c.push(r),c}function l(t,n){var o=n;e.ignoreSelector&&(o=n.split(",").map(function(t){return t.trim()+":not("+e.ignoreSelector+")"}));try{return document.querySelector(t).querySelectorAll(o)}catch(e){return console.warn("Element not found: "+t),null}}function r(e){return s.call(e,function(e,t){return i(o(t),e.nest),e},{nest:[]})}var s=[].reduce;return{nestHeadingsArray:r,selectHeadings:l}}},function(e,t,n){var o,i,l;!function(n,r){i=[],o=r(),void 0!==(l="function"==typeof o?o.apply(t,i):o)&&(e.exports=l)}(0,function(){"use strict";var e=function(e){return"getComputedStyle"in window&&"smooth"===window.getComputedStyle(e)["scroll-behavior"]};if("undefined"==typeof window||!("document"in window))return{};var t=function(t,n,o){n=n||999,o||0===o||(o=9);var i,l=function(e){i=e},r=function(){clearTimeout(i),l(0)},s=function(e){return Math.max(0,t.getTopOf(e)-o)},c=function(o,i,s){if(r(),0===i||i&&i<0||e(t.body))t.toY(o),s&&s();else{var c=t.getY(),a=Math.max(0,o)-c,u=(new Date).getTime();i=i||Math.min(Math.abs(a),n),function e(){l(setTimeout(function(){var n=Math.min(1,((new Date).getTime()-u)/i),o=Math.max(0,Math.floor(c+a*(n<.5?2*n*n:n*(4-2*n)-1)));t.toY(o),n<1&&t.getHeight()+ou?a(e,n,i):r+o>f?c(r-u+o,n,i):i&&i()},d=function(e,n,o,i){c(Math.max(0,t.getTopOf(e)-t.getHeight()/2+(o||e.getBoundingClientRect().height/2)),n,i)};return{setup:function(e,t){return(0===e||e)&&(n=e),(0===t||t)&&(o=t),{defaultDuration:n,edgeOffset:o}},to:a,toY:c,intoView:u,center:d,stop:r,moving:function(){return!!i},getY:t.getY,getTopOf:t.getTopOf}},n=document.documentElement,o=function(){return window.scrollY||n.scrollTop},i=t({body:document.scrollingElement||document.body,toY:function(e){window.scrollTo(0,e)},getY:o,getHeight:function(){return window.innerHeight||n.clientHeight},getTopOf:function(e){return e.getBoundingClientRect().top+o()-n.offsetTop}});if(i.createScroller=function(e,o,i){return t({body:e,toY:function(t){e.scrollTop=t},getY:function(){return e.scrollTop},getHeight:function(){return Math.min(e.clientHeight,window.innerHeight||n.clientHeight)},getTopOf:function(e){return e.offsetTop}},o,i)},"addEventListener"in window&&!window.noZensmooth&&!e(document.body)){var l="scrollRestoration"in history;l&&(history.scrollRestoration="auto"),window.addEventListener("load",function(){l&&(setTimeout(function(){history.scrollRestoration="manual"},9),window.addEventListener("popstate",function(e){e.state&&"zenscrollY"in e.state&&i.toY(e.state.zenscrollY)},!1)),window.location.hash&&setTimeout(function(){var e=i.setup().edgeOffset;if(e){var t=document.getElementById(window.location.href.split("#")[1]);if(t){var n=Math.max(0,i.getTopOf(t)-e),o=i.getY()-n;0<=o&&o<9&&window.scrollTo(0,n)}}},9)},!1);var r=new RegExp("(^|\\s)noZensmooth(\\s|$)");window.addEventListener("click",function(e){for(var t=e.target;t&&"A"!==t.tagName;)t=t.parentNode;if(!(!t||1!==e.which||e.shiftKey||e.metaKey||e.ctrlKey||e.altKey)){if(l)try{history.replaceState({zenscrollY:i.getY()},"")}catch(e){}var n=t.getAttribute("href")||"";if(0===n.indexOf("#")&&!r.test(t.className)){var o=0,s=document.getElementById(n.substring(1));if("#"!==n){if(!s)return;o=i.getTopOf(s)}e.preventDefault();var c=function(){window.location=n},a=i.setup().edgeOffset;a&&(o=Math.max(0,o-a),c=function(){history.pushState(null,"",n)}),i.toY(o,null,c)}}},!1)}return i})}]); diff --git a/io.sc.engine.mv.doc/asciidoc/resources/styles/font-awesome.css b/io.sc.engine.mv.doc/asciidoc/resources/styles/font-awesome.css new file mode 100644 index 00000000..ee906a81 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/resources/styles/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/io.sc.engine.mv.doc/asciidoc/resources/styles/framework.css b/io.sc.engine.mv.doc/asciidoc/resources/styles/framework.css new file mode 100644 index 00000000..680c5101 --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/resources/styles/framework.css @@ -0,0 +1,8 @@ +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{color:black;} +#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:black;} +p{text-indent: 0em;} +li p,td p{text-indent: 0em;} +table tr td{padding:4px;} +td.tableblock>.content>:last-child { + margin-bottom: 0em; +} diff --git a/io.sc.engine.mv.doc/asciidoc/resources/styles/tocbot.css b/io.sc.engine.mv.doc/asciidoc/resources/styles/tocbot.css new file mode 100644 index 00000000..6265223f --- /dev/null +++ b/io.sc.engine.mv.doc/asciidoc/resources/styles/tocbot.css @@ -0,0 +1 @@ +.toc{overflow-y:auto}.toc>ul{overflow:hidden;position:relative}.toc>ul li{list-style:none}.toc-list{margin:0;padding-left:10px}a.toc-link{color:currentColor;height:100%}.is-collapsible{max-height:1000px;overflow:hidden;transition:all 300ms ease-in-out}.is-collapsed{max-height:0}.is-position-fixed{position:fixed !important;top:0}.is-active-link{font-weight:700}.toc-link::before{background-color:#EEE;content:' ';display:inline-block;height:inherit;left:0;margin-top:-1px;position:absolute;width:2px}.is-active-link::before{background-color:#54BC4B} diff --git a/io.sc.engine.mv.doc/build.gradle b/io.sc.engine.mv.doc/build.gradle new file mode 100644 index 00000000..af102626 --- /dev/null +++ b/io.sc.engine.mv.doc/build.gradle @@ -0,0 +1 @@ +sourceSets.main.resources.srcDir 'dist' \ No newline at end of file diff --git a/io.sc.engine.mv.doc/gradle.properties b/io.sc.engine.mv.doc/gradle.properties new file mode 100644 index 00000000..e69de29b diff --git a/io.sc.engine.mv.doc/src/main/resources/META-INF/platform/plugins/security.json b/io.sc.engine.mv.doc/src/main/resources/META-INF/platform/plugins/security.json new file mode 100644 index 00000000..bde711f6 --- /dev/null +++ b/io.sc.engine.mv.doc/src/main/resources/META-INF/platform/plugins/security.json @@ -0,0 +1,5 @@ +{ + "permitPatterns":[ + "/help/io.sc.engine.mv.doc/**/*" + ] +} \ No newline at end of file diff --git a/io.sc.engine.mv.frontend/.npmrc b/io.sc.engine.mv.frontend/.npmrc index dd3810ca..304f4652 100644 --- a/io.sc.engine.mv.frontend/.npmrc +++ b/io.sc.engine.mv.frontend/.npmrc @@ -3,6 +3,8 @@ registry=http://nexus.sc.io:8000/repository/npm-public/ # 用户邮箱 email= +# publish 时无需先进行 git 代码同步检查, 可避免 publish 时使用 --no-git-checks 选项 +git-checks=false # 注意: 以下 // 不是注释,不能去掉哦 # 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置 diff --git a/io.sc.engine.mv.frontend/package.json b/io.sc.engine.mv.frontend/package.json index 9cffb4ea..06d45874 100644 --- a/io.sc.engine.mv.frontend/package.json +++ b/io.sc.engine.mv.frontend/package.json @@ -23,92 +23,94 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.24.4", - "@babel/preset-env": "7.24.4", - "@babel/preset-typescript": "7.24.1", - "@babel/plugin-transform-class-properties": "7.24.1", - "@babel/plugin-transform-object-rest-spread": "7.24.1", - "@quasar/app-webpack": "3.12.5", - "@quasar/cli": "2.4.0", + "@babel/core": "7.24.7", + "@babel/preset-env": "7.24.7", + "@babel/preset-typescript": "7.24.7", + "@babel/plugin-transform-class-properties": "7.24.7", + "@babel/plugin-transform-object-rest-spread": "7.24.7", + "@quasar/app-webpack": "3.13.2", + "@quasar/cli": "2.4.1", "@types/mockjs": "1.0.10", - "@types/node": "20.12.7", - "@typescript-eslint/eslint-plugin": "7.7.1", - "@typescript-eslint/parser": "7.7.1", - "@vue/compiler-sfc": "3.4.24", + "@types/node": "20.14.10", + "@typescript-eslint/eslint-plugin": "7.15.0", + "@typescript-eslint/parser": "7.15.0", + "@vue/compiler-sfc": "3.4.31", "@webpack-cli/serve": "2.0.5", "autoprefixer": "10.4.19", "babel-loader": "9.1.3", "clean-webpack-plugin": "4.0.0", "copy-webpack-plugin": "12.0.2", "cross-env": "7.0.3", - "css-loader": "7.1.1", + "css-loader": "7.1.2", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-vue": "9.25.0", - "eslint-webpack-plugin": "4.1.0", + "eslint-plugin-vue": "9.27.0", + "eslint-webpack-plugin": "4.2.0", "html-webpack-plugin": "5.6.0", "json5": "2.2.3", "mini-css-extract-plugin": "2.9.0", - "nodemon": "3.1.0", - "postcss": "8.4.38", + "nodemon": "3.1.4", + "postcss": "8.4.39", "postcss-import": "16.1.0", "postcss-loader": "8.1.1", - "postcss-preset-env": "9.5.9", - "prettier": "3.2.5", - "sass": "1.75.0", + "postcss-preset-env": "9.6.0", + "prettier": "3.3.2", + "sass": "1.77.6", "sass-loader": "14.2.1", - "typescript": "5.4.5", + "typescript": "5.5.3", "vue-loader": "17.4.2", - "webpack": "5.91.0", + "webpack": "5.92.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4", - "webpack-merge": "5.10.0", + "webpack-merge": "6.0.1", "@vue/babel-plugin-jsx": "1.2.2" }, "dependencies": { - "@codemirror/autocomplete": "6.16.0", - "@codemirror/commands": "6.5.0", + "@codemirror/autocomplete": "6.17.0", + "@codemirror/commands": "6.6.0", "@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.6.3", + "@codemirror/lang-sql": "6.7.0", "@codemirror/lang-xml": "6.1.0", - "@codemirror/language": "6.10.1", + "@codemirror/language": "6.10.2", "@codemirror/search": "6.5.6", "@codemirror/state": "6.4.1", - "@codemirror/view": "6.26.3", - "@maxgraph/core": "0.10.0", - "@quasar/extras": "1.16.11", - "@vueuse/core": "10.9.0", - "axios": "1.6.8", + "@codemirror/view": "6.28.4", + "@maxgraph/core": "0.12.0", + "@quasar/extras": "1.16.12", + "@vueuse/core": "10.11.0", + "axios": "1.7.2", "codemirror": "6.0.1", - "dayjs": "1.11.10", - "echarts": "5.5.0", + "dayjs": "1.11.11", + "echarts": "5.5.1", "exceljs": "4.4.0", "file-saver": "2.0.5", "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.246", - "quasar": "2.15.3", - "tailwindcss": "3.4.3", - "vue": "3.4.24", - "vue-dompurify-html": "5.0.1", + "platform-core": "8.1.273", + "quasar": "2.15.4", + "tailwindcss": "3.4.4", + "vue": "3.4.31", + "vue-dompurify-html": "5.1.0", "vue-i18n": "9.13.1", - "vue-router": "4.3.2", - "@univerjs/core": "0.1.13", - "@univerjs/design": "0.1.13", - "@univerjs/docs": "0.1.13", - "@univerjs/docs-ui": "0.1.13", - "@univerjs/engine-formula": "0.1.13", - "@univerjs/engine-render": "0.1.13", - "@univerjs/facade": "0.1.13", - "@univerjs/sheets": "0.1.13", - "@univerjs/sheets-formula": "0.1.13", - "@univerjs/sheets-ui": "0.1.13", - "@univerjs/ui": "0.1.13" + "vue-router": "4.4.0", + "@univerjs/core": "0.2.0", + "@univerjs/design": "0.2.0", + "@univerjs/docs": "0.2.0", + "@univerjs/docs-ui": "0.2.0", + "@univerjs/engine-formula": "0.2.0", + "@univerjs/engine-render": "0.2.0", + "@univerjs/facade": "0.2.0", + "@univerjs/sheets": "0.2.0", + "@univerjs/sheets-formula": "0.2.0", + "@univerjs/sheets-ui": "0.2.0", + "@univerjs/ui": "0.2.0", + "pinia-undo": "0.2.4", + "xml-formatter": "3.6.3" } } \ No newline at end of file diff --git a/io.sc.engine.mv.frontend/src/views/result/Result.vue b/io.sc.engine.mv.frontend/src/views/result/Result.vue index b7a9dcb4..2f1abe7a 100644 --- a/io.sc.engine.mv.frontend/src/views/result/Result.vue +++ b/io.sc.engine.mv.frontend/src/views/result/Result.vue @@ -47,14 +47,13 @@ }, { extend: 'remove', - click: (selecteds) => { - if (selecteds && selecteds.length > 0) { - const selected = selecteds[0]; + click: (arg) => { + if (arg.selected) { axios .request({ url: Environment.apiContextPath('/api/mv/viewer/result'), method: 'delete', - data: [{ validateDate: selected.validateDate, modelId: selected.modelId }], + data: [{ validateDate: arg.selected.validateDate, modelId: arg.selected.modelId }], }) .then(() => { gridRef.refresh(); diff --git a/io.sc.engine.mv.frontend/src/views/result/ResultDetailDialog.vue b/io.sc.engine.mv.frontend/src/views/result/ResultDetailDialog.vue index 226a1942..0d0f2e4d 100644 --- a/io.sc.engine.mv.frontend/src/views/result/ResultDetailDialog.vue +++ b/io.sc.engine.mv.frontend/src/views/result/ResultDetailDialog.vue @@ -31,7 +31,7 @@ -

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

+
{{ $t('io.sc.engine.mv.result.curve.references') }}:
@@ -61,7 +61,7 @@
-

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

+
{{ $t('io.sc.engine.mv.result.curve.references') }}:
{{ $t('io.sc.engine.mv.performance') }}
diff --git a/io.sc.engine.mv.frontend/webpack.config.mf.cjs b/io.sc.engine.mv.frontend/webpack.config.mf.cjs index 6425f66e..dd430adc 100644 --- a/io.sc.engine.mv.frontend/webpack.config.mf.cjs +++ b/io.sc.engine.mv.frontend/webpack.config.mf.cjs @@ -60,6 +60,18 @@ module.exports = { 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, + "xml-formatter": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/core": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/design": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-render": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/facade": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/ui": { requiredVersion: deps['vue-router'], singleton: true } } }), ] diff --git a/io.sc.engine.mv.frontend/webpack.env.build.cjs b/io.sc.engine.mv.frontend/webpack.env.build.cjs index 0776c382..fbcf0fbe 100644 --- a/io.sc.engine.mv.frontend/webpack.env.build.cjs +++ b/io.sc.engine.mv.frontend/webpack.env.build.cjs @@ -24,7 +24,7 @@ module.exports = merge(common, mf, { cacheGroups: { 'shared': { name: 'vue', - test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs)[\\/]/, + test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs|xml-formatter)[\\/]/, priority: 20, chunks: 'all', enforce: true @@ -71,6 +71,13 @@ module.exports = merge(common, mf, { chunks: 'all', enforce: true }, + '@univerjs': { + name: '@univerjs', + test: /[\\/]node_modules[\\/]@univerjs[\\/]/, + priority: 20, + chunks: 'all', + enforce: true + }, 'view': { name: 'view', test: /[\\/]view[\\/]/, diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/GroovySourceCodeGenerator.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/GroovySourceCodeGenerator.java index 0f67895c..c683ecca 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/GroovySourceCodeGenerator.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/GroovySourceCodeGenerator.java @@ -85,8 +85,9 @@ public class GroovySourceCodeGenerator implements CodeGenerator{ root.put("CodeReplacer", getStaticMethod("io.sc.engine.rule.core.util.CodeReplacer")); root.put("ExpressionReplacer", getStaticMethod("io.sc.engine.rule.core.util.ExpressionReplacer")); root.put("ValueType", getStaticMethod("io.sc.engine.rule.core.enums.ValueType")); - - root.put("ConditionRange", getStaticMethod("io.sc.engine.rule.core.code.impl.support.processor.ConditionRange")); + + root.put("ObjectProperty", getStaticMethod("io.sc.engine.rule.core.code.impl.support.processor.ObjectProperty")); + root.put("ConditionRange", getStaticMethod("io.sc.engine.rule.core.code.impl.support.processor.ConditionRange")); root.put("NumberRange", getStaticMethod("io.sc.engine.rule.core.code.impl.support.processor.NumberRange")); root.put("DecisionTable2C", getStaticMethod("io.sc.engine.rule.core.code.impl.support.processor.DecisionTable2C")); root.put("DecisionTable", getStaticMethod("io.sc.engine.rule.core.code.impl.support.processor.DecisionTable")); 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 9ff437f8..b31d7e29 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 @@ -3,6 +3,8 @@ package io.sc.engine.rule.core.code.impl.support.processor; import java.util.ArrayList; import java.util.List; +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; @@ -21,6 +23,50 @@ public class ConditionRange { public static List parse(String json) throws Exception{ return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, new TypeReference>(){}); } + + public static String generateGroovyCode(Indicator indicator, ConditionRangeIndicatorProcessor processor) throws Exception{ + if(indicator==null || processor==null){ + return null; + } + try { + List conditionRanges =parse(processor.getConditionRange()); + List _conditionRanges =new ArrayList(); + + //移除没有填写条件的条件范围 + if(conditionRanges!=null && conditionRanges.size()>0) { + for(ConditionRange conditionRange : conditionRanges) { + if(conditionRange.getCondition()!=null && !"".equals(conditionRange.getCondition().trim())) { + _conditionRanges.add(conditionRange); + } + } + } + + if(_conditionRanges!=null && _conditionRanges.size()>0) { + StringBuilder sb =new StringBuilder(); + int size =_conditionRanges.size(); + for(int i=0;i parse(String json) throws Exception { + return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, new TypeReference>(){}); + } + + public static String generateGroovyCode(Parameter parameter, MathFormulaParameterProcessor processor) throws Exception{ + if(parameter==null || processor==null){ + return null; + } + 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 new file mode 100644 index 00000000..8865d0ba --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/ObjectProperty.java @@ -0,0 +1,146 @@ +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.po.lib.Indicator; +import io.sc.engine.rule.core.po.lib.processor.ObjectPropertiesIndicatorProcessor; +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 org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown=true) +public class ObjectProperty { + private String code; + private String name; + private String expression; + + public static List parse(String json) throws Exception { + return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, new TypeReference>(){}); + } + + public static String generateGroovyCode(Indicator indicator, ObjectPropertiesIndicatorProcessor processor) throws Exception{ + if(indicator==null || processor==null){ + return null; + } + try { + String objectCondition =processor.getObjectCondition(); + List objectProperties =parse(processor.getObjectProperties()); + List _objectProperties =new ArrayList<>(); + + //移除没有填写表达式的对象属性 + if(objectProperties!=null && objectProperties.size()>0) { + for(ObjectProperty objectProperty : objectProperties) { + if(StringUtils.hasText(objectProperty.getExpression())){ + _objectProperties.add(objectProperty); + } + } + } + + if(_objectProperties!=null && !_objectProperties.isEmpty()) { + StringBuilder sb =new StringBuilder(); + if(StringUtils.hasText(objectCondition)){ + sb.append("if (").append(ExpressionReplacer.groovy(objectCondition, null)).append("){").append("\n"); + } + sb.append("\t\t\tif (").append(ExpressionReplacer.ARGUMENT_NAME).append(".").append(CodeReplacer.fieldName(indicator.getCode())).append("==null) {").append("\n"); + sb.append("\t\t\t\t").append(ExpressionReplacer.ARGUMENT_NAME).append(".").append(CodeReplacer.fieldName(indicator.getCode())).append(" =new ").append(indicator.getValueType()).append("_V").append(indicator.getValueTypeVersion()).append("();").append("\n"); + sb.append("\t\t\t}").append("\n"); + int size =_objectProperties.size(); + for(int i=0;i objectProperties =parse(processor.getObjectProperties()); + List _objectProperties =new ArrayList<>(); + + //移除没有填写表达式的对象属性 + if(objectProperties!=null && objectProperties.size()>0) { + for(ObjectProperty objectProperty : objectProperties) { + if(StringUtils.hasText(objectProperty.getExpression())){ + _objectProperties.add(objectProperty); + } + } + } + + if(_objectProperties!=null && !_objectProperties.isEmpty()) { + StringBuilder sb =new StringBuilder(); + if(StringUtils.hasText(objectCondition)){ + sb.append("if (").append(ExpressionReplacer.groovy(objectCondition, null)).append("){").append("\n"); + } + int size =_objectProperties.size(); + for(int i=0;i " + decimal(0)); - System.out.println("decimal: 12345.6789 --> " + decimal(12345.6789)); - System.out.println("decimal: 0.6789 --> " + decimal(0.6789)); - System.out.println("decimal: 0.06789 --> " + decimal(0.06789)); + System.out.println("decimal: 0 --> " + decimal(0,0)); + System.out.println("decimal: 12345.6789 --> " + decimal(12345.6789,0)); + System.out.println("decimal: 0.6789 --> " + decimal(0.6789,0)); + System.out.println("decimal: 0.06789 --> " + decimal(0.06789,0)); - System.out.println("decimal2: 0 --> " + decimal2(0)); - System.out.println("decimal2: 12345.6789 --> " + decimal2(12345.6789)); - System.out.println("decimal2: 0.6789 --> " + decimal2(0.6789)); - System.out.println("decimal2: 0.06789 --> " + decimal2(0.06789)); - System.out.println("decimal2: 0.006789 --> " + decimal2(0.006789)); - System.out.println("decimal2: 0.0006789 --> " + decimal2(0.0006789)); + System.out.println("decimal2: 0 --> " + decimal(0,2)); + System.out.println("decimal2: 12345.6789 --> " + decimal(12345.6789,2)); + System.out.println("decimal2: 0.6789 --> " + decimal(0.6789,2)); + System.out.println("decimal2: 0.06789 --> " + decimal(0.06789,2)); + System.out.println("decimal2: 0.006789 --> " + decimal(0.006789,2)); + System.out.println("decimal2: 0.0006789 --> " + decimal(0.0006789,2)); - System.out.println("money: 0 --> " + money(0)); - System.out.println("money: 12 --> " + money(12)); - System.out.println("money: 123 --> " + money(123)); - System.out.println("money: 123456789 --> " + money(123456789)); + System.out.println("money: 0 --> " + money(0,0)); + System.out.println("money: 12 --> " + money(12,0)); + System.out.println("money: 123 --> " + money(123,0)); + System.out.println("money: 123456789 --> " + money(123456789,0)); - System.out.println("money2: 0 --> " + money2(0)); - System.out.println("money2: 12 --> " + money2(12)); - System.out.println("money2: 123 --> " + money2(123)); - System.out.println("money2: 123456789 --> " + money2(123456789)); + System.out.println("money2: 0 --> " + money(0,2)); + System.out.println("money2: 12 --> " + money(12,2)); + System.out.println("money2: 123 --> " + money(123,2)); + System.out.println("money2: 123456789 --> " + money(123456789,2)); - System.out.println("percent: 0 --> " + percent(0)); - System.out.println("percent: 1 --> " + percent(1)); - System.out.println("percent: 100 --> " + percent(100)); - System.out.println("percent: 0.9 --> " + percent(0.9)); - System.out.println("percent: 0.09 --> " + percent(0.09)); - System.out.println("percent: 0.009 --> " + percent(0.009)); + System.out.println("percent: 0 --> " + percent(0,0)); + System.out.println("percent: 1 --> " + percent(1,0)); + System.out.println("percent: 100 --> " + percent(100,0)); + System.out.println("percent: 0.9 --> " + percent(0.9,0)); + System.out.println("percent: 0.09 --> " + percent(0.09,0)); + System.out.println("percent: 0.009 --> " + percent(0.009,0)); - System.out.println("percent2: 0 --> " + percent2(0)); - System.out.println("percent2: 1 --> " + percent2(1)); - System.out.println("percent2: 100 --> " + percent2(100)); - System.out.println("percent2: 0.9 --> " + percent2(0.9)); - System.out.println("percent2: 0.09 --> " + percent2(0.09)); - System.out.println("percent2: 0.009 --> " + percent2(0.009)); + System.out.println("percent2: 0 --> " + percent(0,2)); + System.out.println("percent2: 1 --> " + percent(1,2)); + System.out.println("percent2: 100 --> " + percent(100,2)); + System.out.println("percent2: 0.9 --> " + percent(0.9,2)); + System.out.println("percent2: 0.09 --> " + percent(0.09,2)); + System.out.println("percent2: 0.009 --> " + percent(0.009,2)); } } diff --git a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/groovy.ftl b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/groovy.ftl index 9e078125..b9a85184 100644 --- a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/groovy.ftl +++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/groovy.ftl @@ -1,6 +1,9 @@ <#ftl strip_whitespace=true> package io.sc.engine.rule.core.code; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.core.type.TypeReference; @@ -32,65 +35,70 @@ import io.sc.engine.rule.client.Executor; import static java.lang.Math.PI; import static java.lang.Math.E; + 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.IEEEremainder; -import static java.lang.Math.log; 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; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import static java.lang.Math.sin; +import static java.lang.Math.cos; +import static java.lang.Math.tan; + +import static java.lang.Math.asin; +import static java.lang.Math.acos; +import static java.lang.Math.atan; + +import static java.lang.Math.sinh; +import static java.lang.Math.cosh; +import static java.lang.Math.tanh; + -import io.sc.engine.rule.core.function.JpmmlEvaluator; import static io.sc.engine.rule.core.function.ArithmeticFunction.randomInt; 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.sum; +import static io.sc.engine.rule.core.function.ArithmeticFunction.log; +import static io.sc.engine.rule.core.function.ArithmeticFunction.ln; +import static io.sc.engine.rule.core.function.ArithmeticFunction.lg; + 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.StringFunction.length; +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.function.StringFunction.lowerCase; +import static io.sc.engine.rule.core.function.StringFunction.contains; +import static io.sc.engine.rule.core.function.StringFunction.startsWith; +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.NormalDistributionFunction.normalDistributioin; -import static io.sc.engine.rule.core.function.NormalDistributionFunction.inverseNormalDistributioin; -import static io.sc.engine.rule.core.util.NumberFormater.decimal; -import static io.sc.engine.rule.core.util.NumberFormater.decimal1; -import static io.sc.engine.rule.core.util.NumberFormater.decimal2; -import static io.sc.engine.rule.core.util.NumberFormater.decimal3; -import static io.sc.engine.rule.core.util.NumberFormater.decimal4; -import static io.sc.engine.rule.core.util.NumberFormater.decimal5; -import static io.sc.engine.rule.core.util.NumberFormater.decimal6; +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.nil; +import static io.sc.engine.rule.core.function.SpecialValueFunction.zero; +import static io.sc.engine.rule.core.function.SpecialValueFunction.nan; +import static io.sc.engine.rule.core.function.SpecialValueFunction.infinite; +import static io.sc.engine.rule.core.util.NumberFormater.decimal; +import static io.sc.engine.rule.core.util.NumberFormater.comma; import static io.sc.engine.rule.core.util.NumberFormater.money; -import static io.sc.engine.rule.core.util.NumberFormater.money2; - -import static io.sc.engine.rule.core.util.NumberFormater.rmb; -import static io.sc.engine.rule.core.util.NumberFormater.rmb2; - import static io.sc.engine.rule.core.util.NumberFormater.percent; -import static io.sc.engine.rule.core.util.NumberFormater.percent2; +import io.sc.engine.rule.core.function.JpmmlEvaluator; <#if $wrapper.type=="RESOURCE"> <#include "/resource_groovy.ftl"/> diff --git a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/lib/lib.ftl b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/lib/lib.ftl index 574cb102..efad6c36 100644 --- a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/lib/lib.ftl +++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/lib/lib.ftl @@ -76,7 +76,9 @@ class ${CodeReplacer.className(lib.code,lib.version)}{ ${CodeReplacer.className(lib.code)}_V${lib.version} arg =this; <#list (indicator.processors)! as processor> if(log.isDebugEnabled()){log.debug(" {}","${parameter.name}(${parameter.type})");} - <#if "OPTION_VALUE"==(processor.type)!> + <#if "OBJECT_PROPERTIES"==(processor.type)!> + <#include "/processor/OBJECT_PROPERTIES.ftl"/> + <#elseif "OPTION_VALUE"==(processor.type)!> <#include "/processor/OPTION_VALUE.ftl"/> <#elseif "ARITHMETIC"==(processor.type)!> <#include "/processor/ARITHMETIC.ftl"/> diff --git a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/lib_groovy.ftl b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/lib_groovy.ftl index ac79d5d4..61a7cb00 100644 --- a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/lib_groovy.ftl +++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/lib_groovy.ftl @@ -68,7 +68,9 @@ class ${CodeReplacer.className(lib.code,lib.version)}{ <#list (indicator.processors)! as processor> <#assign parameter=indicator> if(log.isDebugEnabled()){log.debug(" {}","${parameter.name}(${parameter.type})");} - <#if "OPTION_VALUE"==(processor.type)!> + <#if "OBJECT_PROPERTIES"==(processor.type)!> + <#include "/processor/OBJECT_PROPERTIES.ftl"/> + <#elseif "OPTION_VALUE"==(processor.type)!> <#include "/processor/OPTION_VALUE.ftl"/> <#elseif "ARITHMETIC"==(processor.type)!> <#include "/processor/ARITHMETIC.ftl"/> diff --git a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/model/model.ftl b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/model/model.ftl index dc78107b..cb8ca71d 100644 --- a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/model/model.ftl +++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/model/model.ftl @@ -165,8 +165,10 @@ class ${CodeReplacer.className(resource.code,resource.version)} { if(log.isDebugEnabled()){log.debug(" {}","${parameter.name}(${parameter.type})");} <#list (parameter.processors)! as processor><#-- 循环将每个处理器转换成 java 语句 --> <#if (processor.enable)!> - <#if "OPTION_VALUE"==(processor.type)!> - <#include "/processor/OPTION_VALUE.ftl"/> + <#if "OBJECT_PROPERTIES"==(processor.type)!> + <#include "/processor/OBJECT_PROPERTIES.ftl"/> + <#elseif "OPTION_VALUE"==(processor.type)!> + <#include "/processor/OPTION_VALUE.ftl"/> <#elseif "ARITHMETIC"==(processor.type)!> <#include "/processor/ARITHMETIC.ftl"/> <#elseif "TERNARY"==(processor.type)!> diff --git a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/processor/OBJECT_PROPERTIES.ftl b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/processor/OBJECT_PROPERTIES.ftl new file mode 100644 index 00000000..fa4ef3cc --- /dev/null +++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/groovy/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/resources/io/sc/engine/rule/core/i18n/enums.properties b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums.properties index 17e38544..81df7aa7 100644 --- a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums.properties +++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums.properties @@ -47,6 +47,7 @@ io.sc.engine.rule.core.enums.ParameterType.CONSTANT=Constant # \u5904\u7406\u5668\u7C7B\u578B\u679A\u4E3E #================================================ io.sc.engine.rule.core.enums.ProcessorType.EMPTY=Empty +io.sc.engine.rule.core.enums.ProcessorType.OBJECT_PROPERTIES=Object Properties io.sc.engine.rule.core.enums.ProcessorType.OPTION_VALUE=Option Value io.sc.engine.rule.core.enums.ProcessorType.MATH_FORMULA=Math Formula io.sc.engine.rule.core.enums.ProcessorType.ARITHMETIC=Arithmetic diff --git a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_tw_CN.properties b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_tw_CN.properties index af197559..8280c2b7 100644 --- a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_tw_CN.properties +++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_tw_CN.properties @@ -47,6 +47,7 @@ io.sc.engine.rule.core.enums.ParameterType.CONSTANT=\u5E38\u91CF # \u5904\u7406\u5668\u7C7B\u578B\u679A\u4E3E #================================================ io.sc.engine.rule.core.enums.ProcessorType.EMPTY=\u7A7A +io.sc.engine.rule.core.enums.ProcessorType.OBJECT_PROPERTIES=\u5C0D\u8C61\u5C6C\u6027 io.sc.engine.rule.core.enums.ProcessorType.OPTION_VALUE=\u9078\u9805\u503C io.sc.engine.rule.core.enums.ProcessorType.MATH_FORMULA=\u6578\u5B78\u516C\u5F0F io.sc.engine.rule.core.enums.ProcessorType.ARITHMETIC=\u7B97\u6578\u904B\u7B97 diff --git a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_zh_CN.properties b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_zh_CN.properties index 3e674820..115c0e2c 100644 --- a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_zh_CN.properties +++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_zh_CN.properties @@ -47,6 +47,7 @@ io.sc.engine.rule.core.enums.ParameterType.CONSTANT=\u5E38\u91CF # \u5904\u7406\u5668\u7C7B\u578B\u679A\u4E3E #================================================ io.sc.engine.rule.core.enums.ProcessorType.EMPTY=\u7A7A +io.sc.engine.rule.core.enums.ProcessorType.OBJECT_PROPERTIES=\u5BF9\u8C61\u5C5E\u6027 io.sc.engine.rule.core.enums.ProcessorType.OPTION_VALUE=\u9009\u9879\u503C io.sc.engine.rule.core.enums.ProcessorType.MATH_FORMULA=\u6570\u5B66\u516C\u5F0F io.sc.engine.rule.core.enums.ProcessorType.ARITHMETIC=\u7B97\u6570\u8FD0\u7B97 diff --git a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/xsd/math.xsd b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/xsd/math.xsd new file mode 100644 index 00000000..07a9f0dc --- /dev/null +++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/xsd/math.xsd @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/io.sc.engine.rule.doc/README.adoc b/io.sc.engine.rule.doc/README.adoc new file mode 100644 index 00000000..d6f029c7 --- /dev/null +++ b/io.sc.engine.rule.doc/README.adoc @@ -0,0 +1,3 @@ += 项目介绍 + + diff --git a/io.sc.engine.rule.doc/asciidoc/001-introduction/introduction.adoc b/io.sc.engine.rule.doc/asciidoc/001-introduction/introduction.adoc new file mode 100644 index 00000000..f6b53269 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/001-introduction/introduction.adoc @@ -0,0 +1,10 @@ += 介绍 +== 简介 +决策引擎,用于集中管理系统中所需要的模型、规则和决策, 采用 J2EE B/S 架构设计,具有以下主要特点: + +. 拥有自主知识产权,自主可控 +. 成熟稳定 +. 满足多种应用需求(包括:评级、预警、监测、财务分析等) +. 使用简单,功能丰富 +. 部署灵活,接口丰富 +. 性能优异 diff --git a/io.sc.engine.rule.doc/asciidoc/002-environment/environment.adoc b/io.sc.engine.rule.doc/asciidoc/002-environment/environment.adoc new file mode 100644 index 00000000..1699f208 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/002-environment/environment.adoc @@ -0,0 +1,10 @@ += 环境要求 + +[options="header",cols="1,2"] +|=== +| 环境 | 要求 +| 操作系统 | Windows、Linux、Mac OS X、Unix +| 数据库 | 达梦8、OceanBase、高斯DB、Golden DB、TDSQL、TiDB、Oracle、DB2、MySQL、Postgresql、H2、 +| JDK | JDK 1.8+ +| 应用服务器 | 宝兰德、东方通、Tomcat 9.0.83+、 WebSphere 8.5.5+、Weblogic 12C+ +|=== \ No newline at end of file diff --git a/io.sc.engine.rule.doc/asciidoc/003-install/install.adoc b/io.sc.engine.rule.doc/asciidoc/003-install/install.adoc new file mode 100644 index 00000000..a89dd6d1 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/003-install/install.adoc @@ -0,0 +1,125 @@ += 安装部署 +决策引擎提供可视化页面进行安装部署,故在安装部署决策引擎前需首先启动决策引擎系统,然后通过浏览器可视化界面安装向导完成安装部署。 + +[[database-ready]] +== 准备数据库 +在进行安装前,需为决策引擎准备好用于存储数据的数据库,目前决策引擎支持的数据库包括: + +. 达梦8 +. OceanBase +. 高斯DB +. Golden DB +. TDSQL +. TiDB +. Oracle +. DB2 +. MySQL +. Postgresql +. H2 + +使用者可根据自己的情况自行为决策引擎创建数据库,表空间,登录用户名及密码等操作。 + + +[[launch-system]] +== 启动决策引擎 +决策引擎产品提供的 war 包可直接执行,需安装 JDK 1.8 及其以上,启动方式分为以下两种: + +=== 直接启动 +[options="header",cols="1,2,1"] +|=== +| 操作系统 | 启动命令 | 说明 + +| 类 Unix +a| [source,bash] +---- +java -jar app.engine.rule-x.x.x.war +---- +| x.x.x 为引擎版本号 + +| Windows +a| [source,bash] +---- +java -jar app.engine.rule-x.x.x.war +---- +| x.x.x 为引擎版本号 +|=== + +[[launch-system-at-webserver]] +=== 在应用服务器中启动 +将决策引擎产品提供的 war 包部署到应用服务器中。 + +== 安装决策引擎 +当 <> 完成后,打开浏览器访问决策引擎安装向导页面: + +[options="header",cols="1,2,3"] +|=== +| 启动方式 | 默认访问地址 | 说明 +| 直接启动 | http://localhost:8080 | +| 在应用服务器中启动 | http://localhost:xxxx/yyyy | xxxx 代表服务器端口,yyyy代表部署的应用上下文名称 +|=== + +image::install/001.png[] + +点击 "下一步" 按钮,进入 "安装类型" 页面: + +image::install/002.png[] + +根据需求选择一种安装类型: + +* 快速安装: 无需独立的数据库支持, 仅适用于测试环境 +* 定制安装: 仅适用于生产环境 + +选中 "定制安装" 前的选择按钮, 点击 "下一步" 按钮,进入 "数据源配置" 页面: + +image::install/003.png[] + +* 数据源类型: 选择数据源类型, 包含 JDBC 和 JNDI +* 数据库类型: 选择数据库类型 +* JDBC URL: 输入 JDBC 连接 URL +* 数据库登陆用户名称: 输入用户登录数据库的用户名 +* 数据库登陆密码: 输入用户登录数据库的密码 + +[测试数据库连接]: 测试数据库是否连通 + +数据库安装选项: + +* 保留现有数据库中的所有对象,即跳过数据库对象创建 +* 自动创建数据库对象并初始化必要的数据 +* 安装前首先删除现有数据库中所有对象,注意:该操作不可逆,在确认执行安装前做好数据备份! + +点击 "下一步" 按钮,进入 "服务器配置" 页面: + +image::install/004.png[] + +* 请求协议: 选择 HTTP 协议, 支持: HTTP 和 HTTPS +* IP 地址: 可以绑定服务的 IP 地址(通常用于多网卡服务器上) +* 端口: 服务端口 +* Web 上下文路径: 服务 Web 上下文路径, 注意, 访问时 URL 必须和此处一致 + +点击 "下一步" 按钮,进入 "系统管理员配置" 页面: + +image::install/005.png[] + +* 系统管理员登录名: 用于登录系统的管理员登录名称 +* 密码: 用于登录系统的管理员登录密码 + +点击 "下一步",进入 "安装摘要" 页面。 + +image::install/006.png[] + +点击 "开始安装",开始正式安装。 + +image::install/007.png[] + +等待安装完成, 进入 "完成" 页面: + +image::install/008.png[] + +点击 "您可以通过点击此链接进入系统", 进入系统。 + +image::install/009.png[] + +输入前面步骤中输入的系统管理员登录名和密码, 登录系统。 + +image::install/010.png[] + diff --git a/io.sc.engine.rule.doc/asciidoc/004-use-help/authorization/authorization.adoc b/io.sc.engine.rule.doc/asciidoc/004-use-help/authorization/authorization.adoc new file mode 100644 index 00000000..244edaa8 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/004-use-help/authorization/authorization.adoc @@ -0,0 +1,6 @@ += 权限管理 +== 功能入口 + +image::use-help/authorization/001.png[] + +通过配置角色和资源的对应关系,为资源设置权限。 \ No newline at end of file diff --git a/io.sc.engine.rule.doc/asciidoc/004-use-help/dictionary/dictionary.adoc b/io.sc.engine.rule.doc/asciidoc/004-use-help/dictionary/dictionary.adoc new file mode 100644 index 00000000..3b1ab1b4 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/004-use-help/dictionary/dictionary.adoc @@ -0,0 +1,49 @@ += 元数据管理 +== 功能入口 + +image::use-help/dictionary/001.png[] + +== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新元数据数据 +| 全部展开 | 将数据元数据的所有子节点展开 +| 全部折叠 | 将数据元数据的所有子节点收起 +| 新增 - 顶级文件夹 | 新建顶级文件夹 +| 新增 - 子文件夹 | 在当前选择的文件夹下新建子文件夹 +| 新增 - Java类型 | 新建 Java 类型 +| 新增 - 用户自定义类型 | 新建自定义类型 +| 新增 - 枚举类型 | 新建枚举类型 +| 更多 - 复制 - 复制 | 复制当前选中的元数据 +| 更多 - 复制 - 深度复制 | 复制当前选中的元数据,同时将其所有的关联数据也进行复制 +| 更多 - 复制 - 深度复制(新) | 复制当前选中的元数据,同时将其所有的关联数据也进行复制,将会深度复制为新版本的元数据 +| 更多 - 编辑 | 修改当前选中的元数据 +| 更多 - 删除 | 删除当前选中的元数据 +| 更多 - 生成示例 Json 串 | 根据当前元数据,生成 Json 示例字符串,用于为测试用例提供参数值 +| 更多 - 发布 | 发布当前选中的元数据 +| 操作 - 导入 - 导入 | 将元数据 json 文件导入到引擎中 +| 操作 - 导入 - 导入示例 | 导入系统提供的默认示例,为配置提供参考 +| 操作 - 查看 | 查看当前选择的元数据的详细信息 +| 操作 - 导出 | 将元数据导出成 json 文件 +|=== + +== 元数据字段配置 +=== 功能入口 +在 "元数据" 中选中某个元数据,如果该元数据是 "自定义类型" 或 "枚举类型" 时,右侧就会展示该元数据所包含的字段。 + +image::use-help/dictionary/002.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 查询 | 根据查询条件查询元数据的字段 +| 刷新 | 重新刷元数据的字段数据 +| 新增 | 新增元数据的字段 +| 复制 | 复制当前选中的数据字典字段 +| 编辑 | 修改当前选中的数据字典字段 +| 删除 | 删除当前选中的数据字典字段 +| 查看 | 查看当前选择的元数据字段的详细信息 +| 导出 | 将元数据字段导出成 csv 文件 +|=== \ No newline at end of file diff --git a/io.sc.engine.rule.doc/asciidoc/004-use-help/explorer/explorer.adoc b/io.sc.engine.rule.doc/asciidoc/004-use-help/explorer/explorer.adoc new file mode 100644 index 00000000..85af8b30 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/004-use-help/explorer/explorer.adoc @@ -0,0 +1,31 @@ += 资源管理器 +资源管理器是用于管理决策引擎中的模型、规则、评分卡、决策等资源的地方。 + +== 功能入口 +image::use-help/explorer/001.png[] + +== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新资源管理器中的资源数据 +| 全部展开 | 将资源树的所有子节点展开 +| 全部折叠 | 将资源树的所有子节点收起 +| 新增 - 顶级文件夹 | 在资源树中新建顶级文件夹 +| 新增 - 子文件夹 | 在资源树中选择的文件夹下新建子文件夹 +| 新增 - 模型 | 新建模型、规则、决策等 +| 新增 - 评分卡 | 新建简单评分卡模型 +| 复制 | 复制当前选中的文件夹或节点 +| 深度复制 - 深度复制 | 复制当前选中的文件夹或节点, 同时将其所有的关联数据也进行复制, 对于模型或评分卡对象,将会深度复制为新版本 +| 深度复制 - 深度复制(新) | 复制当前选中的文件夹或节点, 同时将其所有的关联数据也进行复制, 生成一个新的资源 +| 编辑 | 修改当前选中的文件夹或节点 +| 删除 | 删除当前选中的文件夹或节点(可多选) +| 附件 | 管理当前选中模型、规则、决策的附件 +| 查看/设计 | 查看或配置当前选择的模型、规则、决策或评分卡 +| 发布 - 上线 | 上线当前选择的模型、规则、决策或评分卡 +| 发布 - 下线 | 下线当前选择的模型、规则、决策或评分卡 +| 导入 | 将资源配置 json 文件导入到引擎中 +| 导入示例 | 导入系统提供的默认示例,为配置提供参考 +| 查看 | 查看当前选择的模型、规则、决策或评分卡的详细信息 +| 导出 | 将选择的资源导出成 json 文件 +|=== diff --git a/io.sc.engine.rule.doc/asciidoc/004-use-help/indicator-lib/indicator-lib.adoc b/io.sc.engine.rule.doc/asciidoc/004-use-help/indicator-lib/indicator-lib.adoc new file mode 100644 index 00000000..fe716e30 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/004-use-help/indicator-lib/indicator-lib.adoc @@ -0,0 +1,151 @@ += 特征库配置 +== 功能入口 + +image::use-help/indicator-lib/001.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新特征库数据 +| 全部展开 | 将特征库树的所有子节点展开 +| 全部折叠 | 将特征库树的所有子节点收起 +| 更多 - 新增 - 顶级文件夹 | 在特征库树中新增顶级文件夹 +| 更多 - 新增 - 新增子文件夹 | 在特征库树中选择的文件夹下新建子文件夹 +| 更多 - 新增 - 新增指标库 | 在特征库树中新建特征库 +| 更多 - 复制 - 复制 | 复制当前选中的特征库 +| 更多 - 复制 - 深度复制 | 复制当前选中的特征库,同时将其所有的关联数据也进行复制 +| 更多 - 复制 - 深度复制(新) | 复制当前选中的特征库,同时将其所有的关联数据也进行复制,将会深度复制为新版本的特征库 +| 更多 - 编辑 | 修改当前选中的特征库 +| 更多 - 删除 | 删除当前选中的特征库 +| 更多 - 生成脚本源代码 | 根据当前特征库,生成脚本源代码,主要用于查错 +| 更多 - 发布 | 发布当前选中的特征库 +| 更多 - 导入 - 导入 | 将特征库配置 json 文件导入到引擎中 +| 更多 - 导入 - 导入示例 | 导入系统提供的默认示例,为配置提供参考 +| 更多 - 查看 | 查看当前选择的特征库的详细信息 +| 更多 - 导出 | 将特征库导出成 csv 文件 +|=== + +== 特征配置 +=== 功能入口 +在 "特征库" 中选中某个特征库,右边将出现特征配置页面。 + +image::use-help/indicator-lib/002.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 查询 | 根据查询条件查询特征 +| 刷新 | 重新刷特征 +| 新增 - 接口 | 新增输入接口 +| 新增 - 指标 | 新增具有逻辑计算的特征 +| 复制 | 复制当前选中的特征 +| 深度复制 | 复制当前选中的特征,同时将其所有的关联数据也进行复制 +| 编辑 | 修改当前选中的特征 +| 删除 | 删除当前选中的特征 +| 查看 | 查看当前选择的特征的详细信息 +| 导出 | 将特征导出成 csv 文件 +|=== + +== 特征验证器配置 +=== 功能入口 +在 "特征列表" 中选中某个特征,如果该特征类型为 "接口" 时,右下方将出现特征验证器,用于检测特征的合法性。 + +image::use-help/indicator-lib/003.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新特征验证器列表数据 +| 新增 | 新增特征验证器 +| 复制 | 复制当前选中的特征验证器 +| 编辑 | 修改当前选中的特征验证器 +| 删除 | 删除当前选中的特征验证器 +| 查看 | 查看当前选择的特征验证器的详细信息 +| 导出 | 将特征验证器导出成 csv 文件 +|=== + +=== 支持的特征验证器 +[cols="1,1,2",options="header"] +|=== +| 指标类型 | 验证器 | 功能说明 +| 字符串 | 非空 | 输入字符串指标是否为非空,如果为非空通过验证,否则报验证错误 +| 字符串 | 空 | 输入字符串指标是否为空,如果为空通过验证,否则报验证错误 +| 字符串 | 长度范围 | 输入字符串指标的长度是否在指定的范围内 +| 字符串 | 邮箱 | 输入字符串指标是否是一个合法的电子邮箱 +| 字符串 | 正则表达式 | 输入字符串指标是否符合指定的正则表达式 + +| 数字 | 非空 | 输入数字指标是否为非空,如果为非空通过验证,否则报验证错误 +| 数字 | 空 | 输入数字指标是否为空,如果为空通过验证,否则报验证错误 +| 数字 | 长度范围 | 输入数字指标的值是否在指定的范围内 + +| 日期 | 非空 | 输入日期指标是否为非空,如果为非空通过验证,否则报验证错误 +| 日期 | 空 | 输入日期指标是否为空,如果为空通过验证,否则报验证错误 +| 日期 | 长度范围 | 输入日期指标的值是否在指定的范围内 +|=== + +== 特征处理器配置 +=== 功能入口 +在 "特征列表" 中选中某个特征,如果该特征类型为 "指标" 时,右下方将出现特征处理器,用于配置特征的计算逻辑。 + +image::use-help/indicator-lib/004.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新指标处理器列表数据 +| 新增 - 算数运算 | 新增算数运算指标处理器 +| 新增 - 三元操作 | 新增三元操作指标处理器 +| 新增 - When-Then运算 | 新增 When-Then 运算指标处理器 +| 新增 - 数值分段函数 | 新增数值分段函数指标处理器 +| 新增 - 条件分段函数 | 新增条件分段函数指标处理器 +| 新增 - Groovy 脚本代码 | 新增 Groovy 脚本代码指标处理器 +| 复制 | 复制当前选中的指标处理器 +| 编辑 | 修改当前选中的指标处理器 +| 删除 | 删除当前选中的指标处理器 +| 查看 | 查看当前选择的指标处理器的详细信息 +| 导出 | 将指标处理器导出成 csv 文件 +|=== + +== 特征库测试用例配置 +=== 功能入口 +在 "特征库" 中选中特征库根节点,右边将出现特征库和测试用例,选中 "测试用例" Tab,用于配置特征库的测试用例。 + +image::use-help/indicator-lib/005.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新测试用例列表数据 +| 新增 | 新增测试用例 +| 复制 | 复制当前选中的测试用例 +| 深度复制 | 复制当前选中的测试用例,同时将其所有的关联数据也进行复制 +| 编辑 | 修改当前选中的测试用例 +| 删除 | 删除当前选中的测试用例 +| 执行 | 执行当前选中的测试用例 +| 执行所有 | 执行列表中所有的测试用例 +| 查看 | 查看当前选择的测试用例的详细信息 +| 导出 | 将当前测试用例导出成 csv 文件 +|=== + +== 特征库测试用例参数配置 +=== 功能入口 +在特征库测试用例 "用例列表" 中选中一条测试用例,右下边将出现该测试用例的参数。 + +image::use-help/indicator-lib/006.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新测试用例参数列表数据 +| 全部折叠 | 将模型参数树的所有节点收起 +| 编辑 | 修改当前选中的测试用例参数 +| 执行 | 执行当前选中的测试用例 +| 查看 | 查看当前选择的测试用例参数的详细信息 +| 导出 | 将当前测试用例参数导出成 csv 文件 +|=== \ No newline at end of file diff --git a/io.sc.engine.rule.doc/asciidoc/004-use-help/migration/migration.adoc b/io.sc.engine.rule.doc/asciidoc/004-use-help/migration/migration.adoc new file mode 100644 index 00000000..9dec8c1e --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/004-use-help/migration/migration.adoc @@ -0,0 +1,16 @@ += 数据备份和迁移 +该功能主要用于在不同的环境对引擎的配置进行备份和迁移。 + +== 功能入口 + +image::use-help/migration/001.png[] + +== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 导入数据 (通过上传文件导入) | 通过上传导出的 json 配置文件导入到引擎中 +| 导出所有 | 将现有决策引擎中的所有配置信息全部导出成 json 文件 +| 导入数据 (从服务器文件导入) | 通过指定服务器端的 json 配置文件将数据导入到引擎中 +| 删除所有现有数据 | 将现有决策引擎中的所有配置信息全部删除 +|=== diff --git a/io.sc.engine.rule.doc/asciidoc/004-use-help/model/model.adoc b/io.sc.engine.rule.doc/asciidoc/004-use-help/model/model.adoc new file mode 100644 index 00000000..9b052b4e --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/004-use-help/model/model.adoc @@ -0,0 +1,171 @@ += 模型配置 +== 功能入口 +在 "资源管理器" 中双击(或点击查看/设计)某个模型后,系统会新开一个窗口,用于设计模型的详细信息页面。 + +image::use-help/model/001.png[] + +== 模型结构树配置 +通过该配置部分,可以配置具有无限层级关系的模型结构。 + +image::use-help/model/002.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新模型树数据 +| 全部展开 | 将模型树的所有子节点展开 +| 全部折叠 | 将模型树的所有子节点收起 +| 更多 - 添加子模型 | 在模型树中选择的模型或子模型下新建子模型 +| 更多 - 复制 | 复制当前选中的子模型 +| 更多 - 深度复制 | 复制当前选中的子模型,同时将其所有的关联数据也进行复制 +| 更多 - 编辑 | 修改当前选中的子模型 +| 更多 - 删除 | 删除当前选中的子模型 +| 更多 - 生成脚本代码 | 根据当前模型,生成脚本代码,主要用于查错 +| 更多 - 生成脚本代码(测试用例) | 根据当前模型,生成脚本代码(测试用例),主要用于查错 +| 更多 - 查看 | 查看当前选择的子模型的详细信息 +| 导出 | 将当前模型结构导出成 csv 文件 +|=== + +== 模型参数配置 +=== 功能入口 +在 "模型结构" 中选中某个子模型,右侧就会展示该子模型所包含的参数。 + +image::use-help/model/003.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新参数列表数据 +| 新增 - 常量 | 新增常量参数 +| 新增 - 输入值 | 新增输入值参数 +| 新增 - 输入值(选项) | 新增输入值(选项)参数 +| 新增 - 指标 | 新增指标参数 +| 新增 - 中间值 | 新增中间值参数 +| 新增 - 结果值 | 新增结果值参数 +| 新增 - 规则结果值 | 新增规则结果值参数 +| 新增 - 单规则结果值 | 新增单规则结果值参数 +| 新增 - 导入 PMML | 通过导入 PMML 文件生成相关的输入输出参数 +| 复制 | 复制当前选中的参数 +| 深度复制 | 复制当前选中的参数,同时将其所有的关联数据也进行复制 +| 编辑 | 修改当前选中的参数 +| 删除 | 删除当前选中的参数 +| 移动 | 将选中的参数在不同的子模型间进行移动 +| 查看 | 查看当前选择的参数的详细信息 +| 导出 | 将当前模型参数导出成 csv 文件 +|=== + +== 模型参数验证器配置 +=== 功能入口 +在 "参数列表" 中选中某个参数,如果该参数类型为 "输入值" 时,右下方将出现参数验证器,用于检测参数的合法性。 + +image::use-help/model/004.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新参数验证器列表数据 +| 新增 | 新增参数验证器 +| 复制 | 复制当前选中的参数验证器 +| 编辑 | 修改当前选中的参数验证器 +| 删除 | 删除当前选中的参数验证器 +| 查看 | 查看当前选择的参数验证器的详细信息 +| 导出 | 将当前参数验证器导出成 csv 文件 +|=== + +=== 支持的参数验证器 +[cols="1,1,2",options="header"] +|=== +| 参数类型 | 验证器 | 功能说明 +| 字符串 | 非空 | 输入字符串参数是否为非空,如果为非空通过验证,否则报验证错误 +| 字符串 | 空 | 输入字符串参数是否为空,如果为空通过验证,否则报验证错误 +| 字符串 | 长度范围 | 输入字符串参数的长度是否在指定的范围内 +| 字符串 | 邮箱 | 输入字符串参数是否是一个合法的电子邮箱 +| 字符串 | 正则表达式 | 输入字符串参数是否符合指定的正则表达式 + +| 数字 | 非空 | 输入数字参数是否为非空,如果为非空通过验证,否则报验证错误 +| 数字 | 空 | 输入数字参数是否为空,如果为空通过验证,否则报验证错误 +| 数字 | 长度范围 | 输入数字参数的值是否在指定的范围内 + +| 日期 | 非空 | 输入日期参数是否为非空,如果为非空通过验证,否则报验证错误 +| 日期 | 空 | 输入日期参数是否为空,如果为空通过验证,否则报验证错误 +| 日期 | 长度范围 | 输入日期参数的值是否在指定的范围内 +|=== + +== 模型参数处理器配置 +=== 功能入口 +在 "参数列表" 中选中某个参数,如果该参数类型为 "中间值"、"结果值"、"规则结果值"、"单规则结果值" 时,右下方将出现参数处理器,用于配置参数的计算逻辑。 + +image::use-help/model/005.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新参数处理器列表数据 +| 新增 - 选项值 | 新增选项值参数处理器 +| 新增 - 数学公式 | 新增数学公式参数处理器 +| 新增 - 算数运算 | 新增算数运算参数处理器 +| 新增 - 三元操作 | 新增三元操作参数处理器 +| 新增 - When-Then运算 | 新增 When-Then 运算参数处理器 +| 新增 - 数值分段函数 | 新增数值分段函数参数处理器 +| 新增 - 条件分段函数 | 新增条件分段函数参数处理器 +| 新增 - 简单决策表 | 新增简单决策表参数处理器 +| 新增 - 决策表 | 新增决策表参数处理器 +| 新增 - 决策树 | 新增决策树参数处理器 +| 新增 - 执行流 | 新增执行流参数处理器 +| 新增 - 预测模型标记语言 | 新增预测模型标记语言(PMML)参数处理器 +| 新增 - Groovy 脚本代码 | 新增 Groovy 脚本代码参数处理器 +| 新增 - SQL 赋值 | 新增 SQL 赋值参数处理器 +| 新增 - 规则 | 新增规则参数处理器 +| 新增 - 单规则 | 新增单规则参数处理器 +| 编辑 | 修改当前选中的参数处理器 +| 删除 | 删除当前选中的参数处理器 +| 可用/禁用 | 可用/禁用当前选中的参数处理器 +| 查看 | 查看当前选择的参数处理器的详细信息 +| 导出 | 将当前参数处理器导出成 csv 文件 +|=== + +== 模型测试用例配置 +=== 功能入口 +在 "模型结构树" 中选中树的根节点,右边将出现参数和测试用例,选中 "测试用例" Tab,用于配置模型的测试用例。 + +image::use-help/model/006.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新测试用例列表数据 +| 新增 | 新增测试用例 +| 复制 | 复制当前选中的测试用例 +| 深度复制 | 复制当前选中的测试用例,同时将其所有的关联数据也进行复制 +| 编辑 | 修改当前选中的测试用例 +| 删除 | 删除当前选中的测试用例 +| 执行 | 执行当前选中的测试用例 +| 执行所有 | 执行列表中所有的测试用例 +| 批量试算 - 下载试算模版 | 下载试算模版 Excel, 用于填写批量测试用例 +| 批量试算 - 上传用例并试算 | 上传测试用例 Excel 文件, 并进行试算, 将结果以 Excel 文件返回 +| 查看 | 查看当前选择的测试用例的详细信息 +| 导出 | 将当前测试用例导出成 csv 文件 +|=== + +== 模型测试用例参数配置 +=== 功能入口 +在模型测试用例 "用例列表" 中选中一条测试用例,右下边将出现该测试用例的参数。 + +image::use-help/model/007.png[] + +=== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新测试用例参数列表数据 +| 全部折叠 | 将模型参数树的所有节点收起 +| 编辑 | 修改当前选中的测试用例参数 +| 执行 | 执行当前选中的测试用例 +| 查看 | 查看当前选择的测试用例参数的详细信息 +| 导出 | 将当前测试用例参数导出成 csv 文件 +|=== diff --git a/io.sc.engine.rule.doc/asciidoc/004-use-help/test-case/test-case.adoc b/io.sc.engine.rule.doc/asciidoc/004-use-help/test-case/test-case.adoc new file mode 100644 index 00000000..92c3f50a --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/004-use-help/test-case/test-case.adoc @@ -0,0 +1,24 @@ += 测试用例管理 +该模块用于统一集中管理各个子模块所有的测试用例,主要用于回归测试。 + +== 功能入口 + +image::use-help/test-case/001.png[] + +== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新测试用例数据 +| 操作 - 执行 | 根据当前选择的测试用例 +| 操作 - 执行所有 | 执行所有测试用例 +| 批量试算 - 上传用例并试算 | 上传测试用例 Excel 文件, 并进行试算, 将结果以 Excel 文件返回 +| 查看 | 查看当前选择的测试用例的详细信息 +| 导出 | 将当前测试用例导出成 csv 文件 +|=== + +== 查看用例参数列表 + +image::use-help/test-case/002.png[] + +NOTE: 此处仅用于查看测试用例参数,不可进行修改。 diff --git a/io.sc.engine.rule.doc/asciidoc/004-use-help/use-help.adoc b/io.sc.engine.rule.doc/asciidoc/004-use-help/use-help.adoc new file mode 100644 index 00000000..f9882618 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/004-use-help/use-help.adoc @@ -0,0 +1,9 @@ += 操作手册 + +include::explorer/explorer.adoc[leveloffset=+1] +include::model/model.adoc[leveloffset=+1] +include::authorization/authorization.adoc[leveloffset=+1] +include::dictionary/dictionary.adoc[leveloffset=+1] +include::indicator-lib/indicator-lib.adoc[leveloffset=+1] +include::test-case/test-case.adoc[leveloffset=+1] +include::migration/migration.adoc[leveloffset=+1] \ No newline at end of file diff --git a/io.sc.engine.rule.doc/asciidoc/004-use-help/workflow/workflow.adoc b/io.sc.engine.rule.doc/asciidoc/004-use-help/workflow/workflow.adoc new file mode 100644 index 00000000..f34d4018 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/004-use-help/workflow/workflow.adoc @@ -0,0 +1,23 @@ += 流程审批 +该功能主要用于在资源上线或下线时进行工作流审批, 系统默认在资源上线或下线时不进行工作流审批, +如果需要开启该功能, 请通过 "系统管理" -> "参数管理" -> "决策引擎(服务器)" -> "模型发布前是否需要流程审批" 进行设置。 + +image::use-help/workflow/001.png[] + +== 功能入口 +image::use-help/workflow/002.png[] + +== 功能清单 +[cols="1,2",options="header"] +|=== +| 功能项 | 功能说明 +| 刷新 | 重新刷新任务列表 +| 查看资源 | 查看当前需要流程审批的资源的详细信息 +| 查看附件 | 查看当前需要流程审批的资源的附件信息 +| 操作 - 领取任务 | 当审批流程设置了允许领取任务时, 可通过该操作领取任务 +| 操作 - 归还任务 | 当审批流程设置了允许领取任务时, 可通过该操作归还任务 +| 操作 - 审批任务 | 完成当前任务 +| 操作 - 终止任务 | 终止当前任务 +| 查看 | 查看当前任务的详细信息 +| 导出 | 将当前任务导出成 csv 文件 +|=== diff --git a/io.sc.engine.rule.doc/asciidoc/005-developer/client/client.adoc b/io.sc.engine.rule.doc/asciidoc/005-developer/client/client.adoc new file mode 100644 index 00000000..8d7ad39a --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/005-developer/client/client.adoc @@ -0,0 +1,108 @@ += 客户端集成示例 +== 需要的客户端 jar 包 + +== 示例代码 +[source%nowrap,java] +---- +package org.wsp.engine.rule.client.test; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.wsp.engine.rule.client.Executor; +import org.wsp.engine.rule.client.ExecutorBuilder; +import org.wsp.engine.rule.client.ExecutorFactory; +import org.wsp.engine.rule.client.enums.ExecutorMode; +import org.wsp.engine.rule.client.enums.LoaderMode; +import org.wsp.engine.rule.core.classes.Rule; +import org.wsp.engine.rule.core.classes.RuleResult; +import org.wsp.engine.rule.core.code.impl.support.ParameterResult; +import org.wsp.engine.rule.core.code.impl.support.ResourceResult; +import org.wsp.engine.rule.core.enums.ParameterType; +import org.wsp.engine.rule.core.util.TimeTracer; + +public class ResourceCallTest { + private static final String MODEL_API_URL ="http://localhost:8080/re/resource"; //远程模型引擎 API URL 地址 + private static final String EXECUTOR_NAME ="executor"; //执行器名称 + private static final String MODEL_CODE ="M116762018316101"; //需要执行的模型代码 + private static final Integer MODEL_VERSION =null; //需要执行的模型版本 + private static final int COUNT =1; //需要执行的次数 + + private static TimeTracer tracer =TimeTracer.getInstance("tracer"); //创建一个时间跟踪器,用于跟踪执行时间,在生产环境中不要这样做 + + public static void main(String[] args) throws Exception{ + init(); + testLocalExecutorRemoteLoader_map(); + } + + public static void init() throws Exception{ + //创建执行器(本地执行,远程获取模型定义) + Executor executor =new ExecutorBuilder().build(ExecutorMode.LOCAL, LoaderMode.REMOTE, MODEL_API_URL); + + //注册执行器,便于之后获取,如果每次都构建一个新的执行器,将显著影响性能 + ExecutorFactory.register(EXECUTOR_NAME, executor); + + //第一次执行,消除缓存对性能对比测试的影响 + //executor.executeByCode(MODEL_CODE, MODEL_VERSION,JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(prepareData())); + ResourceResult result =executor.executeByCode(MODEL_CODE, MODEL_VERSION,prepareData()); + List parameters =result.getData(); + for(ParameterResult parameter : parameters) { + if(ParameterType.RULE_RESULT.equals(parameter.getType())) { + RuleResult ruleResult =parameter.getRuleResult(); + ruleResult.isTriggered();//规则是否触发 + ruleResult.getLevel();//规则触发的子规则最大等级 + List rules =ruleResult.getRules(); + for(Rule rule : rules) { + rule.getCode(); + rule.getName(); + rule.getValue(); + rule.getLevel(); + rule.getMessage(); + } + } + } + //tracer.log("初始化完毕===================================="); + + } + + /** + * 测试本地执行器,远程模型定义加载器,输入参数为 map 对象 + * @throws Exception 违例 + */ + public static void testLocalExecutorRemoteLoader_map() throws Exception{ + //从注册器中获取执行器 + Executor executor =ExecutorFactory.getExecutor(EXECUTOR_NAME); + tracer.log("开始执行(采用 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+ 倍!!!"); + } + + + private static Map prepareData() throws Exception{ + //上期 + Map preReport =new HashMap(); + preReport.put("F1573645395675", 1.0);//收入 + preReport.put("F1573645418335", 1.0);//毛利 + + //本期 + Map report =new HashMap(); + report.put("F1573645395675", 2.0);//收入 + report.put("F1573645418335", 1.0);//毛利 + + Map map =new HashMap(); + //map.put("current_1_issue_report", JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(preReport)); + //map.put("current_issue_report", JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(report)); + map.put("current_1_issue_report", preReport); + map.put("current_issue_report", report); + return map; + } +} + +---- \ No newline at end of file diff --git a/io.sc.engine.rule.doc/asciidoc/005-developer/developer.adoc b/io.sc.engine.rule.doc/asciidoc/005-developer/developer.adoc new file mode 100644 index 00000000..e2090a23 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/005-developer/developer.adoc @@ -0,0 +1,4 @@ += 开发者帮助 + +include::uml/类图.adoc[leveloffset=+1] +include::client/client.adoc[leveloffset=+1] \ No newline at end of file diff --git a/io.sc.engine.rule.doc/asciidoc/005-developer/uml/类图.adoc b/io.sc.engine.rule.doc/asciidoc/005-developer/uml/类图.adoc new file mode 100644 index 00000000..34717d97 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/005-developer/uml/类图.adoc @@ -0,0 +1,393 @@ += 类图 +== 引擎配置实体类图 +=== 数据字典 +[plantuml, diagram-classes-dictionary, svg] +.... +skinparam handwritten false + +class "DictionaryEntity\n(数据字典)" as DictionaryEntity { + id 唯一标识 + code 代码 + name 名称 + ... + parent 父 + children 子集合 +} + +class "FolderDictionaryEntity\n(文件夹)" as FolderDictionaryEntity +class "JavaClassDictionaryEntity\n(Java类数据字典)" as JavaClassDictionaryEntity +class "UserDefinedJavaClassDictionaryEntity\n(用户自定义Java类数据字典)" as UserDefinedJavaClassDictionaryEntity +class "EnumDictionaryEntity\n(枚举数据字典)" as EnumDictionaryEntity + +class "UserDefinedJavaClassFieldEntity\n(用于自定义Java类字段)" as UserDefinedJavaClassFieldEntity + +class "EnumItemEntity\n(枚举项)" as EnumItemEntity + +FolderDictionaryEntity -up-|> DictionaryEntity +JavaClassDictionaryEntity -up-|> DictionaryEntity +UserDefinedJavaClassDictionaryEntity -up-|> DictionaryEntity +EnumDictionaryEntity -up-|> DictionaryEntity + +UserDefinedJavaClassDictionaryEntity "1" *-down-> "N" UserDefinedJavaClassFieldEntity +EnumDictionaryEntity "1" *-down-> "N" EnumItemEntity + +.... + +=== 库 +[plantuml, diagram-classes-lib, svg] +.... +skinparam handwritten false + +class "DictionaryEntity\n(数据字典)" as DictionaryEntity { + id 唯一标识 + code 代码 + name 名称 + ... + parent 父 + children 子集合 +} + +class "LibEntity\n(库)" as LibEntity { + id 唯一标识 + ... + parent 父 + children 子集合 + testCases 测试用例集合 +} + +class "FolderLibEntity\n(文件夹)" as FolderLibEntity + +class "IndicatorLibEntity(指标库)" as IndicatorLibEntity{ + indicators 指标集合 +} + +class "IndicatorEntity\n(指标)" as IndicatorEntity{ + valueType 值类型 + valueTypeVersion 值类型版本 + lib 所属指标库 + validators 验证器集合 + processors 处理器集合 +} + +class "InterfaceIndicatorEntity\n(接口指标)" as InterfaceIndicatorEntity +class "IndicatorIndicatorEntity\n(计算指标)" as IndicatorIndicatorEntity +class "IndicatorValidatorEntity\n(指标验证器)" as IndicatorValidatorEntity #green +class "IndicatorProcessorEntity\n(指标处理器)" as IndicatorProcessorEntity #green + + +IndicatorEntity "N" -right-> "1" DictionaryEntity : 引用 > +IndicatorLibEntity "1" -right-> "N" IndicatorEntity : 包含 > +InterfaceIndicatorEntity "1" *-down-> "N" IndicatorValidatorEntity : 包含 > +IndicatorIndicatorEntity "1" *-down-> "N" IndicatorProcessorEntity : 包含 > + + +LibEntity "1" -right-> "N" LibTestCaseEntity : 包含 > +LibEntity <|-down- FolderLibEntity +LibEntity <|-down- IndicatorLibEntity + + +IndicatorEntity <|-down- InterfaceIndicatorEntity +IndicatorEntity <|-down- IndicatorIndicatorEntity + +FolderLibEntity -right[hidden]- IndicatorLibEntity +.... + +=== 指标验证器 +[plantuml, diagram-classes-indicator-validator, svg] +.... +skinparam handwritten false + +class "IndicatorValidatorEntity\n(指标验证器)" as IndicatorValidatorEntity #green + +class "DateRangeIndicatorValidatorEntity\n(日期范围指标验证器)" as DateRangeIndicatorValidatorEntity +class "DecimalRangeIndicatorValidatorEntity\n(小数范围指标验证器)" as DecimalRangeIndicatorValidatorEntity +class "EmailIndicatorValidatorEntity\n(邮件地址指标验证器)" as EmailIndicatorValidatorEntity +class "EmptyIndicatorValidatorEntity\n(空指标验证器)" as EmptyIndicatorValidatorEntity +class "FalseIndicatorValidatorEntity\n(假指标验证器)" as FalseIndicatorValidatorEntity +class "IntegerRangeIndicatorValidatorEntity\n(整数范围指标验证器)" as IntegerRangeIndicatorValidatorEntity +class "LengthRangeIndicatorValidatorEntity\n(长度范围指标验证器)" as LengthRangeIndicatorValidatorEntity +class "NotEmptyIndicatorValidatorEntity\n(非空指标验证器)" as NotEmptyIndicatorValidatorEntity +class "PatternIndicatorValidatorEntity\n(正则表达式指标验证器)" as PatternIndicatorValidatorEntity +class "TrueIndicatorValidatorEntity\n(真指标验证器)" as TrueIndicatorValidatorEntity + +IndicatorValidatorEntity <|-up- DateRangeIndicatorValidatorEntity +IndicatorValidatorEntity <|-up- DecimalRangeIndicatorValidatorEntity +IndicatorValidatorEntity <|-up- EmailIndicatorValidatorEntity +IndicatorValidatorEntity <|-up- EmptyIndicatorValidatorEntity +IndicatorValidatorEntity <|-up- FalseIndicatorValidatorEntity +IndicatorValidatorEntity <|-down- IntegerRangeIndicatorValidatorEntity +IndicatorValidatorEntity <|-down- LengthRangeIndicatorValidatorEntity +IndicatorValidatorEntity <|-down- NotEmptyIndicatorValidatorEntity +IndicatorValidatorEntity <|-down- PatternIndicatorValidatorEntity +IndicatorValidatorEntity <|-down- TrueIndicatorValidatorEntity + +.... + +=== 指标处理器 +[plantuml, diagram-classes-indicator-processor, svg] +.... +skinparam handwritten false + +class "IndicatorProcessorEntity\n(指标处理器)" as IndicatorProcessorEntity #green + +class "EmptyIndicatorProcessorEntity\n(空处理器)" as EmptyIndicatorProcessorEntity +class "TernaryIndicatorProcessorEntity\n(三元运算处理器)" as TernaryIndicatorProcessorEntity +class "ArithmeticIndicatorProcessorEntity\n(算数运算处理器)" as ArithmeticIndicatorProcessorEntity +class "WhenThenIndicatorProcessorEntity\n(When-Then处理器)" as WhenThenIndicatorProcessorEntity +class "NumberRangeIndicatorProcessorEntity\n(数值分段处理器)" as NumberRangeIndicatorProcessorEntity +class "ConditionRangeIndicatorProcessorEntity\n(条件分段处理器)" as ConditionRangeIndicatorProcessorEntity +class "GroovyScriptIndicatorProcessorEntity\n(Groovy 脚本处理器)" as GroovyScriptIndicatorProcessorEntity + +IndicatorProcessorEntity <|-up- EmptyIndicatorProcessorEntity +IndicatorProcessorEntity <|-up- TernaryIndicatorProcessorEntity +IndicatorProcessorEntity <|-up- ArithmeticIndicatorProcessorEntity +IndicatorProcessorEntity <|-down- WhenThenIndicatorProcessorEntity +IndicatorProcessorEntity <|-down- NumberRangeIndicatorProcessorEntity +IndicatorProcessorEntity <|-down- ConditionRangeIndicatorProcessorEntity +IndicatorProcessorEntity <|-down- GroovyScriptIndicatorProcessorEntity +.... + +=== 资源模型 +[plantuml, diagram-classes-resource, svg] +.... +skinparam handwritten false + +class "ResourceEntity\n(资源)" as ResourceEntity +class "ReleasableResourceEntity\n(可发布的资源)" as ReleasableResourceEntity +class "FolderResourceEntity\n(文件夹)" as FolderResourceEntity +class "ModelResourceEntity\n(模型)" as ModelResourceEntity +class "ScoreCardResourceEntity\n(评分卡)" as ScoreCardResourceEntity +class "ResourceTestCaseEntity\n(资源测试用例)" as ResourceTestCaseEntity + +class "ModelEntity\n(模型)" as ModelEntity{ + id 唯一标识 + code 代码 + name 名称 + ... + parent 父 + children 子集合 +} + +class "ParameterEntity\n(参数)" as ParameterEntity #green + +class "ParameterValidatorEntity\n(参数验证器)" as ParameterValidatorEntity #green +class "ParameterProcessorEntity\n(参数处理器)" as ParameterProcessorEntity #green + + +ResourceEntity <|-down- FolderResourceEntity +ResourceEntity <|-down- ReleasableResourceEntity + +ReleasableResourceEntity <|-down- ModelResourceEntity +ReleasableResourceEntity <|-down- ScoreCardResourceEntity + +ResourceEntity "1" -right-> "N" ResourceTestCaseEntity : 包含 > + +ModelResourceEntity "1" -down-> "1" ModelEntity : 包含 + +ModelEntity "1" -down-> "N" ParameterEntity : 包含 +ParameterEntity "1" *-left-> "N" ParameterValidatorEntity : 包含 +ParameterEntity "1" *-right-> "N" ParameterProcessorEntity : 包含 + +FolderResourceEntity -right[hidden]- ReleasableResourceEntity +.... + +=== 模型参数 +[plantuml, diagram-classes-parameter, svg] +.... +skinparam handwritten false + +class "ParameterEntity\n(参数)" as ParameterEntity #green + +class "ConstantParameterEntity\n(常量)" as ConstantParameterEntity +class "IndicatorParameterEntity\n(指标)" as IndicatorParameterEntity +class "InParameterEntity\n(输入值)" as InParameterEntity +class "InOptionParameterEntity\n(输入选项)" as InOptionParameterEntity +class "InSubOutParameterEntity\n(子模型输出)" as InSubOutParameterEntity +class "IntermediateParameterEntity\n(中间值)" as IntermediateParameterEntity +class "RuleResultParameterEntity\n(规则结果)" as RuleResultParameterEntity +class "SingleRuleResultParameterEntity\n(单规则结果)" as SingleRuleResultParameterEntity +class "OutParameterEntity\n(结果值)" as OutParameterEntity + +ParameterEntity <|-up- ConstantParameterEntity +ParameterEntity <|-up- IndicatorParameterEntity +ParameterEntity <|-up- InParameterEntity +ParameterEntity <|-up- InOptionParameterEntity +ParameterEntity <|-left- InSubOutParameterEntity +ParameterEntity <|-right- IntermediateParameterEntity +ParameterEntity <|-down- RuleResultParameterEntity +ParameterEntity <|-down- SingleRuleResultParameterEntit +ParameterEntity <|-down- OutParameterEntity +.... + +=== 参数验证器 +[plantuml, diagram-classes-parameter-validator, svg] +.... +skinparam handwritten false + +class "ParameterValidatorEntity\n(参数验证器)" as ParameterValidatorEntity #green + +class "DateRangeParameterValidatorEntity\n(日期范围指标验证器)" as DateRangeParameterValidatorEntity +class "DecimalRangeParameterValidatorEntity\n(小数范围指标验证器)" as DecimalRangeParameterValidatorEntity +class "EmailParameterValidatorEntity\n(邮件地址指标验证器)" as EmailParameterValidatorEntity +class "EmptyParameterValidatorEntity\n(空指标验证器)" as EmptyParameterValidatorEntity +class "FalseParameterValidatorEntity\n(假指标验证器)" as FalseParameterValidatorEntity +class "IntegerRangeParameterValidatorEntity\n(整数范围指标验证器)" as IntegerRangeParameterValidatorEntity +class "LengthRangeParameterValidatorEntity\n(长度范围指标验证器)" as LengthRangeParameterValidatorEntity +class "NotEmptyParameterValidatorEntity\n(非空指标验证器)" as NotEmptyParameterValidatorEntity +class "PatternParameterValidatorEntity\n(正则表达式指标验证器)" as PatternParameterValidatorEntity +class "TrueParameterValidatorEntity\n(真指标验证器)" as TrueParameterValidatorEntity + +ParameterValidatorEntity <|-up- DateRangeParameterValidatorEntity +ParameterValidatorEntity <|-up- DecimalRangeParameterValidatorEntity +ParameterValidatorEntity <|-up- EmailParameterValidatorEntity +ParameterValidatorEntity <|-up- EmptyParameterValidatorEntity +ParameterValidatorEntity <|-left- FalseParameterValidatorEntity +ParameterValidatorEntity <|-right- IntegerRangeParameterValidatorEntity +ParameterValidatorEntity <|-down- LengthRangeParameterValidatorEntity +ParameterValidatorEntity <|-down- NotEmptyParameterValidatorEntity +ParameterValidatorEntity <|-down- PatternParameterValidatorEntity +ParameterValidatorEntity <|-down- TrueParameterValidatorEntity +.... + +=== 参数处理器 +[plantuml, diagram-classes-parameter-processor, svg] +.... +skinparam handwritten false + +class "ParameterProcessorEntity\n(参数处理器)" as ParameterProcessorEntity #green + +class "OptionValueParameterProcessorEntity\n(选项值处理器)" as OptionValueParameterProcessorEntity +class "ArithmeticParameterProcessorEntity\n(算数操作处理器)" as ArithmeticParameterProcessorEntity +class "ConditionRangeParameterProcessorEntity\n(条件范围处理器)" as ConditionRangeParameterProcessorEntity +class "DecisionTable2CParameterProcessorEntity\n(简单决策表处理器)" as DecisionTable2CParameterProcessorEntity +class "DecisionTableParameterProcessorEntity\n(决策表处理器)" as DecisionTableParameterProcessorEntity +class "DecisionTreeParameterProcessorEntity\n(决策树处理器)" as DecisionTreeParameterProcessorEntity +class "EmptyParameterProcessorEntity\n(空处理器)" as EmptyParameterProcessorEntity +class "ExecutionFlowParameterProcessorEntity\n(执行流处理器)" as ExecutionFlowParameterProcessorEntity +class "NumberRangeParameterProcessorEntity\n(数值范围处理器)" as NumberRangeParameterProcessorEntity +class "PmmlParameterProcessorEntity\n(PMML处理器)" as PmmlParameterProcessorEntity +class "GroovyScriptParameterProcessorEntity\n(脚本代码处理器)" as GroovyScriptParameterProcessorEntity +class "TernaryParameterProcessorEntity\n(三元操作处理器)" as TernaryParameterProcessorEntity +class "WhenThenParameterProcessorEntity\n(When-Then 操作处理器)" as WhenThenParameterProcessorEntity +class "RuleParameterProcessorEntity\n(规则处理器)" as RuleParameterProcessorEntity +class "SingleRuleParameterProcessorEntity.\n(单规则处理器)" as SingleRuleParameterProcessorEntity + +ParameterProcessorEntity <|-up- OptionValueParameterProcessorEntity +ParameterProcessorEntity <|-up- ArithmeticParameterProcessorEntity +ParameterProcessorEntity <|-up- ConditionRangeParameterProcessorEntity +ParameterProcessorEntity <|-up- DecisionTable2CParameterProcessorEntity +ParameterProcessorEntity <|-up- DecisionTableParameterProcessorEntity +ParameterProcessorEntity <|-up- DecisionTreeParameterProcessorEntity +ParameterProcessorEntity <|-left- EmptyParameterProcessorEntity +ParameterProcessorEntity <|-right- ExecutionFlowParameterProcessorEntity +ParameterProcessorEntity <|-down- NumberRangeParameterProcessorEntity +ParameterProcessorEntity <|-down- PmmlParameterProcessorEntity +ParameterProcessorEntity <|-down- GroovyScriptParameterProcessorEntity +ParameterProcessorEntity <|-down- TernaryParameterProcessorEntity +ParameterProcessorEntity <|-down- WhenThenParameterProcessorEntity +ParameterProcessorEntity <|-down- RuleParameterProcessorEntity +ParameterProcessorEntity <|-down- SingleRuleParameterProcessorEntity +.... + +=== 评分卡 +[plantuml, diagram-classes-scorecard, svg] +.... +skinparam handwritten false + +class "ScoreCardResourceEntity\n(评分卡)" as ScoreCardResourceEntity +class "ScoreCardVarEntity\n(评分卡变量)" as ScoreCardVarEntity +class "NumberRangeScoreCardVarEntity\n(数值范围评分卡变量)" as NumberRangeScoreCardVarEntity +class "OptionScoreCardVarEntity\n(选项评分卡变量)" as OptionScoreCardVarEntity + +class "ScoreCardIndicatorVarEntity\n(评分卡变量(指标))" as ScoreCardIndicatorVarEntity + +class "NumberRangeScoreCardIndicatorVarEntity\n(数值范围评分卡变量(指标))" as NumberRangeScoreCardIndicatorVarEntity +class "OptionScoreCardIndicatorVarEntity\n(选项评分卡变量(指标))" as OptionScoreCardIndicatorVarEntity +class "ScoreCardIndicatorValueVarEntity\n(评分卡值变量(指标))" as ScoreCardIndicatorValueVarEntity + +ScoreCardResourceEntity "1" *-down-> "N" ScoreCardVarEntity +ScoreCardVarEntity <|-down- ScoreCardIndicatorVarEntity +ScoreCardVarEntity <|-down- NumberRangeScoreCardVarEntity +ScoreCardVarEntity <|-down- OptionScoreCardVarEntity + +ScoreCardIndicatorVarEntity <|-down- NumberRangeScoreCardIndicatorVarEntity +ScoreCardIndicatorVarEntity <|-down- OptionScoreCardIndicatorVarEntity +ScoreCardIndicatorVarEntity <|-down- ScoreCardIndicatorValueVarEntity +.... + +=== 测试用例 +[plantuml, diagram-classes-testcase, svg] +.... +class "TestCaseEntity\n(测试用例)" as TestCaseEntity +class "ResourceTestCaseEntity\n(资源测试用例)" as ResourceTestCaseEntity +class "ModelTestCaseEntity\n(模型资源测试用例)" as ModelTestCaseEntity +class "ScoreCardTestCaseEntity\n(评分卡资源测试用例)" as ScoreCardTestCaseEntity +class "LibTestCaseEntity\n(库测试用例)" as LibTestCaseEntity + +class "TestCaseParameterEntity\n(测试用例参数)" as TestCaseParameterEntity + +TestCaseEntity "1" -right-> "N" TestCaseParameterEntity : 包含 > +TestCaseEntity <|-down- ResourceTestCaseEntity +TestCaseEntity <|-down- LibTestCaseEntity + +ResourceTestCaseEntity <|-down- ModelTestCaseEntity +ResourceTestCaseEntity <|-down- ScoreCardTestCaseEntity +.... + +== 客户端接口与实现 +[plantuml, diagram-classes-client, svg] +.... +package "org.wsp.engine.rule.client" { + interface "Executor\n(执行器)" as Executor { + compileById() + compileByCode() + executeById() + executeByCode() + getLoader() + } + + interface "Loader\n(加载器)" as Loader { + getResourceById() + getResourceByCode() + getAllReleasableResourceAbstract() + cleanCache() + } + + Executor "1" -right-> "1" Loader : 包含 > +} + +package "org.wsp.engine.rule.client.local" { + class "LocalExecutor\n(本地执行器)" as LocalExecutor + + class LocalExecutor implements Executor +} + +package "org.wsp.engine.rule.client.remote" { + class "RemoteExecutor\n(本地执行器)" as RemoteExecutor + class "RemoteLoader\n(远程加载器)" as RemoteLoader + + class RemoteExecutor implements Executor + class RemoteLoader implements Loader +} + +package "org.wsp.engine.rule.client.spring.service" { + interface "LocalLoader\n(Spring 本地加载器)" as LocalLoader + interface LocalLoader extends Loader + + interface "ExecutorFactoryService\n(Spring 执行器工厂服务)" as ExecutorFactoryService { + getExecutor() + } +} + +package "org.wsp.engine.rule.client.spring.service.impl" { + class "LocalLoaderImpl(Spring 本地加载器实现)" as LocalLoaderImpl + class "ExecutorFactoryServiceImpl(Spring 执行器工厂服务实现)" as ExecutorFactoryServiceImpl + + class LocalLoaderImpl implements LocalLoader + class ExecutorFactoryServiceImpl implements ExecutorFactoryService +} +.... + + + + diff --git a/io.sc.engine.rule.doc/asciidoc/010-appendix/appendix.adoc b/io.sc.engine.rule.doc/asciidoc/010-appendix/appendix.adoc new file mode 100644 index 00000000..0cbceea9 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/010-appendix/appendix.adoc @@ -0,0 +1,2 @@ +//include::processor/processor.adoc[leveloffset=+1] +include::groovy-function/groovy-function.adoc[leveloffset=+1] \ No newline at end of file diff --git a/io.sc.engine.rule.doc/asciidoc/010-appendix/groovy-function/groovy-function.adoc b/io.sc.engine.rule.doc/asciidoc/010-appendix/groovy-function/groovy-function.adoc new file mode 100644 index 00000000..0f5319bd --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/010-appendix/groovy-function/groovy-function.adoc @@ -0,0 +1,62 @@ +[appendix] += 脚本函数 + +[cols="1,1",options="header"] +|=== +| 函数名 | 功能说明 +| PI | 常量 π +| E | 常量 e +| abs(number x) | 绝对值,计算 x 的绝对值 +| acos(double x) | 反余弦函数,计算 x 的反余弦值 +| asin(double x) | 反正弦函数,计算 x 的反正余弦值 +| atan(double x) | 反正切函数,计算 x 的反正切值 +| atan2(double y,double x) | 反正切函数 +| cbrt(double x) | 开立方,计算 x 的开立方值 +| ceil(double x) | 返回大于或者等于 x 的最小整数 +| cos(double x) | 余弦函数,计算 x 的余弦 +| cosh(double x) | 双曲余弦函数,计算 x 的双曲余弦值 +| exp(double x) | e 的 x 次方 +| expm1(double x) | exp(x) - 1 +| floor(double x) | 返回 不大于 x 的最大的那个整数值 +| IEEEremainder(double x,double y) | 返回 x / y 的余数 +| log(double x) | 返回 x 的以自然数为底数的对数 +| pow(double x,double y) | 返回 x 的 y 次方 +| random() | 返回 0 - 1 之间的随机小数 +| rint(double x) | 返回 最接近 x 的整数值 +| round(double x) | 返回 四舍五入值 (将 x 加上 0.5 后再向下取整) +| sin(double x) | 正弦函数,计算 x 的正弦值 +| sinh(double x) | 双曲正弦函数,计算 x 的双曲正弦值 +| sqrt(double x) | 开平方,计算 x 的开平方值 +| tan(double x) | 正切函数,计算 x 的正切值 +| tanh(double x) | 双曲正切函数,计算 x 的双曲正切值 +| toDegrees(double x) | 返回 x 的角度值 +| toRadians(double x) | 返回 x 的弧度值 + +| randomInt() | 返回一个随机整数 +| max(number x1,...) | 返回一个或多个数的最大数 +| min(number x1,...) | 返回一个或多个数的最小数 +| sum(number x1,...) | 返回一个或多个数的和 +| transformSequencing(double x,double s1,double s2,double t1,double t2) | 返回 t1 + ( (x-s1)/(s2-s1))*(t2-t1) +| now() | 返回当前系统日期,new Date() +| yyyyMMdd(Date date) | 返回日期 date 的 "yyyyMMdd" 格式的字符串 +| yyyy_MM_dd(Date date) | 返回日期 date 的 "yyyy-MM-dd" 格式的字符串 +| join(String join,String...strings) | 返回将多个字符串采用 join 字符串进行连接后的字符串 +| normalDistributioin(double x) | 返回 x 的正态分布值 +| inverseNormalDistributioin(double x)| 返回 x 的反正态分布值 + +| decimal(double x) | 返回小数格式化字符串(只保留整数部分) +| decimal1(double x) | 返回小数格式化字符串(保留 1 位小数) +| decimal2(double x) | 返回小数格式化字符串(保留 2 位小数) +| decimal3(double x) | 返回小数格式化字符串(保留 3 位小数) +| decimal4(double x) | 返回小数格式化字符串(保留 4 位小数) +| decimal5(double x) | 返回小数格式化字符串(保留 5 位小数) +| decimal6(double x) | 返回小数格式化字符串(保留 6 位小数) + +| money(double x) | 返回货币(采用千分位分隔符)格式化字符串(只保留整数部分) +| money2(double x) | 返回货币(采用千分位分隔符)格式化字符串(保留 2 位小数) + +| rmb(double x) | 返回货币(采用千分位分隔符)格式化字符串(只保留整数部分) +| rmb2(double x) | 返回货币(采用千分位分隔符)格式化字符串(保留 2 位小数) +| percent(double x) | 返回百分比格式化字符串(只保留整数部分) +| percent2(double x) | 返回百分比格式化字符串(保留 2 位小数) +|=== \ No newline at end of file diff --git a/io.sc.engine.rule.doc/asciidoc/010-appendix/processor/processor.adoc b/io.sc.engine.rule.doc/asciidoc/010-appendix/processor/processor.adoc new file mode 100644 index 00000000..62a3028f --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/010-appendix/processor/processor.adoc @@ -0,0 +1,2 @@ +[appendix] += 处理器 \ No newline at end of file diff --git a/io.sc.engine.rule.doc/asciidoc/index.adoc b/io.sc.engine.rule.doc/asciidoc/index.adoc new file mode 100644 index 00000000..057f31e2 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/index.adoc @@ -0,0 +1,39 @@ +:doctype: book +:backend: html5 +:toc: right +:toc-title: 目录 +:toclevels: 7 +:sectnums: +:sectnumlevels: 7 +:sectanchors: +:appendix-caption: 附录 + +:linkcss: +:webfonts!: + +:icons: font +:iconfont-remote!: + +:source-highlighter: highlightjs +:highlightjsdir: ./resources/highlightjs + +:imagesdir: ./resources/images +:stylesdir: ./resources/styles +:scriptsdir: ./resources/javascript + +:docinfodir: ./resources/docinfo +:docinfo: shared + += 决策引擎参考手册 +2022-12-09 : 迭代中 + +include::001-introduction/introduction.adoc[leveloffset=+1] +include::002-environment/environment.adoc[leveloffset=+1] +include::003-install/install.adoc[leveloffset=+1] +include::004-use-help/use-help.adoc[leveloffset=+1] +//include::005-developer/developer.adoc[leveloffset=+1] + +include::010-appendix/appendix.adoc[leveloffset=+1] + + + diff --git a/io.sc.engine.rule.doc/asciidoc/resources/css/customize.css b/io.sc.engine.rule.doc/asciidoc/resources/css/customize.css new file mode 100644 index 00000000..e69de29b diff --git a/io.sc.engine.rule.doc/asciidoc/resources/docinfo/docinfo-footer.html b/io.sc.engine.rule.doc/asciidoc/resources/docinfo/docinfo-footer.html new file mode 100644 index 00000000..c1b8ce48 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/resources/docinfo/docinfo-footer.html @@ -0,0 +1,8 @@ + + diff --git a/io.sc.engine.rule.doc/asciidoc/resources/docinfo/docinfo.html b/io.sc.engine.rule.doc/asciidoc/resources/docinfo/docinfo.html new file mode 100644 index 00000000..c0ba4220 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/resources/docinfo/docinfo.html @@ -0,0 +1,5 @@ + + + + + diff --git a/io.sc.engine.rule.doc/asciidoc/resources/fonts/FontAwesome.otf b/io.sc.engine.rule.doc/asciidoc/resources/fonts/FontAwesome.otf new file mode 100644 index 00000000..df53d549 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/fonts/FontAwesome.otf differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.eot b/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.eot differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.svg b/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.ttf b/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.ttf differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.woff b/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.woff differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.woff2 b/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/fonts/fontawesome-webfont.woff2 differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/highlightjs/highlight.min.js b/io.sc.engine.rule.doc/asciidoc/resources/highlightjs/highlight.min.js new file mode 100644 index 00000000..902a0801 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/resources/highlightjs/highlight.min.js @@ -0,0 +1,2 @@ +/*! highlight.js v9.12.0 | BSD3 License | git.io/hljslicense */ +!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/&/g,"&").replace(//g,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return w(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||w(i))return i}function o(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset"}function u(e){s+=""}function c(e){("start"===e.event?o:u)(e.node)}for(var l=0,s="",f=[];e.length||r.length;){var g=i();if(s+=n(a.substring(l,g[0].offset)),l=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===l);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return s+n(a.substr(l))}function l(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(n){return o(e,{v:null},n)})),e.cached_variants||e.eW&&[o(e)]||[e]}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},u=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");o[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?u("keyword",a.k):x(a.k).forEach(function(e){u(e,a.k[e])}),a.k=o}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]),a.c=Array.prototype.concat.apply([],a.c.map(function(e){return l("self"===e?a:e)})),a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var c=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=c.length?t(c.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function l(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function p(e,n,t,r){var a=r?"":I.classPrefix,i='',i+n+o}function h(){var e,t,r,a;if(!E.k)return n(k);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(k);r;)a+=n(k.substring(t,r.index)),e=l(E,r),e?(B+=e[1],a+=p(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(k);return a+n(k.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!y[E.sL])return n(k);var t=e?f(E.sL,k,!0,x[E.sL]):g(k,E.sL.length?E.sL:void 0);return E.r>0&&(B+=t.r),e&&(x[E.sL]=t.top),p(t.language,t.value,!1,!0)}function b(){L+=null!=E.sL?d():h(),k=""}function v(e){L+=e.cN?p(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(k+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?k+=n:(t.eB&&(k+=n),b(),t.rB||t.eB||(k=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?k+=n:(a.rE||a.eE||(k+=n),b(),a.eE&&(k=n));do E.cN&&(L+=C),E.skip||(B+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"")+'"');return k+=n,n.length||1}var N=w(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,E=i||N,x={},L="";for(R=E;R!==N;R=R.parent)R.cN&&(L=p(R.cN,"",!0)+L);var k="",B=0;try{for(var M,j,O=0;;){if(E.t.lastIndex=O,M=E.t.exec(t),!M)break;j=m(t.substring(O,M.index),M[0]),O=M.index+j}for(m(t.substr(O)),R=E;R.parent;R=R.parent)R.cN&&(L+=C);return{r:B,value:L,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function g(e,t){t=t||I.languages||x(y);var r={r:0,value:n(e)},a=r;return t.filter(w).forEach(function(n){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function p(e){return I.tabReplace||I.useBR?e.replace(M,function(e,n){return I.useBR&&"\n"===e?"
":I.tabReplace?n.replace(/\t/g,I.tabReplace):""}):e}function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function d(e){var n,t,r,o,l,s=i(e);a(s)||(I.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):n=e,l=n.textContent,r=s?f(s,l,!0):g(l),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),l)),r.value=p(r.value),e.innerHTML=r.value,e.className=h(e.className,s,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function b(e){I=o(I,e)}function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,d)}}function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener("load",v,!1)}function N(n,t){var r=y[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function R(){return x(y)}function w(e){return e=(e||"").toLowerCase(),y[e]||y[L[e]]}var E=[],x=Object.keys,y={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="
",I={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=f,e.highlightAuto=g,e.fixMarkup=p,e.highlightBlock=d,e.configure=b,e.initHighlighting=v,e.initHighlightingOnLoad=m,e.registerLanguage=N,e.listLanguages=R,e.getLanguage=w,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("java",function(e){var a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",t=a+"(<"+a+"(\\s*,\\s*"+a+")*>)?",r="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",s="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",c={cN:"number",b:s,r:0};return{aliases:["jsp"],k:r,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},c,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("python",function(e){var r={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},b={cN:"meta",b:/^(>>>|\.\.\.) /},c={cN:"subst",b:/\{/,e:/\}/,k:r,i:/#/},a={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[b],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[b],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[b,c]},{b:/(fr|rf|f)"""/,e:/"""/,c:[b,c]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[c]},{b:/(fr|rf|f)"/,e:/"/,c:[c]},e.ASM,e.QSM]},s={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},i={cN:"params",b:/\(/,e:/\)/,c:["self",b,s,a]};return c.c=[a,s,b],{aliases:["py","gyp"],k:r,i:/(<\/|->|\?)|=>/,c:[b,s,a,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,i,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:c,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[t],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[t],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("asciidoc",function(e){return{aliases:["adoc"],c:[e.C("^/{4,}\\n","\\n/{4,}$",{r:10}),e.C("^//","$",{r:0}),{cN:"title",b:"^\\.\\w.*$"},{b:"^[=\\*]{4,}\\n",e:"\\n^[=\\*]{4,}$",r:10},{cN:"section",r:10,v:[{b:"^(={1,5}) .+?( \\1)?$"},{b:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{cN:"meta",b:"^:.+?:",e:"\\s",eE:!0,r:10},{cN:"meta",b:"^\\[.+?\\]$",r:0},{cN:"quote",b:"^_{4,}\\n",e:"\\n_{4,}$",r:10},{cN:"code",b:"^[\\-\\.]{4,}\\n",e:"\\n[\\-\\.]{4,}$",r:10},{b:"^\\+{4,}\\n",e:"\\n\\+{4,}$",c:[{b:"<",e:">",sL:"xml",r:0}],r:10},{cN:"bullet",b:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{cN:"symbol",b:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",r:10},{cN:"strong",b:"\\B\\*(?![\\*\\s])",e:"(\\n{2}|\\*)",c:[{b:"\\\\*\\w",r:0}]},{cN:"emphasis",b:"\\B'(?!['\\s])",e:"(\\n{2}|')",c:[{b:"\\\\'\\w",r:0}],r:0},{cN:"emphasis",b:"_(?![_\\s])",e:"(\\n{2}|_)",r:0},{cN:"string",v:[{b:"``.+?''"},{b:"`.+?'"}]},{cN:"code",b:"(`.+?`|\\+.+?\\+)",r:0},{cN:"code",b:"^[ \\t]",e:"$",r:0},{b:"^'{3,}[ \\t]*$",r:10},{b:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",rB:!0,c:[{b:"(link|image:?):",r:0},{cN:"link",b:"\\w",e:"[^\\[]+",r:0},{cN:"string",b:"\\[",e:"\\]",eB:!0,eE:!0,r:0}],r:10}]}});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,a,t]}});hljs.registerLanguage("shell",function(s){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("ini",function(e){var b={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},b,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={cN:"subst",b:/#\{/,e:/}/,k:c},i=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,r]},{b:/"/,e:/"/,c:[e.BE,r]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[r,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+n},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];r.c=i;var s=e.inherit(e.TM,{b:n}),t="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(i)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:i.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+t,e:"[-=]>",rB:!0,c:[s,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:t,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[s]},s]},{b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("makefile",function(e){var i={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],o=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=o,s.c=o,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:o}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},i=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:_,l:i,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:i,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("ruby",function(e){var b="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},c={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},s=[e.C("#","$",{c:[c]}),e.C("^\\=begin","^\\=end",{c:[c],r:10}),e.C("^__END__","\\n$")],n={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(s)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:b}),i].concat(s)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:b}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[a,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(s),r:0}].concat(s);n.c=d,i.c=d;var l="[>?]>",o="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",w=[{b:/^\s*=>/,starts:{e:"$",c:d}},{cN:"meta",b:"^("+l+"|"+o+"|"+u+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:s.concat(w).concat(d)}});hljs.registerLanguage("yaml",function(e){var b="true false yes no null",a="^[ \\-]*",r="[a-zA-Z_][\\w\\-]*",t={cN:"attr",v:[{b:a+r+":"},{b:a+'"'+r+'":'},{b:a+"'"+r+"':"}]},c={cN:"template-variable",v:[{b:"{{",e:"}}"},{b:"%{",e:"}"}]},l={cN:"string",r:0,v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/\S+/}],c:[e.BE,c]};return{cI:!0,aliases:["yml","YAML","yaml"],c:[t,{cN:"meta",b:"^---s*$",r:10},{cN:"string",b:"[\\|>] *$",rE:!0,c:l.c,e:t.v[0].b},{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0,r:0},{cN:"type",b:"!!"+e.UIR},{cN:"meta",b:"&"+e.UIR+"$"},{cN:"meta",b:"\\*"+e.UIR+"$"},{cN:"bullet",b:"^ *-",r:0},e.HCM,{bK:b,k:{literal:b}},e.CNM,l]}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}});hljs.registerLanguage("cs",function(e){var i={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},t={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},r=e.inherit(t,{i:/\n/}),a={cN:"subst",b:"{",e:"}",k:i},c=e.inherit(a,{i:/\n/}),n={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,c]},s={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},a]},o=e.inherit(s,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},c]});a.c=[s,n,t,e.ASM,e.QSM,e.CNM,e.CBCM],c.c=[o,n,r,e.ASM,e.QSM,e.CNM,e.inherit(e.CBCM,{i:/\n/})];var l={v:[s,n,t,e.ASM,e.QSM]},b=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp"],k:i,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},l,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",r:0},{cN:"function",b:"("+b+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:i,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:i,r:0,c:[l,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*#]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U)?L?"',e:'"',i:"\\n",c:[t.BE]},{b:'(u8?|U)?R"',e:'"',c:[t.BE]},{b:"'\\\\?.",e:"'",i:"."}]},s={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},i={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},t.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},t.CLCM,t.CBCM]},a=t.IR+"\\s*\\(",c={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},n=[e,t.CLCM,t.CBCM,s,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:c,i:"",k:c,c:["self",e]},{b:t.IR+"::",k:c},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:c,c:n.concat([{b:/\(/,e:/\)/,k:c,c:n.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+t.IR+"[\\*&\\s]+)+"+a,rB:!0,e:/[{;=]/,eE:!0,k:c,i:/[^\w\s\*&]/,c:[{b:a,rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:c,r:0,c:[t.CLCM,t.CBCM,r,s,e]},t.CLCM,t.CBCM,i]},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b://,c:["self"]},t.TM]}]),exports:{preprocessor:i,strings:r,k:c}}}); diff --git a/io.sc.engine.rule.doc/asciidoc/resources/highlightjs/styles/github.min.css b/io.sc.engine.rule.doc/asciidoc/resources/highlightjs/styles/github.min.css new file mode 100644 index 00000000..791932b8 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/resources/highlightjs/styles/github.min.css @@ -0,0 +1,99 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} + +.hljs-string, +.hljs-doctag { + color: #d14; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-link { + color: #009926; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/install/001.png b/io.sc.engine.rule.doc/asciidoc/resources/images/install/001.png new file mode 100644 index 00000000..4e1b8198 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/install/001.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/install/002.png b/io.sc.engine.rule.doc/asciidoc/resources/images/install/002.png new file mode 100644 index 00000000..283c7194 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/install/002.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/install/003.png b/io.sc.engine.rule.doc/asciidoc/resources/images/install/003.png new file mode 100644 index 00000000..14d26cd6 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/install/003.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/install/004.png b/io.sc.engine.rule.doc/asciidoc/resources/images/install/004.png new file mode 100644 index 00000000..422292bc Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/install/004.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/install/005.png b/io.sc.engine.rule.doc/asciidoc/resources/images/install/005.png new file mode 100644 index 00000000..32e8438b Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/install/005.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/install/006.png b/io.sc.engine.rule.doc/asciidoc/resources/images/install/006.png new file mode 100644 index 00000000..4d08ee05 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/install/006.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/install/007.png b/io.sc.engine.rule.doc/asciidoc/resources/images/install/007.png new file mode 100644 index 00000000..602419af Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/install/007.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/install/008.png b/io.sc.engine.rule.doc/asciidoc/resources/images/install/008.png new file mode 100644 index 00000000..430acef5 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/install/008.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/install/009.png b/io.sc.engine.rule.doc/asciidoc/resources/images/install/009.png new file mode 100644 index 00000000..c3ec1f80 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/install/009.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/install/010.png b/io.sc.engine.rule.doc/asciidoc/resources/images/install/010.png new file mode 100644 index 00000000..34e6fa9c Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/install/010.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/authorization/001.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/authorization/001.png new file mode 100644 index 00000000..c45be053 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/authorization/001.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/dictionary/001.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/dictionary/001.png new file mode 100644 index 00000000..d3a11b91 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/dictionary/001.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/dictionary/002.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/dictionary/002.png new file mode 100644 index 00000000..1ea0594a Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/dictionary/002.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/explorer/001.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/explorer/001.png new file mode 100644 index 00000000..951e4427 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/explorer/001.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/001.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/001.png new file mode 100644 index 00000000..d6b6dea0 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/001.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/002.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/002.png new file mode 100644 index 00000000..b8b01863 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/002.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/003.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/003.png new file mode 100644 index 00000000..0609e187 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/003.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/004.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/004.png new file mode 100644 index 00000000..2c0e9b97 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/004.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/005.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/005.png new file mode 100644 index 00000000..0ba13518 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/005.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/006.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/006.png new file mode 100644 index 00000000..1f617d1d Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/indicator-lib/006.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/migration/001.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/migration/001.png new file mode 100644 index 00000000..f1ac569a Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/migration/001.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/001.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/001.png new file mode 100644 index 00000000..14640cb4 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/001.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/002.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/002.png new file mode 100644 index 00000000..14640cb4 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/002.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/003.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/003.png new file mode 100644 index 00000000..da864095 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/003.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/004.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/004.png new file mode 100644 index 00000000..927ea135 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/004.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/005.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/005.png new file mode 100644 index 00000000..7e65df51 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/005.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/006.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/006.png new file mode 100644 index 00000000..0e6812d2 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/006.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/007.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/007.png new file mode 100644 index 00000000..234a9c99 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/model/007.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/test-case/001.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/test-case/001.png new file mode 100644 index 00000000..5ff85763 Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/test-case/001.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/test-case/002.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/test-case/002.png new file mode 100644 index 00000000..e1bdd93e Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/test-case/002.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/workflow/001.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/workflow/001.png new file mode 100644 index 00000000..664f934c Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/workflow/001.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/workflow/002.png b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/workflow/002.png new file mode 100644 index 00000000..72f3ee8b Binary files /dev/null and b/io.sc.engine.rule.doc/asciidoc/resources/images/use-help/workflow/002.png differ diff --git a/io.sc.engine.rule.doc/asciidoc/resources/javascript/tocbot.min.js b/io.sc.engine.rule.doc/asciidoc/resources/javascript/tocbot.min.js new file mode 100644 index 00000000..942a709a --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/resources/javascript/tocbot.min.js @@ -0,0 +1 @@ +!function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,n){(function(o){var i,l,r;!function(n,o){l=[],i=o(n),void 0!==(r="function"==typeof i?i.apply(t,l):i)&&(e.exports=r)}(void 0!==o?o:this.window||this.global,function(e){"use strict";function t(){for(var e={},t=0;te.fixedSidebarOffset?-1===n.className.indexOf(e.positionFixedClass)&&(n.className+=p+e.positionFixedClass):n.className=n.className.split(p+e.positionFixedClass).join("")}function r(t){var n=document.documentElement.scrollTop||f.scrollTop;e.positionFixedSelector&&l();var o,i=t;if(m&&null!==document.querySelector(e.tocSelector)&&i.length>0){d.call(i,function(t,l){if(t.offsetTop>n+e.headingsOffset+10){return o=i[0===l?l:l-1],!0}if(l===i.length-1)return o=i[i.length-1],!0});var r=document.querySelector(e.tocSelector).querySelectorAll("."+e.linkClass);u.call(r,function(t){t.className=t.className.split(p+e.activeLinkClass).join("")});var c=document.querySelector(e.tocSelector).querySelector("."+e.linkClass+".node-name--"+o.nodeName+'[href="#'+o.id+'"]');c.className+=p+e.activeLinkClass;var a=document.querySelector(e.tocSelector).querySelectorAll("."+e.listClass+"."+e.collapsibleClass);u.call(a,function(t){var n=p+e.isCollapsedClass;-1===t.className.indexOf(n)&&(t.className+=p+e.isCollapsedClass)}),c.nextSibling&&(c.nextSibling.className=c.nextSibling.className.split(p+e.isCollapsedClass).join("")),s(c.parentNode.parentNode)}}function s(t){return-1!==t.className.indexOf(e.collapsibleClass)?(t.className=t.className.split(p+e.isCollapsedClass).join(""),s(t.parentNode.parentNode)):t}function c(t){var n=t.target||t.srcElement;"string"==typeof n.className&&-1!==n.className.indexOf(e.linkClass)&&(m=!1)}function a(){m=!0}var u=[].forEach,d=[].some,f=document.body,m=!0,p=" ";return{enableTocAnimation:a,disableTocAnimation:c,render:n,updateToc:r}}},function(e,t){e.exports=function(e){function t(e){return e[e.length-1]}function n(e){return+e.nodeName.split("H").join("")}function o(t){var o={id:t.id,children:[],nodeName:t.nodeName,headingLevel:n(t),textContent:t.textContent.trim()};return e.includeHtml&&(o.childNodes=t.childNodes),o}function i(i,l){for(var r=o(i),s=n(i),c=l,a=t(c),u=a?a.headingLevel:0,d=s-u;d>0;)a=t(c),a&&void 0!==a.children&&(c=a.children),d--;return s>=e.collapseDepth&&(r.isCollapsed=!0),c.push(r),c}function l(t,n){var o=n;e.ignoreSelector&&(o=n.split(",").map(function(t){return t.trim()+":not("+e.ignoreSelector+")"}));try{return document.querySelector(t).querySelectorAll(o)}catch(e){return console.warn("Element not found: "+t),null}}function r(e){return s.call(e,function(e,t){return i(o(t),e.nest),e},{nest:[]})}var s=[].reduce;return{nestHeadingsArray:r,selectHeadings:l}}},function(e,t,n){var o,i,l;!function(n,r){i=[],o=r(),void 0!==(l="function"==typeof o?o.apply(t,i):o)&&(e.exports=l)}(0,function(){"use strict";var e=function(e){return"getComputedStyle"in window&&"smooth"===window.getComputedStyle(e)["scroll-behavior"]};if("undefined"==typeof window||!("document"in window))return{};var t=function(t,n,o){n=n||999,o||0===o||(o=9);var i,l=function(e){i=e},r=function(){clearTimeout(i),l(0)},s=function(e){return Math.max(0,t.getTopOf(e)-o)},c=function(o,i,s){if(r(),0===i||i&&i<0||e(t.body))t.toY(o),s&&s();else{var c=t.getY(),a=Math.max(0,o)-c,u=(new Date).getTime();i=i||Math.min(Math.abs(a),n),function e(){l(setTimeout(function(){var n=Math.min(1,((new Date).getTime()-u)/i),o=Math.max(0,Math.floor(c+a*(n<.5?2*n*n:n*(4-2*n)-1)));t.toY(o),n<1&&t.getHeight()+ou?a(e,n,i):r+o>f?c(r-u+o,n,i):i&&i()},d=function(e,n,o,i){c(Math.max(0,t.getTopOf(e)-t.getHeight()/2+(o||e.getBoundingClientRect().height/2)),n,i)};return{setup:function(e,t){return(0===e||e)&&(n=e),(0===t||t)&&(o=t),{defaultDuration:n,edgeOffset:o}},to:a,toY:c,intoView:u,center:d,stop:r,moving:function(){return!!i},getY:t.getY,getTopOf:t.getTopOf}},n=document.documentElement,o=function(){return window.scrollY||n.scrollTop},i=t({body:document.scrollingElement||document.body,toY:function(e){window.scrollTo(0,e)},getY:o,getHeight:function(){return window.innerHeight||n.clientHeight},getTopOf:function(e){return e.getBoundingClientRect().top+o()-n.offsetTop}});if(i.createScroller=function(e,o,i){return t({body:e,toY:function(t){e.scrollTop=t},getY:function(){return e.scrollTop},getHeight:function(){return Math.min(e.clientHeight,window.innerHeight||n.clientHeight)},getTopOf:function(e){return e.offsetTop}},o,i)},"addEventListener"in window&&!window.noZensmooth&&!e(document.body)){var l="scrollRestoration"in history;l&&(history.scrollRestoration="auto"),window.addEventListener("load",function(){l&&(setTimeout(function(){history.scrollRestoration="manual"},9),window.addEventListener("popstate",function(e){e.state&&"zenscrollY"in e.state&&i.toY(e.state.zenscrollY)},!1)),window.location.hash&&setTimeout(function(){var e=i.setup().edgeOffset;if(e){var t=document.getElementById(window.location.href.split("#")[1]);if(t){var n=Math.max(0,i.getTopOf(t)-e),o=i.getY()-n;0<=o&&o<9&&window.scrollTo(0,n)}}},9)},!1);var r=new RegExp("(^|\\s)noZensmooth(\\s|$)");window.addEventListener("click",function(e){for(var t=e.target;t&&"A"!==t.tagName;)t=t.parentNode;if(!(!t||1!==e.which||e.shiftKey||e.metaKey||e.ctrlKey||e.altKey)){if(l)try{history.replaceState({zenscrollY:i.getY()},"")}catch(e){}var n=t.getAttribute("href")||"";if(0===n.indexOf("#")&&!r.test(t.className)){var o=0,s=document.getElementById(n.substring(1));if("#"!==n){if(!s)return;o=i.getTopOf(s)}e.preventDefault();var c=function(){window.location=n},a=i.setup().edgeOffset;a&&(o=Math.max(0,o-a),c=function(){history.pushState(null,"",n)}),i.toY(o,null,c)}}},!1)}return i})}]); diff --git a/io.sc.engine.rule.doc/asciidoc/resources/styles/font-awesome.css b/io.sc.engine.rule.doc/asciidoc/resources/styles/font-awesome.css new file mode 100644 index 00000000..ee906a81 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/resources/styles/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/io.sc.engine.rule.doc/asciidoc/resources/styles/framework.css b/io.sc.engine.rule.doc/asciidoc/resources/styles/framework.css new file mode 100644 index 00000000..680c5101 --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/resources/styles/framework.css @@ -0,0 +1,8 @@ +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{color:black;} +#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:black;} +p{text-indent: 0em;} +li p,td p{text-indent: 0em;} +table tr td{padding:4px;} +td.tableblock>.content>:last-child { + margin-bottom: 0em; +} diff --git a/io.sc.engine.rule.doc/asciidoc/resources/styles/tocbot.css b/io.sc.engine.rule.doc/asciidoc/resources/styles/tocbot.css new file mode 100644 index 00000000..6265223f --- /dev/null +++ b/io.sc.engine.rule.doc/asciidoc/resources/styles/tocbot.css @@ -0,0 +1 @@ +.toc{overflow-y:auto}.toc>ul{overflow:hidden;position:relative}.toc>ul li{list-style:none}.toc-list{margin:0;padding-left:10px}a.toc-link{color:currentColor;height:100%}.is-collapsible{max-height:1000px;overflow:hidden;transition:all 300ms ease-in-out}.is-collapsed{max-height:0}.is-position-fixed{position:fixed !important;top:0}.is-active-link{font-weight:700}.toc-link::before{background-color:#EEE;content:' ';display:inline-block;height:inherit;left:0;margin-top:-1px;position:absolute;width:2px}.is-active-link::before{background-color:#54BC4B} diff --git a/io.sc.engine.rule.doc/build.gradle b/io.sc.engine.rule.doc/build.gradle new file mode 100644 index 00000000..af102626 --- /dev/null +++ b/io.sc.engine.rule.doc/build.gradle @@ -0,0 +1 @@ +sourceSets.main.resources.srcDir 'dist' \ No newline at end of file diff --git a/io.sc.engine.rule.doc/gradle.properties b/io.sc.engine.rule.doc/gradle.properties new file mode 100644 index 00000000..e69de29b diff --git a/io.sc.engine.rule.doc/src/main/resources/META-INF/platform/plugins/security.json b/io.sc.engine.rule.doc/src/main/resources/META-INF/platform/plugins/security.json new file mode 100644 index 00000000..cf49af10 --- /dev/null +++ b/io.sc.engine.rule.doc/src/main/resources/META-INF/platform/plugins/security.json @@ -0,0 +1,5 @@ +{ + "permitPatterns":[ + "/help/io.sc.engine.rule.doc/**/*" + ] +} \ No newline at end of file diff --git a/io.sc.engine.rule.frontend/.npmrc b/io.sc.engine.rule.frontend/.npmrc index dd3810ca..304f4652 100644 --- a/io.sc.engine.rule.frontend/.npmrc +++ b/io.sc.engine.rule.frontend/.npmrc @@ -3,6 +3,8 @@ registry=http://nexus.sc.io:8000/repository/npm-public/ # 用户邮箱 email= +# publish 时无需先进行 git 代码同步检查, 可避免 publish 时使用 --no-git-checks 选项 +git-checks=false # 注意: 以下 // 不是注释,不能去掉哦 # 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置 diff --git a/io.sc.engine.rule.frontend/package.json b/io.sc.engine.rule.frontend/package.json index 03a2a184..c9ce7f87 100644 --- a/io.sc.engine.rule.frontend/package.json +++ b/io.sc.engine.rule.frontend/package.json @@ -23,92 +23,94 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.24.4", - "@babel/preset-env": "7.24.4", - "@babel/preset-typescript": "7.24.1", - "@babel/plugin-transform-class-properties": "7.24.1", - "@babel/plugin-transform-object-rest-spread": "7.24.1", - "@quasar/app-webpack": "3.12.5", - "@quasar/cli": "2.4.0", + "@babel/core": "7.24.7", + "@babel/preset-env": "7.24.7", + "@babel/preset-typescript": "7.24.7", + "@babel/plugin-transform-class-properties": "7.24.7", + "@babel/plugin-transform-object-rest-spread": "7.24.7", + "@quasar/app-webpack": "3.13.2", + "@quasar/cli": "2.4.1", "@types/mockjs": "1.0.10", - "@types/node": "20.12.7", - "@typescript-eslint/eslint-plugin": "7.7.1", - "@typescript-eslint/parser": "7.7.1", - "@vue/compiler-sfc": "3.4.24", + "@types/node": "20.14.10", + "@typescript-eslint/eslint-plugin": "7.15.0", + "@typescript-eslint/parser": "7.15.0", + "@vue/compiler-sfc": "3.4.31", "@webpack-cli/serve": "2.0.5", "autoprefixer": "10.4.19", "babel-loader": "9.1.3", "clean-webpack-plugin": "4.0.0", "copy-webpack-plugin": "12.0.2", "cross-env": "7.0.3", - "css-loader": "7.1.1", + "css-loader": "7.1.2", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-vue": "9.25.0", - "eslint-webpack-plugin": "4.1.0", + "eslint-plugin-vue": "9.27.0", + "eslint-webpack-plugin": "4.2.0", "html-webpack-plugin": "5.6.0", "json5": "2.2.3", "mini-css-extract-plugin": "2.9.0", - "nodemon": "3.1.0", - "postcss": "8.4.38", + "nodemon": "3.1.4", + "postcss": "8.4.39", "postcss-import": "16.1.0", "postcss-loader": "8.1.1", - "postcss-preset-env": "9.5.9", - "prettier": "3.2.5", - "sass": "1.75.0", + "postcss-preset-env": "9.6.0", + "prettier": "3.3.2", + "sass": "1.77.6", "sass-loader": "14.2.1", - "typescript": "5.4.5", + "typescript": "5.5.3", "vue-loader": "17.4.2", - "webpack": "5.91.0", + "webpack": "5.92.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4", - "webpack-merge": "5.10.0", + "webpack-merge": "6.0.1", "@vue/babel-plugin-jsx": "1.2.2" }, "dependencies": { - "@codemirror/autocomplete": "6.16.0", - "@codemirror/commands": "6.5.0", + "@codemirror/autocomplete": "6.17.0", + "@codemirror/commands": "6.6.0", "@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.6.3", + "@codemirror/lang-sql": "6.7.0", "@codemirror/lang-xml": "6.1.0", - "@codemirror/language": "6.10.1", + "@codemirror/language": "6.10.2", "@codemirror/search": "6.5.6", "@codemirror/state": "6.4.1", - "@codemirror/view": "6.26.3", - "@maxgraph/core": "0.10.0", - "@quasar/extras": "1.16.11", - "@vueuse/core": "10.9.0", - "axios": "1.6.8", + "@codemirror/view": "6.28.4", + "@maxgraph/core": "0.12.0", + "@quasar/extras": "1.16.12", + "@vueuse/core": "10.11.0", + "axios": "1.7.2", "codemirror": "6.0.1", - "dayjs": "1.11.10", - "echarts": "5.5.0", + "dayjs": "1.11.11", + "echarts": "5.5.1", "exceljs": "4.4.0", "file-saver": "2.0.5", "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.248", - "quasar": "2.15.3", - "tailwindcss": "3.4.3", - "vue": "3.4.24", - "vue-dompurify-html": "5.0.1", + "platform-core": "8.1.273", + "quasar": "2.15.4", + "tailwindcss": "3.4.4", + "vue": "3.4.31", + "vue-dompurify-html": "5.1.0", "vue-i18n": "9.13.1", - "vue-router": "4.3.2", - "@univerjs/core": "0.1.13", - "@univerjs/design": "0.1.13", - "@univerjs/docs": "0.1.13", - "@univerjs/docs-ui": "0.1.13", - "@univerjs/engine-formula": "0.1.13", - "@univerjs/engine-render": "0.1.13", - "@univerjs/facade": "0.1.13", - "@univerjs/sheets": "0.1.13", - "@univerjs/sheets-formula": "0.1.13", - "@univerjs/sheets-ui": "0.1.13", - "@univerjs/ui": "0.1.13" + "vue-router": "4.4.0", + "@univerjs/core": "0.2.0", + "@univerjs/design": "0.2.0", + "@univerjs/docs": "0.2.0", + "@univerjs/docs-ui": "0.2.0", + "@univerjs/engine-formula": "0.2.0", + "@univerjs/engine-render": "0.2.0", + "@univerjs/facade": "0.2.0", + "@univerjs/sheets": "0.2.0", + "@univerjs/sheets-formula": "0.2.0", + "@univerjs/sheets-ui": "0.2.0", + "@univerjs/ui": "0.2.0", + "pinia-undo": "0.2.4", + "xml-formatter": "3.6.3" } } \ No newline at end of file diff --git a/io.sc.engine.rule.frontend/src/i18n/messages.json b/io.sc.engine.rule.frontend/src/i18n/messages.json index 556d376f..a392c29b 100644 --- a/io.sc.engine.rule.frontend/src/i18n/messages.json +++ b/io.sc.engine.rule.frontend/src/i18n/messages.json @@ -78,6 +78,8 @@ "re.resources.designer.processor.grid.title": "Processor", "re.resources.designer.processor.grid.entity.content": "Content", + "re.resources.designer.processor.grid.entity.objectCondition":"Condition", + "re.resources.designer.processor.grid.entity.objectProperties": "Object Properties", "re.resources.designer.processor.grid.entity.optionCode": "Option", "re.resources.designer.processor.grid.entity.arithmetic": "Arithmetic", "re.resources.designer.processor.grid.entity.ternaryCondition": "Ternary Condition", @@ -97,7 +99,8 @@ "re.resources.designer.processor.grid.entity.sqlDatasourceName": "Datasource Name", "re.resources.designer.processor.grid.entity.sql": "SQL", "re.resources.designer.processor.grid.entity.sqlParameterValues": "Parameter Values", - "re.resources.designer.processor.grid.entity.sqlFieldMapping": "Field Mapping", + "re.resources.designer.processor.grid.entity.sqlQueryResult": "Result", + "re.resources.designer.processor.grid.entity.sqlFieldMapping": "Result Mapping", "re.resources.designer.processor.grid.entity.rule": "Rule", "re.resources.designer.processor.grid.entity.singleRule": "Single Rule", @@ -105,11 +108,15 @@ "re.resources.designer.processor.dialog.executionFlow.title": "Execution Flow Designer", "re.resources.designer.testCase.grid.title": "Test Cases", + "re.resources.designer.testCase.grid.tools.batchTest": "Batch Test", + "re.resources.designer.testCase.grid.tools.download": "Download Template", + "re.resources.designer.testCase.grid.tools.upload": "Upload Data and Execute", "re.resources.designer.testCase.grid.entity.testResult": "Result", "re.resources.designer.testCase.grid.entity.lastTestDate": "Test Date", - "re.resources.designer.testCase.grid.entity.ownerCode": "Resource Code", - "re.resources.designer.testCase.grid.entity.ownerName": "Resource Name", - "re.resources.designer.testCase.grid.entity.ownerVersion": "Resource Version", + "re.resources.designer.testCase.grid.entity.ownerCode": "Code", + "re.resources.designer.testCase.grid.entity.ownerName": "Name", + "re.resources.designer.testCase.grid.entity.ownerVersion": "Version", + "re.resources.designer.testCase.grid.entity.ownerStatus":"Status", "re.resources.designer.testCaseParameter.grid.title": "Parameter List", "re.resources.designer.testCaseParameter.grid.entity.inputValue": "Input Value", diff --git a/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json b/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json index 4bc539fa..22eca034 100644 --- a/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json +++ b/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json @@ -1,6 +1,6 @@ { "menu.engine.rule":"規則引擎", - "menu.engine.rule.resources": "模型管理", + "menu.engine.rule.resources": "資源管理", "menu.engine.rule.authorization": "權限管理", "menu.engine.rule.workflow": "流程審批", "menu.engine.rule.dictionary": "元數據管理", @@ -8,7 +8,7 @@ "menu.engine.rule.testcase": "試算用例", "menu.engine.rule.migration": "數據備份和遷移", - "re.resources.grid.title": "模型", + "re.resources.grid.title": "資源", "re.resources.grid.toolbar.addTop": "頂級文件夾", "re.resources.grid.toolbar.addChild": "子文件夾", "re.resources.grid.toolbar.addModel": "模型", @@ -41,7 +41,7 @@ "re.resources.designer.model.grid.entity.executeMode": "執行模式", "re.resources.designer.parameter.tab.title": "參數", - "re.resources.designer.testcase.tab.title": "測試用例", + "re.resources.designer.testcase.tab.title": "試算用例", "re.resources.designer.validator.tab.title": "驗證器", "re.resources.designer.processor.tab.title": "處理邏輯", "re.resources.designer.option.tab.title": "選項", @@ -78,6 +78,8 @@ "re.resources.designer.processor.grid.title": "處理邏輯", "re.resources.designer.processor.grid.entity.content": "內容", + "re.resources.designer.processor.grid.entity.objectCondition":"條件", + "re.resources.designer.processor.grid.entity.objectProperties": "對象屬性", "re.resources.designer.processor.grid.entity.optionCode": "選項", "re.resources.designer.processor.grid.entity.arithmetic": "算數表達式", "re.resources.designer.processor.grid.entity.ternaryCondition": "條件", @@ -96,8 +98,9 @@ "re.resources.designer.processor.grid.entity.groovyScript": "腳本代碼", "re.resources.designer.processor.grid.entity.sqlDatasourceName": "數據源名稱", "re.resources.designer.processor.grid.entity.sql": "SQL 語句", - "re.resources.designer.processor.grid.entity.sqlParameterValues": "參數測試值", - "re.resources.designer.processor.grid.entity.sqlFieldMapping": "查詢結果字段映射", + "re.resources.designer.processor.grid.entity.sqlParameterValues": "參數值", + "re.resources.designer.processor.grid.entity.sqlQueryResult": "執行結果", + "re.resources.designer.processor.grid.entity.sqlFieldMapping": "結果映射", "re.resources.designer.processor.grid.entity.rule": "規則", "re.resources.designer.processor.grid.entity.singleRule": "單規則", @@ -105,11 +108,15 @@ "re.resources.designer.processor.dialog.executionFlow.title": "執行流設計器", "re.resources.designer.testCase.grid.title": "試算用例", + "re.resources.designer.testCase.grid.tools.batchTest": "批量試算", + "re.resources.designer.testCase.grid.tools.download": "下載試算模版", + "re.resources.designer.testCase.grid.tools.upload": "上傳用例並試算", "re.resources.designer.testCase.grid.entity.testResult": "結果", "re.resources.designer.testCase.grid.entity.lastTestDate": "測試日期", "re.resources.designer.testCase.grid.entity.ownerCode": "資源代碼", "re.resources.designer.testCase.grid.entity.ownerName": "資源名稱", "re.resources.designer.testCase.grid.entity.ownerVersion": "資源版本", + "re.resources.designer.testCase.grid.entity.ownerStatus":"資源狀態", "re.resources.designer.testCaseParameter.grid.title": "參數列表", "re.resources.designer.testCaseParameter.grid.entity.inputValue": "輸入值", @@ -180,7 +187,7 @@ "re.lib.grid.toolbar.importSample": "導入示例", "re.lib.tab.indicator.title": "特征", - "re.lib.tab.testcase.title": "測試用例", + "re.lib.tab.testcase.title": "試算用例", "re.indicator.grid.toolbar.addInterface": "接口", "re.indicator.grid.toolbar.addIndicator": "指標", diff --git a/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json b/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json index b1a9a61a..d5dd2d61 100644 --- a/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json +++ b/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json @@ -1,6 +1,6 @@ { "menu.engine.rule":"规则引擎", - "menu.engine.rule.resources": "模型管理", + "menu.engine.rule.resources": "资源管理", "menu.engine.rule.authorization": "权限管理", "menu.engine.rule.workflow": "流程审批", "menu.engine.rule.dictionary": "元数据管理", @@ -8,7 +8,7 @@ "menu.engine.rule.testcase": "试算用例管理", "menu.engine.rule.migration": "数据备份和迁移", - "re.resources.grid.title": "模型", + "re.resources.grid.title": "资源", "re.resources.grid.toolbar.addTop": "顶级文件夹", "re.resources.grid.toolbar.addChild": "子文件夹", "re.resources.grid.toolbar.addModel": "模型", @@ -41,7 +41,7 @@ "re.resources.designer.model.grid.entity.executeMode": "执行模式", "re.resources.designer.parameter.tab.title": "参数", - "re.resources.designer.testcase.tab.title": "测试用例", + "re.resources.designer.testcase.tab.title": "试算用例", "re.resources.designer.validator.tab.title": "验证器", "re.resources.designer.processor.tab.title": "处理逻辑", "re.resources.designer.option.tab.title": "选项", @@ -78,6 +78,8 @@ "re.resources.designer.processor.grid.title": "处理逻辑", "re.resources.designer.processor.grid.entity.content": "内容", + "re.resources.designer.processor.grid.entity.objectCondition":"条件", + "re.resources.designer.processor.grid.entity.objectProperties": "对象属性", "re.resources.designer.processor.grid.entity.optionCode": "选项", "re.resources.designer.processor.grid.entity.arithmetic": "算数表达式", "re.resources.designer.processor.grid.entity.ternaryCondition": "条件", @@ -96,8 +98,9 @@ "re.resources.designer.processor.grid.entity.groovyScript": "脚本代码", "re.resources.designer.processor.grid.entity.sqlDatasourceName": "数据源名称", "re.resources.designer.processor.grid.entity.sql": "SQL 语句", - "re.resources.designer.processor.grid.entity.sqlParameterValues": "参数测试值", - "re.resources.designer.processor.grid.entity.sqlFieldMapping": "查询结果字段映射", + "re.resources.designer.processor.grid.entity.sqlParameterValues": "参数值", + "re.resources.designer.processor.grid.entity.sqlQueryResult": "执行结果", + "re.resources.designer.processor.grid.entity.sqlFieldMapping": "结果映射", "re.resources.designer.processor.grid.entity.rule": "规则", "re.resources.designer.processor.grid.entity.singleRule": "单规则", @@ -105,11 +108,15 @@ "re.resources.designer.processor.dialog.executionFlow.title": "执行流设计器", "re.resources.designer.testCase.grid.title": "试算用例", + "re.resources.designer.testCase.grid.tools.batchTest": "批量试算", + "re.resources.designer.testCase.grid.tools.download": "下载试算模版", + "re.resources.designer.testCase.grid.tools.upload": "上传用例并试算", "re.resources.designer.testCase.grid.entity.testResult": "结果", "re.resources.designer.testCase.grid.entity.lastTestDate": "测试日期", "re.resources.designer.testCase.grid.entity.ownerCode": "资源代码", "re.resources.designer.testCase.grid.entity.ownerName": "资源名称", "re.resources.designer.testCase.grid.entity.ownerVersion": "资源版本", + "re.resources.designer.testCase.grid.entity.ownerStatus":"资源状态", "re.resources.designer.testCaseParameter.grid.title": "参数列表", "re.resources.designer.testCaseParameter.grid.entity.inputValue": "输入值", @@ -180,7 +187,7 @@ "re.lib.grid.toolbar.importSample": "导入示例", "re.lib.tab.indicator.title": "特征", - "re.lib.tab.testcase.title": "测试用例", + "re.lib.tab.testcase.title": "试算用例", "re.indicator.grid.toolbar.addInterface": "接口", "re.indicator.grid.toolbar.addIndicator": "指标", diff --git a/io.sc.engine.rule.frontend/src/utils/PlaceHolder.ts b/io.sc.engine.rule.frontend/src/utils/PlaceHolder.ts index 866f0d42..68ae667c 100644 --- a/io.sc.engine.rule.frontend/src/utils/PlaceHolder.ts +++ b/io.sc.engine.rule.frontend/src/utils/PlaceHolder.ts @@ -13,7 +13,7 @@ class PlaceHolder { } return str.replace(/\$\{(.+?)\}/g, prefix + '$1' + suffix); } - return str; + return ''; } } diff --git a/io.sc.engine.rule.frontend/src/views/dictionary/ImportDialog.vue b/io.sc.engine.rule.frontend/src/views/dictionary/ImportDialog.vue index d6679d19..f992b89c 100644 --- a/io.sc.engine.rule.frontend/src/views/dictionary/ImportDialog.vue +++ b/io.sc.engine.rule.frontend/src/views/dictionary/ImportDialog.vue @@ -2,22 +2,22 @@
-
-
+
+
-
+
-
-
+
+
-
+
@@ -44,6 +44,7 @@ const importData = () => { file: fileRef.value.nativeEl.files[0], }, { + loading: true, headers: { 'Content-Type': 'multipart/form-data', }, diff --git a/io.sc.engine.rule.frontend/src/views/dictionary/dictionary.vue b/io.sc.engine.rule.frontend/src/views/dictionary/dictionary.vue index 0fd56fac..36708288 100644 --- a/io.sc.engine.rule.frontend/src/views/dictionary/dictionary.vue +++ b/io.sc.engine.rule.frontend/src/views/dictionary/dictionary.vue @@ -7,6 +7,7 @@ :title="$t('re.dictionary.grid.title')" hide-bottom dense-body + db-click-operation="edit" :config-button="true" selection="multiple" :checkbox-selection="false" @@ -325,7 +326,14 @@ " > - +
@@ -339,6 +347,7 @@ hide-bottom :config-button="true" selection="multiple" + db-click-operation="edit" :checkbox-selection="true" :fetch-data-url="Environment.apiContextPath('/api/re/dictionary/userDefinedJavaClassField?dictionary=' + currentSelectedDictionaryIdRef)" :data-url="Environment.apiContextPath('/api/re/dictionary/userDefinedJavaClassField')" @@ -354,12 +363,15 @@ :columns="[ { width: 60, name: 'order', label: $t('order'), align: 'right' }, { width: 120, name: 'code', label: $t('code') }, - { width: '100%', name: 'name', label: $t('name') }, + { width: 200, name: 'name', label: $t('name') }, { - width: 100, + width: 200, name: 'valueType', label: $t('re.resources.designer.parameter.grid.entity.valueType'), - format: (value) => { + format: (value, row) => { + if (row.valueTypeVersion) { + return ValueTypeMap[value] + ' (V' + row.valueTypeVersion + ')'; + } return ValueTypeMap[value]; }, }, @@ -391,7 +403,44 @@ { name: 'code', label: $t('code'), type: 'text' }, { name: 'name', label: $t('name'), type: 'text', required: true }, { name: 'description', label: $t('description'), type: 'text' }, - { name: 'valueType', label: $t('re.dictionary.field.grid.entity.valueType'), required: true, type: 'select', options: ValueTypeList }, + { + name: 'valueType', + label: $t('re.dictionary.field.grid.entity.valueType'), + required: true, + type: 'select', + options: ValueTypeList, + 'onUpdate:modelValue': (value) => { + const valueType = fieldGridRef.getEditorForm().getFieldValue('valueType'); + axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => { + const versions = response.data; + const options = []; + for (const version of versions) { + options.push({ label: version.key, value: version.value }); + } + valueTypeVersionOptionsRef = options; + }); + }, + }, + { + name: 'valueTypeVersion', + label: $t('re.resources.designer.parameter.grid.entity.valueTypeVersion'), + type: 'select', + clearable: true, + options: valueTypeVersionOptionsRef, + showIf: (arg) => { + var type = arg.form.getFieldValue('valueType'); + if ( + type == 'java.lang.Boolean' || + type == 'java.lang.Long' || + type == 'java.math.BigDecimal' || + type == 'java.lang.String' || + type == 'java.util.Date' + ) { + return false; + } + return true; + }, + }, { name: 'valueTypeIsList', label: $t('re.dictionary.field.grid.entity.valueTypeIsList'), @@ -454,6 +503,34 @@ } autoCompletionOptionsRef = names; }); + + const valueType = fieldGridRef.getEditorForm().getFieldValue('valueType'); + if (valueType) { + if ( + valueType !== 'java.lang.Boolean' && + valueType !== 'java.lang.Long' && + valueType !== 'java.lang.Float' && + valueType !== 'Float' && + valueType !== 'java.math.BigDecimal' && + valueType !== 'java.lang.String' && + valueType !== 'java.util.Date' && + valueType !== 'io.sc.engine.rule.core.classes.ResourceAbstract' && + valueType !== 'io.sc.engine.rule.core.classes.RuleResult' && + valueType !== 'io.sc.engine.rule.core.classes.SingleRuleResult' && + !valueType.startsWith('List') && + !valueType.startsWith('Map') && + ValueTypeMap[valueType] + ) { + axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => { + const versions = response.data; + const options = []; + for (const version of versions) { + options.push({ label: version.key, value: version.value }); + } + valueTypeVersionOptionsRef = options; + }); + } + } } " > @@ -546,6 +623,7 @@ const userDefinedJavaClassDictionaryJsonDialogRef = ref(); const importDialogRef = ref(); const importSampleDialogRef = ref(); const currentSelectedDictionaryIdRef = ref(''); +const valueTypeVersionOptionsRef = ref(); const autoCompletionOptionsRef = ref(); const divStatus = reactive({ isShowFieldGrid: false, diff --git a/io.sc.engine.rule.frontend/src/views/lib/ImportDialog.vue b/io.sc.engine.rule.frontend/src/views/lib/ImportDialog.vue index d6679d19..4d14fcd2 100644 --- a/io.sc.engine.rule.frontend/src/views/lib/ImportDialog.vue +++ b/io.sc.engine.rule.frontend/src/views/lib/ImportDialog.vue @@ -2,22 +2,22 @@
-
-
+
+
-
+
-
-
+
+
-
+
@@ -39,11 +39,12 @@ const fileRef = ref(); const importData = () => { axios .post( - Environment.apiContextPath('/api/re/dictionary/import'), + Environment.apiContextPath('/api/re/lib/import'), { file: fileRef.value.nativeEl.files[0], }, { + loading: true, headers: { 'Content-Type': 'multipart/form-data', }, diff --git a/io.sc.engine.rule.frontend/src/views/lib/IndicatorGrid.vue b/io.sc.engine.rule.frontend/src/views/lib/IndicatorGrid.vue index 3c989b9b..c52c6086 100644 --- a/io.sc.engine.rule.frontend/src/views/lib/IndicatorGrid.vue +++ b/io.sc.engine.rule.frontend/src/views/lib/IndicatorGrid.vue @@ -3,11 +3,12 @@ { - return ValueTypeMap[value]; + if (row.valueTypeVersion) { + return ValueTypeMap[value] + ' (V' + row.valueTypeVersion + ')'; + } + if (row.valueType == 'java.math.BigDecimal') { + if (row.valueRoundingMode == 'HALF_UP') { + return ValueTypeMap[value] + '(' + row.valueScale + ')'; + } else { + return ValueTypeMap[value] + '(' + row.valueScale + ',' + Formater.enum(Enums.RoundingMode)(row.valueRoundingMode) + ')'; + } + } + var result = ValueTypeMap[value]; + result = result || row.valueType; + if (result) { + result = result.replace('<', '<'); + result = result.replace('>', '>'); + } + return result; }, }, { width: 80, name: 'valueTypeIsList', label: $t('re.resources.designer.parameter.grid.entity.valueTypeIsList'), format: Formater.checkTag() }, @@ -117,16 +134,96 @@ form: { colsNum: 1, fields: [ + { name: 'lib', label: $t('lib'), type: 'text', defaultValue: lib.id, hidden: true }, { name: 'name', label: $t('name'), type: 'text' }, { name: 'type', label: $t('type'), type: 'select', options: Options.enum(Enums.IndicatorType) }, { name: 'valueType', - label: $t('valueType'), + label: $t('re.resources.designer.parameter.grid.entity.valueType'), type: 'select', - options: [], + options: ValueTypeList, + 'onUpdate:modelValue': (value) => { + axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + value)).then((response) => { + const data = response.data; + const options = []; + for (const item of data) { + options.push({ label: item.key, value: item.value }); + } + valueTypeVersionRef = options; + }); + }, + }, + { + name: 'valueTypeVersion', + label: $t('re.resources.designer.parameter.grid.entity.valueTypeVersion'), + type: 'select', + options: valueTypeVersionRef, + showIf: (arg) => { + const valueType = arg.form.getFieldValue('valueType'); + if (valueType) { + if ( + valueType == 'java.lang.Boolean' || + valueType == 'java.lang.Long' || + valueType == 'java.lang.Float' || + valueType == 'Float' || + valueType == 'java.math.BigDecimal' || + valueType == 'java.lang.String' || + valueType == 'java.util.Date' || + valueType == 'io.sc.engine.rule.core.classes.ResourceAbstract' || + valueType == 'io.sc.engine.rule.core.classes.RuleResult' || + valueType == 'io.sc.engine.rule.core.classes.SingleRuleResult' || + valueType.startsWith('List') || + valueType.startsWith('Map') + ) { + return false; + } else if (Tools.isUndefinedOrNull(ValueTypeMap[valueType])) { + return false; + } else { + return true; + } + } + return false; + }, + }, + { + name: 'valueScale', + label: $t('re.resources.designer.parameter.grid.entity.valueScale'), + type: 'number', + showIf: (arg) => { + const valueType = arg.form.getFieldValue('valueType'); + const type = arg.form.getFieldValue('type'); + if (valueType == 'java.math.BigDecimal' && type === 'INDICATOR') { + return true; + } + return false; + }, + }, + { + name: 'valueRoundingMode', + label: $t('re.resources.designer.parameter.grid.entity.valueRoundingMode'), + type: 'select', + options: Options.enum(Enums.RoundingMode), + showIf: (arg) => { + const valueType = arg.form.getFieldValue('valueType'); + const type = arg.form.getFieldValue('type'); + if (valueType == 'java.math.BigDecimal' && type === 'INDICATOR') { + return true; + } + return false; + }, + }, + { + name: 'valueTypeIsList', + label: $t('re.resources.designer.parameter.grid.entity.valueTypeIsList'), + type: 'checkbox', + defaultValue: false, }, - { name: 'valueTypeIsList', label: $t('re.resources.designer.parameter.grid.entity.valueTypeIsList'), type: 'checkbox' }, - { name: 'defaultValue', label: $t('defaultValue'), type: 'text' }, + { + name: 'defaultValue', + label: $t('defaultValue'), + type: 'text', + }, + { name: 'order', label: $t('order'), type: 'number' }, ], }, @@ -164,7 +261,8 @@ diff --git a/io.sc.engine.rule.frontend/src/views/lib/ProcessorGrid.vue b/io.sc.engine.rule.frontend/src/views/lib/ProcessorGrid.vue index 7e6e6a26..83986080 100644 --- a/io.sc.engine.rule.frontend/src/views/lib/ProcessorGrid.vue +++ b/io.sc.engine.rule.frontend/src/views/lib/ProcessorGrid.vue @@ -1,701 +1,1228 @@ diff --git a/io.sc.engine.rule.frontend/src/views/resources/designer/ObjectPropertiesMatcherDialog.vue b/io.sc.engine.rule.frontend/src/views/resources/designer/ObjectPropertiesMatcherDialog.vue new file mode 100644 index 00000000..a406d261 --- /dev/null +++ b/io.sc.engine.rule.frontend/src/views/resources/designer/ObjectPropertiesMatcherDialog.vue @@ -0,0 +1,85 @@ + + diff --git a/io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue b/io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue index 44a2c33a..7da83e83 100644 --- a/io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue +++ b/io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue @@ -8,9 +8,10 @@ hide-bottom :config-button="false" selection="multiple" + db-click-operation="edit" :checkbox-selection="true" :tree="false" - :fetch-data-url="Environment.apiContextPath('/api/re/model/parameter/findByModelId?modelId=' + model.id)" + :fetch-data-url="Environment.apiContextPath('/api/re/model/parameter/findParametersByModelId?modelId=' + model.id)" :data-url="Environment.apiContextPath('/api/re/model/parameter')" :pageable="false" :toolbar-configure="{ noIcon: false }" @@ -205,11 +206,11 @@ form: { colsNum: 1, fields: [ + { name: 'type', label: $t('type'), type: 'select', options: Options.enum(Enums.ParameterType), 'onUpdate:modelValue': (value) => {} }, { name: 'model', label: $t('modelId'), type: 'text', defaultValue: model.id, hidden: true }, { name: 'code', label: $t('code'), type: 'text' }, { name: 'name', label: $t('name'), type: 'text', required: true }, { name: 'description', label: $t('description'), type: 'text' }, - { name: 'type', label: $t('type'), type: 'select', options: Options.enum(Enums.ParameterType) }, { name: 'libCode', label: $t('re.resources.designer.parameter.grid.entity.libCode'), @@ -252,6 +253,7 @@ label: $t('re.resources.designer.parameter.grid.entity.valueType'), type: 'select', options: ValueTypeList, + defaultValue: 'java.math.BigDecimal', showIf: (arg) => { const type = arg.form.getFieldValue('type'); if (type == 'INDICATOR' || type == 'IN_OPTION' || type == 'RULE_RESULT' || type == 'SINGLE_RULE_RESULT') { @@ -259,13 +261,29 @@ } return true; }, + 'onUpdate:modelValue': (value) => { + const valueType = gridRef.getEditorForm().getFieldValue('valueType'); + axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => { + const versions = response.data; + const options = []; + for (const version of versions) { + options.push({ label: version.key, value: version.value }); + } + valueTypeVersionOptionsRef = options; + }); + }, }, { name: 'valueTypeVersion', label: $t('re.resources.designer.parameter.grid.entity.valueTypeVersion'), type: 'select', - options: ValueTypeList, + clearable: true, + options: valueTypeVersionOptionsRef, showIf: (arg) => { + const type = arg.form.getFieldValue('type'); + if (type == 'INDICATOR' || type == 'IN_OPTION' || type == 'RULE_RESULT' || type == 'SINGLE_RULE_RESULT') { + return false; + } const valueType = arg.form.getFieldValue('valueType'); if (valueType) { if ( @@ -276,9 +294,9 @@ valueType == 'java.math.BigDecimal' || valueType == 'java.lang.String' || valueType == 'java.util.Date' || - valueType == 'org.wsp.engine.rule.core.classes.ResourceAbstract' || - valueType == 'org.wsp.engine.rule.core.classes.RuleResult' || - valueType == 'org.wsp.engine.rule.core.classes.SingleRuleResult' || + valueType == 'io.sc.engine.rule.core.classes.ResourceAbstract' || + valueType == 'io.sc.engine.rule.core.classes.RuleResult' || + valueType == 'io.sc.engine.rule.core.classes.SingleRuleResult' || valueType.startsWith('List') || valueType.startsWith('Map') ) { @@ -296,10 +314,17 @@ name: 'valueScale', label: $t('re.resources.designer.parameter.grid.entity.valueScale'), type: 'number', + defaultValue: 6, showIf: (arg) => { const valueType = arg.form.getFieldValue('valueType'); const type = arg.form.getFieldValue('type'); - if (valueType == 'java.math.BigDecimal' && type != 'INDICATOR' && type != 'RULE_RESULT' && type != 'SINGLE_RULE_RESULT') { + if ( + valueType == 'java.math.BigDecimal' && + type != 'INDICATOR' && + type != 'IN_OPTION' && + type != 'RULE_RESULT' && + type != 'SINGLE_RULE_RESULT' + ) { return true; } return false; @@ -310,10 +335,17 @@ label: $t('re.resources.designer.parameter.grid.entity.valueRoundingMode'), type: 'select', options: Options.enum(Enums.RoundingMode), + defaultValue: 'HALF_UP', showIf: (arg) => { const valueType = arg.form.getFieldValue('valueType'); const type = arg.form.getFieldValue('type'); - if (valueType == 'java.math.BigDecimal' && type != 'INDICATOR' && type != 'RULE_RESULT' && type != 'SINGLE_RULE_RESULT') { + if ( + valueType == 'java.math.BigDecimal' && + type != 'INDICATOR' && + type != 'IN_OPTION' && + type != 'RULE_RESULT' && + type != 'SINGLE_RULE_RESULT' + ) { return true; } return false; @@ -391,8 +423,8 @@ " @after-editor-open=" (row) => { - console.log(row); - if (row.type === 'INDICATOR') { + const type = gridRef.getEditorForm().getFieldValue('type'); + if (type === 'INDICATOR') { axios.get(Environment.apiContextPath('/api/re/lib/isc/getLibInformationWrapper')).then((response) => { IndicatorManager.setWrapper(response.data); libCodeOptionsRef = IndicatorManager.getLibMap(); @@ -400,6 +432,34 @@ indicatorCodeOptionsRef = IndicatorManager.getIndicatorMap(row.libCode, row.libVersion); }); } + + const valueType = gridRef.getEditorForm().getFieldValue('valueType'); + if (valueType) { + if ( + valueType !== 'java.lang.Boolean' && + valueType !== 'java.lang.Long' && + valueType !== 'java.lang.Float' && + valueType !== 'Float' && + valueType !== 'java.math.BigDecimal' && + valueType !== 'java.lang.String' && + valueType !== 'java.util.Date' && + valueType !== 'io.sc.engine.rule.core.classes.ResourceAbstract' && + valueType !== 'io.sc.engine.rule.core.classes.RuleResult' && + valueType !== 'io.sc.engine.rule.core.classes.SingleRuleResult' && + !valueType.startsWith('List') && + !valueType.startsWith('Map') && + ValueTypeMap[valueType] + ) { + axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => { + const versions = response.data; + const options = []; + for (const version of versions) { + options.push({ label: version.key, value: version.value }); + } + valueTypeVersionOptionsRef = options; + }); + } + } } " > @@ -426,6 +486,7 @@ const emit = defineEmits<{ }>(); const gridRef = ref(); +const valueTypeVersionOptionsRef = ref([]); const libCodeOptionsRef = ref([]); const libVersionOptionsRef = ref(); const indicatorCodeOptionsRef = ref(); diff --git a/io.sc.engine.rule.frontend/src/views/resources/designer/Processor.vue b/io.sc.engine.rule.frontend/src/views/resources/designer/Processor.vue index d34ff2c1..17203bda 100644 --- a/io.sc.engine.rule.frontend/src/views/resources/designer/Processor.vue +++ b/io.sc.engine.rule.frontend/src/views/resources/designer/Processor.vue @@ -8,6 +8,7 @@ hide-bottom :config-button="false" selection="multiple" + db-click-operation="edit" :checkbox-selection="true" :tree="false" :fetch-data-url="Environment.apiContextPath('/api/re/model/parameter/processor/findByParameterId?parameterId=' + parameter.id)" @@ -25,6 +26,32 @@ }, click: undefined, }, + { + extend: 'add', + name: 'objectProperties', + label: Formater.enum(Enums.ProcessorType)('OBJECT_PROPERTIES'), + icon: 'bi-card-list', + enableIf: (arg) => { + const valueType = parameter.valueType; + return ( + valueType !== 'java.lang.Boolean' && + valueType !== 'java.lang.Long' && + valueType !== 'java.lang.Float' && + valueType !== 'Float' && + valueType !== 'java.math.BigDecimal' && + valueType !== 'java.lang.String' && + valueType !== 'java.util.Date' && + valueType !== 'io.sc.engine.rule.core.classes.ResourceAbstract' && + valueType !== 'io.sc.engine.rule.core.classes.RuleResult' && + valueType !== 'io.sc.engine.rule.core.classes.SingleRuleResult' && + !valueType.startsWith('List') && + !valueType.startsWith('Map') + ); + }, + afterClick: (arg) => { + arg.grid.getEditorForm().setFieldValue('type', 'OBJECT_PROPERTIES'); + }, + }, { extend: 'add', name: 'optionValue', @@ -37,7 +64,6 @@ arg.grid.getEditorForm().setFieldValue('type', 'OPTION_VALUE'); }, }, - /* { extend: 'add', name: 'mathFormula', @@ -49,7 +75,7 @@ afterClick: (arg) => { arg.grid.getEditorForm().setFieldValue('type', 'MATH_FORMULA'); }, - },*/ + }, { extend: 'add', name: 'arithmetic', @@ -283,10 +309,49 @@ sortable: false, format: (value, row) => { const type = row.type; - if ('OPTION_VALUE' === type) { + if ('OBJECT_PROPERTIES' === type) { + let str = ''; + if (row.objectCondition) { + str += `
When ` + PlaceHolder.replace(row.objectCondition) + ' Then
'; + } + const objs = Tools.json2Object(row.objectProperties); + if (objs) { + str += `
`; + str += `
{{ $t('io.sc.engine.mv.performance') }}
`; + for (let i = 0; i < objs.length; i++) { + const obj = objs[i]; + str += ''; + str += ` `; + str += ` '; + str += ''; + } + str += '
` + obj.name + `` + ('' + PlaceHolder.replace(obj.expression)) + '
'; + str += ``; + } + return str; + } else if ('OPTION_VALUE' === type) { return row.optionCode; + } else if ('MATH_FORMULA' === type) { + return { + componentType: 'w-expression', + attrs: { + modelValue: row.mathFormula, + readOnly: true, + zoom: 2, + }, + }; } else if ('ARITHMETIC' === type) { - return PlaceHolder.replace(row.arithmetic); + return { + componentType: 'w-code-mirror', + attrs: { + lang: 'java', + rows: 4, + modelValue: row.arithmetic, + editable: false, + placeholder: true, + lineWrap: true, + }, + }; } else if ('TERNARY' === type) { return row.ternaryCondition + ' ? ' + row.ternaryTrue + ' : ' + row.ternaryFalse; } else if ('WHEN_THEN' === type) { @@ -304,8 +369,8 @@ } else if ('NUMBER_RANGE' === type) { const objs = Tools.json2Object(row.numberRange); if (objs) { - let str = `
`; - str += ``; + let str = `
`; + str += `
`; for (let i = 0; i < objs.length; i++) { const obj = objs[i]; str += ''; @@ -324,8 +389,8 @@ } else if ('CONDITION_RANGE' === type) { const objs = Tools.json2Object(row.conditionRange); if (objs) { - let str = `
`; - str += `
`; + let str = `
`; + str += `
`; for (let i = 0; i < objs.length; i++) { const obj = objs[i]; str += ''; @@ -346,24 +411,149 @@ return transfromContent(row.decisionTree); } else if ('EXECUTION_FLOW' === type) { return transfromContent(row.executionFlow); + } else if ('SQL' === type) { + return { + componentType: 'w-code-mirror', + attrs: { + lang: 'sql', + rows: 4, + editable: false, + modelValue: row.sql, + placeholder: true, + }, + }; } }, }, ]" :editor="{ dialog: { - width: '800px', + width: editorDialogWidthRef, }, form: { - colsNum: 1, + colsNum: 5, fields: [ - { name: 'parameter', label: 'parameter', type: 'text', defaultValue: parameter.id, hidden: true }, - { name: 'id', label: $t('id'), type: 'text', hidden: true }, - { name: 'order', label: $t('order'), type: 'number', hidden: true }, - { name: 'type', label: $t('type'), type: 'text', hidden: true }, - { name: 'description', label: $t('description'), type: 'text', hidden: true }, - { name: 'enable', label: $t('enable'), type: 'checkbox', defaultValue: true, hidden: true }, + { colSpan: 5, name: 'parameter', label: 'parameter', type: 'text', defaultValue: parameter.id, hidden: true }, + { colSpan: 5, name: 'id', label: $t('id'), type: 'text', hidden: true }, + { colSpan: 5, name: 'order', label: $t('order'), type: 'number', hidden: true }, + { colSpan: 5, name: 'type', label: $t('type'), type: 'text', hidden: true }, + { colSpan: 5, name: 'description', label: $t('description'), type: 'text', hidden: true }, + { colSpan: 5, name: 'enable', label: $t('enable'), type: 'checkbox', defaultValue: true, hidden: true }, { + colSpan: 5, + name: 'objectCondition', + label: $t('re.resources.designer.processor.grid.entity.objectCondition'), + type: 'code-mirror', + lang: 'java', + rows: 3, + lineWrap: true, + lineBreak: false, + autoCompletion: autoCompletion, + showIf: (arg) => { + return 'OBJECT_PROPERTIES' === arg.form.getFieldValue('type'); + }, + }, + { + colSpan: 5, + name: 'objectProperties', + label: $t('re.resources.designer.processor.grid.entity.objectProperties'), + showIf: (arg) => { + return 'OBJECT_PROPERTIES' === arg.form.getFieldValue('type'); + }, + type: 'w-grid', + title: $t('re.resources.designer.processor.grid.entity.objectProperties'), + height: 400, + autoFetchData: false, + dbClickOperation: 'edit', + dense: true, + draggable: true, + pageable: false, + configButton: false, + toolbarConfigure: { noIcon: false }, + toolbarActions: [ + 'separator', + { + name: 'autoMatch', + label: $t('autoMatch'), + icon: 'bi-link-45deg', + click: () => { + const grid = gridRef.getEditorForm().getFieldComponent('objectProperties'); + const localData = grid.getLocalData(); + const objectProperties = []; + for (const item of localData) { + objectProperties.push({ + code: item.code, + name: item.name, + expression: item.expression, + }); + } + objectPropertiesMatcherDialogRef.open(objectProperties); + }, + }, + 'edit', + ], + primaryKey: 'code', + columns: [ + { name: 'code', label: 'code', hidden: true }, + { + width: 300, + name: 'name', + label: $t('propertyName'), + align: 'left', + sortable: false, + format: (value, row) => { + if (row.expression) { + const expression = row.expression.replace(/\$\{(.+?)\.(.+?)\}/g, '$2'); + if (expression.trim() !== value.trim()) { + return `` + value + ''; + } + } + return value; + }, + }, + { + width: '100%', + name: 'expression', + label: $t('expression'), + sortable: false, + format: (value) => { + return PlaceHolder.replace(value); + }, + }, + ], + editor: { + dialog: { + width: '800px', + }, + form: { + colsNum: 1, + fields: [ + { name: 'code', label: 'code', hidden: true }, + { + name: 'expression', + label: $t('expression'), + type: 'code-mirror', + lang: 'java', + rows: 3, + lineWrap: true, + lineBreak: false, + placeholder: true, + autoCompletion: autoCompletion, + }, + ], + }, + }, + onBeforeEditorDataSubmit: (data, callback) => { + const grid = gridRef.getEditorForm().getFieldComponent('objectProperties'); + const form = grid.getEditorForm(); + if ('edit' == form.getStatus()) { + grid.replaceRow(data); + callback(false); + } + }, + }, + { + colSpan: 5, name: 'optionCode', label: $t('re.resources.designer.processor.grid.entity.optionCode'), type: 'select', @@ -371,100 +561,108 @@ showIf: (arg) => { return 'OPTION_VALUE' === arg.form.getFieldValue('type'); }, - } /* + }, { + colSpan: 5, name: 'mathFormula', label: $t('re.resources.designer.processor.grid.entity.mathFormula'), type: 'expression', showIf: (arg) => { return 'MATH_FORMULA' === arg.form.getFieldValue('type'); }, - },*/, + }, { + colSpan: 5, name: 'arithmetic', label: $t('re.resources.designer.processor.grid.entity.arithmetic'), type: 'code-mirror', lang: 'java', rows: 5, placeholder: true, - autoCompletion: true, - autoCompletionOptions: autoCompletionOptionsRef, - extAutoCompletionOptions: GroovyFunctions, + lineWrap: true, + lineBreak: false, + autoCompletion: autoCompletion, showIf: (arg) => { return 'ARITHMETIC' === arg.form.getFieldValue('type'); }, }, { + colSpan: 5, name: 'ternaryCondition', label: $t('re.resources.designer.processor.grid.entity.ternaryCondition'), type: 'code-mirror', lang: 'java', - rows: 1, + rows: 4, placeholder: true, - autoCompletion: true, - autoCompletionOptions: autoCompletionOptionsRef, - extAutoCompletionOptions: GroovyFunctions, + lineWrap: true, + lineBreak: false, + autoCompletion: autoCompletion, showIf: (arg) => { return 'TERNARY' === arg.form.getFieldValue('type'); }, }, { + colSpan: 5, name: 'ternaryTrue', label: $t('re.resources.designer.processor.grid.entity.ternaryTrue'), type: 'code-mirror', lang: 'java', - rows: 1, + rows: 4, placeholder: true, - autoCompletion: true, - autoCompletionOptions: autoCompletionOptionsRef, - extAutoCompletionOptions: GroovyFunctions, + lineWrap: true, + lineBreak: false, + autoCompletion: autoCompletion, showIf: (arg) => { return 'TERNARY' === arg.form.getFieldValue('type'); }, }, { + colSpan: 5, name: 'ternaryFalse', label: $t('re.resources.designer.processor.grid.entity.ternaryFalse'), type: 'code-mirror', lang: 'java', - rows: 1, + rows: 4, placeholder: true, - autoCompletion: true, - autoCompletionOptions: autoCompletionOptionsRef, - extAutoCompletionOptions: GroovyFunctions, + lineWrap: true, + lineBreak: false, + autoCompletion: autoCompletion, showIf: (arg) => { return 'TERNARY' === arg.form.getFieldValue('type'); }, }, { + colSpan: 5, name: 'when', label: $t('re.resources.designer.processor.grid.entity.when'), type: 'code-mirror', lang: 'java', - rows: 1, + rows: 4, + lineWrap: true, + lineBreak: false, placeholder: true, - autoCompletion: true, - autoCompletionOptions: autoCompletionOptionsRef, - extAutoCompletionOptions: GroovyFunctions, + autoCompletion: autoCompletion, showIf: (arg) => { return 'WHEN_THEN' === arg.form.getFieldValue('type'); }, }, { + colSpan: 5, name: 'then', label: $t('re.resources.designer.processor.grid.entity.then'), type: 'code-mirror', lang: 'java', - rows: 1, + rows: 4, + lineWrap: true, + lineBreak: false, placeholder: true, - autoCompletion: true, - autoCompletionOptions: autoCompletionOptionsRef, - extAutoCompletionOptions: GroovyFunctions, + autoCompletion: autoCompletion, showIf: (arg) => { return 'WHEN_THEN' === arg.form.getFieldValue('type'); }, }, { + colSpan: 5, name: 'isWhenThenShorted', label: $t('re.resources.designer.processor.grid.entity.isWhenThenShorted'), type: 'checkbox', @@ -473,6 +671,7 @@ }, }, { + colSpan: 5, name: 'numberRangeVar', label: $t('re.resources.designer.processor.grid.entity.numberRangeVar'), showIf: (arg) => { @@ -480,13 +679,14 @@ }, type: 'code-mirror', lang: 'java', - rows: 1, + rows: 3, + lineWrap: true, + lineBreak: false, placeholder: true, - autoCompletion: true, - autoCompletionOptions: autoCompletionOptionsRef, - extAutoCompletionOptions: GroovyFunctions, + autoCompletion: autoCompletion, }, { + colSpan: 5, name: 'numberRange', label: $t('re.resources.designer.processor.grid.entity.numberRange'), showIf: (arg) => { @@ -494,6 +694,7 @@ }, type: 'w-grid', height: 300, + autoFetchData: false, denseBody: true, draggable: true, pageable: false, @@ -594,6 +795,7 @@ }, }, { + colSpan: 5, name: 'conditionRange', label: $t('re.resources.designer.processor.grid.entity.conditionRange'), showIf: (arg) => { @@ -601,6 +803,7 @@ }, type: 'w-grid', height: 300, + autoFetchData: false, denseBody: true, draggable: true, pageable: false, @@ -669,22 +872,22 @@ label: $t('condition'), type: 'code-mirror', lang: 'java', - rows: 1, + rows: 4, placeholder: true, - autoCompletion: true, - autoCompletionOptions: autoCompletionOptionsRef, - extAutoCompletionOptions: GroovyFunctions, + lineWrap: true, + lineBreak: false, + autoCompletion: autoCompletion, }, { name: 'value', label: $t('value'), type: 'code-mirror', lang: 'java', - rows: 1, + rows: 4, + lineWrap: true, + lineBreak: false, placeholder: true, - autoCompletion: true, - autoCompletionOptions: autoCompletionOptionsRef, - extAutoCompletionOptions: GroovyFunctions, + autoCompletion: autoCompletion, }, ], }, @@ -703,6 +906,7 @@ }, }, { + colSpan: 5, name: 'decisionTable2C', label: $t('re.resources.designer.processor.grid.entity.decisionTable2C'), type: 'code-mirror', @@ -712,6 +916,7 @@ }, }, { + colSpan: 5, name: 'decisionTable', label: $t('re.resources.designer.processor.grid.entity.decisionTable'), type: 'code-mirror', @@ -721,36 +926,44 @@ }, }, { + colSpan: 5, name: 'decisionTree', label: $t('re.resources.designer.processor.grid.entity.decisionTree'), type: 'code-mirror', rows: 20, lineNumber: true, + toolbar: false, showIf: (arg) => { return 'DECISION_TREE' === arg.form.getFieldValue('type'); }, }, { + colSpan: 5, name: 'executionFlow', label: $t('re.resources.designer.processor.grid.entity.executionFlow'), type: 'code-mirror', - rows: 1, + rows: 20, + lineNumber: true, + toolbar: false, showIf: (arg) => { return 'EXECUTION_FLOW' === arg.form.getFieldValue('type'); }, }, { + colSpan: 5, name: 'pmml', label: $t('re.resources.designer.processor.grid.entity.pmml'), type: 'code-mirror', - rows: 10, + rows: 20, lineNumber: true, + toolbar: false, lang: 'xml', showIf: (arg) => { return 'PMML' === arg.form.getFieldValue('type'); }, }, { + colSpan: 5, name: 'groovyScript', label: $t('re.resources.designer.processor.grid.entity.groovyScript'), type: 'code-mirror', @@ -762,40 +975,290 @@ }, }, { + colSpan: 5, name: 'sqlDatasourceName', label: $t('re.resources.designer.processor.grid.entity.sqlDatasourceName'), type: 'select', + clearable: true, + options: dsOptionsRef, rows: 1, showIf: (arg) => { return 'SQL' === arg.form.getFieldValue('type'); }, }, { + colSpan: 3, name: 'sql', label: $t('re.resources.designer.processor.grid.entity.sql'), - type: 'select', - rows: 1, + type: 'code-mirror', + height: 180, + lang: 'sql', + toolbar: false, + placeholder: true, + autoCompletion: autoCompletion, showIf: (arg) => { return 'SQL' === arg.form.getFieldValue('type'); }, }, { + colSpan: 2, name: 'sqlParameterValues', label: $t('re.resources.designer.processor.grid.entity.sqlParameterValues'), - type: 'select', - rows: 1, showIf: (arg) => { return 'SQL' === arg.form.getFieldValue('type'); }, + type: 'w-grid', + height: 150, + title: $t('re.resources.designer.processor.grid.entity.sqlParameterValues'), + autoFetchData: false, + dense: true, + dbClickOperation: 'edit', + draggable: true, + pageable: false, + configButton: false, + toolbarConfigure: { noIcon: false }, + toolbarActions: [ + { + name: 'analyze', + label: $t('analyze'), + icon: 'bi-tag', + click: (arg) => { + const sql = gridRef.getEditorForm().getFieldValue('sql'); + const regex = /\$\{[\u0000-\uFFFF]+?\}/g; + const array = sql.match(regex); + const rows = []; + for (const item of array) { + rows.push({ uuid: Tools.uuid(), name: item, value: '' }); + } + const grid = gridRef.getEditorForm().getFieldComponent('sqlParameterValues'); + grid.setLocalData(rows); + }, + }, + 'separator', + 'add', + 'edit', + [ + { + extend: 'remove', + click: (arg) => { + const grid = gridRef.getEditorForm().getFieldComponent('sqlParameterValues'); + grid.removeRows(arg.selecteds); + }, + }, + { + extend: 'remove', + name: 'removeAll', + label: $t('deleteAll'), + click: (arg) => { + const grid = gridRef.getEditorForm().getFieldComponent('sqlParameterValues'); + grid.setLocalData([]); + }, + }, + ], + ], + primaryKey: 'uuid', + columns: [ + { name: 'uuid', label: 'uuid', hidden: true }, + { + width: '50%', + name: 'name', + label: $t('name'), + align: 'left', + sortable: false, + format: (value) => { + return PlaceHolder.replace(value); + }, + }, + { + width: '100%', + name: 'value', + label: $t('value'), + sortable: false, + }, + ], + editor: { + dialog: { + width: '600px', + }, + form: { + colsNum: 1, + fields: [ + { name: 'uuid', label: 'uuid', hidden: true }, + { + name: 'name', + label: $t('name'), + type: 'code-mirror', + lang: 'java', + rows: 1, + placeholder: true, + autoCompletion: autoCompletion, + }, + { + name: 'value', + label: $t('value'), + type: 'text', + }, + ], + }, + }, + onBeforeEditorDataSubmit: (data, callback) => { + const grid = gridRef.getEditorForm().getFieldComponent('sqlParameterValues'); + const form = grid.getEditorForm(); + if ('add' == form.getStatus() || 'clone' == form.getStatus()) { + data.uuid = Tools.uuid(); + grid.addRow(data); + callback(false); + } else if ('edit' == form.getStatus()) { + grid.replaceRow(data); + callback(false); + } + }, }, { + colSpan: 3, + name: 'sqlQueryResult', + label: $t('re.resources.designer.processor.grid.entity.sqlQueryResult'), + showIf: (arg) => { + return 'SQL' === arg.form.getFieldValue('type'); + }, + type: 'w-grid', + height: 250, + autoFetchData: false, + title: $t('re.resources.designer.processor.grid.entity.sqlQueryResult'), + dense: true, + draggable: true, + pageable: false, + checkboxSelection: false, + configButton: false, + toolbarConfigure: { noIcon: false }, + toolbarActions: [ + { + name: 'execute', + label: $t('execute'), + icon: 'bi-caret-right', + click: (arg) => { + const sql = gridRef.getEditorForm().getFieldValue('sql'); + let sqlParameterValues = gridRef.getEditorForm().getFieldValue('sqlParameterValues'); + if (sqlParameterValues) { + sqlParameterValues = Tools.json2Object(sqlParameterValues); + } + axios + .post(Environment.apiContextPath('/api/re/model/parameter/processor/executeSql'), { + sql: sql, + sqlParameterValues: sqlParameterValues, + }) + .then((response) => { + const fieldMetaDatas = response.data.fieldMetaDatas; + for (const field of fieldMetaDatas) { + field.value = field.name; + } + const data = response.data.data; + const grid = gridRef.getEditorForm().getFieldComponent('sqlQueryResult'); + sqlQueryResultFieldsRef = fieldMetaDatas; + grid.setLocalData(data); + }); + }, + }, + ], + columns: computed(() => { + return sqlQueryResultFieldsRef; + }), + }, + { + colSpan: 2, name: 'sqlFieldMapping', label: $t('re.resources.designer.processor.grid.entity.sqlFieldMapping'), - type: 'select', - rows: 1, showIf: (arg) => { return 'SQL' === arg.form.getFieldValue('type'); }, + type: 'w-grid', + height: 250, + width: '100%', + autoFetchData: false, + title: $t('re.resources.designer.processor.grid.entity.sqlFieldMapping'), + dense: true, + dbClickOperation: 'edit', + draggable: true, + pageable: false, + configButton: false, + toolbarConfigure: { noIcon: false }, + toolbarActions: [ + 'add', + 'edit', + [ + { + extend: 'remove', + click: (arg) => { + const grid = gridRef.getEditorForm().getFieldComponent('sqlFieldMapping'); + grid.removeRows(arg.selecteds); + }, + }, + { + extend: 'remove', + name: 'removeAll', + label: $t('deleteAll'), + click: (arg) => { + const grid = gridRef.getEditorForm().getFieldComponent('sqlFieldMapping'); + grid.setLocalData([]); + }, + }, + ], + ], + primaryKey: 'uuid', + columns: [ + { name: 'uuid', label: 'uuid', hidden: true }, + { + width: '50%', + name: 'field', + label: $t('fieldName'), + align: 'left', + sortable: false, + }, + { + width: '50%', + name: 'parameter', + label: $t('parameterName'), + sortable: false, + format: (value) => { + return PlaceHolder.replace(value); + }, + }, + ], + editor: { + dialog: { + width: '600px', + }, + form: { + colsNum: 1, + fields: [ + { name: 'uuid', label: 'uuid', hidden: true }, + { + name: 'field', + label: $t('fieldName'), + type: 'select', + options: sqlQueryResultFieldsRef, + }, + { + name: 'parameter', + label: $t('parameterName'), + type: 'select', + options: autoCompletionOptionsRef, + }, + ], + }, + }, + onBeforeEditorDataSubmit: (data, callback) => { + const grid = gridRef.getEditorForm().getFieldComponent('sqlFieldMapping'); + const form = grid.getEditorForm(); + if ('add' == form.getStatus() || 'clone' == form.getStatus()) { + data.uuid = Tools.uuid(); + grid.addRow(data); + callback(false); + } else if ('edit' == form.getStatus()) { + grid.replaceRow(data); + callback(false); + } + }, }, ], }, @@ -842,7 +1305,19 @@ @before-editor-data-submit=" (data, callback) => { const form = gridRef.getEditorForm(); - if ('NUMBER_RANGE' === data.type) { + if ('OBJECT_PROPERTIES' === data.type) { + const grid = form.getFieldComponent('objectProperties'); + const localData = grid.getLocalData(); + const objectProperties = []; + for (const item of localData) { + objectProperties.push({ + code: item.code, + name: item.name, + expression: item.expression, + }); + } + data.objectProperties = Tools.object2Json(objectProperties); + } else if ('NUMBER_RANGE' === data.type) { const grid = form.getFieldComponent('numberRange'); const localData = grid.getLocalData(); const ranges = []; @@ -869,38 +1344,80 @@ }); } data.conditionRange = Tools.object2Json(ranges); + } else if ('SQL' === data.type) { + const sqlParameterValuesGrid = form.getFieldComponent('sqlParameterValues'); + const sqlParameterValuesLocalData = sqlParameterValuesGrid.getLocalData(); + const sqlParameterValues = []; + for (const item of sqlParameterValuesLocalData) { + sqlParameterValues.push({ + uuid: item.uuid, + name: item.name, + value: item.value, + }); + } + data.sqlParameterValues = Tools.object2Json(sqlParameterValues); + + const sqlFieldMappingGrid = form.getFieldComponent('sqlFieldMapping'); + const sqlFieldMappingLocalData = sqlFieldMappingGrid.getLocalData(); + const sqlFieldMapping = []; + for (const item of sqlFieldMappingLocalData) { + sqlFieldMapping.push({ + uuid: item.uuid, + field: item.field, + parameter: item.parameter, + }); + } + data.sqlFieldMapping = Tools.object2Json(sqlFieldMapping); } } " @after-editor-open=" (row) => { - axios.get(Environment.apiContextPath('/api/re/model/parameter/listParemterHintsByParameterId/' + parameter.id)).then((response) => { - const names = []; - if (response.data?.parentParameterNames && response.data?.parentParameterNames.length > 0) { - for (const item of response.data?.parentParameterNames) { - names.push({ label: item, type: 'variable', apply: '${' + item + '}' }); - } - } - if (response.data?.parameterNames && response.data?.parameterNames.length > 0) { - for (const item of response.data?.parameterNames) { - names.push({ label: item, type: 'variable', apply: '${' + item + '}' }); + // 获取代码提示列表 + axios.get(Environment.apiContextPath('/api/re/common/listParameterAndValueTypeByParameterId/' + parameter.id)).then((response) => { + autoCompletionManager.setParameters(response.data.parameters); + autoCompletionManager.setValueTypes(response.data.valueTypes); + }); + + // 获取选项输入参数列表 + axios.get(Environment.apiContextPath('/api/re/model/parameter/listParemtersByParameterId/' + parameter.id)).then((response) => { + const parameters = response.data; + const options = []; + for (const item of parameters) { + if (item.type === 'IN_OPTION') { + options.push({ label: item.name, value: item.code }); } } - autoCompletionOptionsRef = names; + optionOptionsRef = options; }); - const type = gridRef.getEditorForm().getFieldValue('type'); - if ('IN_OPTION' === type) { - axios.get(Environment.apiContextPath('/api/re/model/parameter/listParemtersByParameterId/' + parameter.id)).then((response) => { - const parameters = []; - if (response.data) { - for (const parameter of response.data) { - if ('IN_OPTION' === parameter.type) { - parameters.push({ label: parameter.name, value: parameter.code }); - } - } - } - optionOptionsRef = parameters; + + if ('add' == gridRef.getEditorForm().getStatus()) { + // 获取对象属性列表 + axios.get(Environment.apiContextPath('/api/re/model/parameter/listObejctPropertiesByParameterId/' + parameter.id)).then((response) => { + const properties = response.data; + const grid = gridRef.getEditorForm().getFieldComponent('objectProperties'); + grid?.setLocalData(properties); + }); + } else if ('edit' == gridRef.getEditorForm().getStatus()) { + // 获取对象属性列表 + axios.get(Environment.apiContextPath('/api/re/model/parameter/processor/listObejctPropertiesByProcessorId/' + row.id)).then((response) => { + const properties = response.data; + const grid = gridRef.getEditorForm().getFieldComponent('objectProperties'); + grid?.setLocalData(properties); }); + } + + const type = gridRef.getEditorForm().getFieldValue('type'); + if ('OPTION_VALUE' === type) { + editorDialogWidthRef = '40%'; + } else if ('SQL' === type || 'OBJECT_PROPERTIES' === type) { + editorDialogWidthRef = '80%'; + } else { + editorDialogWidthRef = '60%'; + } + + if ('OBJECT_PROPERTIES' === type) { + } else if ('OPTION_VALUE' === type) { } else if ('NUMBER_RANGE' === type) { const grid = gridRef.getEditorForm().getFieldComponent('numberRange'); const rows = Tools.json2Object(row.numberRange); @@ -909,21 +1426,57 @@ const grid = gridRef.getEditorForm().getFieldComponent('conditionRange'); const rows = Tools.json2Object(row.conditionRange); grid.setLocalData(rows); + } else if ('DECISION_TABLE_2C' === type) { + const grid = gridRef.getEditorForm().getFieldComponent('decisionTable2C'); + const rows = Tools.json2Object(row.decisionTable2C); + grid.setLocalData(rows); + } else if ('SQL' === type) { + const sqlParameterValuesGrid = gridRef.getEditorForm().getFieldComponent('sqlParameterValues'); + const sqlParameterValuesRows = Tools.json2Object(row.sqlParameterValues); + sqlParameterValuesGrid.setLocalData(sqlParameterValuesRows); + + const sqlFieldMappingGrid = gridRef.getEditorForm().getFieldComponent('sqlFieldMapping'); + const sqlFieldMappingRows = Tools.json2Object(row.sqlFieldMapping); + sqlFieldMappingGrid.setLocalData(sqlFieldMappingRows); + } + } + " + @row-db-click=" + (e, row) => { + const type = row.type; + if ('DECISION_TREE' === type) { + decisionTreeDialogRef.open(row.id); + } else if ('EXECUTION_FLOW' === type) { + executionFlowDialogRef.open(row.id); + } else { + gridRef.edit(row); } } " > + diff --git a/io.sc.engine.rule.frontend/src/views/resources/designer/TestCaseParameter.vue b/io.sc.engine.rule.frontend/src/views/resources/designer/TestCaseParameter.vue index 976fadee..f75bd7af 100644 --- a/io.sc.engine.rule.frontend/src/views/resources/designer/TestCaseParameter.vue +++ b/io.sc.engine.rule.frontend/src/views/resources/designer/TestCaseParameter.vue @@ -18,6 +18,8 @@ } } " + db-click-operation="edit" + :tree-default-expand-all="true" :fetch-data-url="Environment.apiContextPath('/api/re/testCaseParameter/findByTestCase?testCaseId=' + testCase.id)" :data-url="Environment.apiContextPath('/api/re/testCaseParameter')" :pageable="false" diff --git a/io.sc.engine.rule.frontend/src/views/resources/designer/Testcase.vue b/io.sc.engine.rule.frontend/src/views/resources/designer/Testcase.vue index 754531c6..be8e8685 100644 --- a/io.sc.engine.rule.frontend/src/views/resources/designer/Testcase.vue +++ b/io.sc.engine.rule.frontend/src/views/resources/designer/Testcase.vue @@ -1,130 +1,161 @@ diff --git a/io.sc.engine.rule.frontend/src/views/shared/UploadTestCaseDialog.vue b/io.sc.engine.rule.frontend/src/views/shared/UploadTestCaseDialog.vue new file mode 100644 index 00000000..b1bd086d --- /dev/null +++ b/io.sc.engine.rule.frontend/src/views/shared/UploadTestCaseDialog.vue @@ -0,0 +1,69 @@ + + diff --git a/io.sc.engine.rule.frontend/src/views/testcase/Testcase.vue b/io.sc.engine.rule.frontend/src/views/testcase/Testcase.vue index 73486beb..fbd749be 100644 --- a/io.sc.engine.rule.frontend/src/views/testcase/Testcase.vue +++ b/io.sc.engine.rule.frontend/src/views/testcase/Testcase.vue @@ -1,284 +1,324 @@ + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/context-menu/ContextMenu.vue b/io.sc.platform.core.frontend/src/platform/components/expression/context-menu/ContextMenu.vue index 1a99e412..f81a5782 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/context-menu/ContextMenu.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/context-menu/ContextMenu.vue @@ -1,15 +1,6 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Redo.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Redo.vue index e0a3dc81..b066f1cd 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Redo.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Redo.vue @@ -3,8 +3,18 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Undo.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Undo.vue index dceef59d..3bae87f2 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Undo.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Undo.vue @@ -3,8 +3,18 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Xml.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Xml.vue index 549decf9..6e3b3355 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Xml.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/Xml.vue @@ -1,17 +1,16 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/ZoomIn.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/ZoomIn.vue index 328e56d3..12644ad0 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/ZoomIn.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/ZoomIn.vue @@ -2,33 +2,18 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/ZoomOut.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/ZoomOut.vue index 60e4e5f7..e500519c 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/ZoomOut.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/actions/ZoomOut.vue @@ -2,34 +2,16 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Addition.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Addition.vue index 1b47d4c1..d0f62fe5 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Addition.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Addition.vue @@ -8,24 +8,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/And.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/And.vue index e4c5c018..e0b816f3 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/And.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/And.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Comma.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Comma.vue new file mode 100644 index 00000000..1e5119a8 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Comma.vue @@ -0,0 +1,29 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Division.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Division.vue index 25329818..9c4abbe8 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Division.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Division.vue @@ -9,35 +9,35 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Equals.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Equals.vue index f2ff11b2..f6fd5d49 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Equals.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Equals.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Ge.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Ge.vue index 0e79cf70..83b33ca7 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Ge.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Ge.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Gt.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Gt.vue index 7a45a144..81c3d734 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Gt.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Gt.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Le.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Le.vue index cc49be44..ae3902ff 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Le.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Le.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/LeftParenthesis.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/LeftParenthesis.vue index c8f9c584..021b9c49 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/LeftParenthesis.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/LeftParenthesis.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Lt.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Lt.vue index 352413d6..b8ad5edd 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Lt.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Lt.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Multiply.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Multiply.vue index e5e6fd98..7f5c1752 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Multiply.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Multiply.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Not.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Not.vue index e24046d8..dd4d62be 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Not.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Not.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Or.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Or.vue index 68914092..6da314e5 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Or.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Or.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/RightParenthesis.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/RightParenthesis.vue index 080293f5..5bfa94e7 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/RightParenthesis.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/RightParenthesis.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Subtraction.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Subtraction.vue index 2ddbadd2..eae29808 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Subtraction.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Subtraction.vue @@ -8,24 +8,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Variable.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Variable.vue index 821cd080..b95a66ce 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Variable.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/base/Variable.vue @@ -1,30 +1,29 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Date.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Date.vue index 2f8aa043..96cb8811 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Date.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Date.vue @@ -8,13 +8,21 @@ - - + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Digit.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Digit.vue new file mode 100644 index 00000000..23683e15 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Digit.vue @@ -0,0 +1,171 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Formater.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Formater.vue index 304b012f..5943ab60 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Formater.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Formater.vue @@ -7,22 +7,53 @@ - - - + + + - - + + - - + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Number.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Number.vue deleted file mode 100644 index eda26001..00000000 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Number.vue +++ /dev/null @@ -1,68 +0,0 @@ - - diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Probability.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Probability.vue index d35c828c..b3883afa 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Probability.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Probability.vue @@ -7,18 +7,41 @@ - - - + + + - - + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/SpecialValue.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/SpecialValue.vue new file mode 100644 index 00000000..f365528c --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/SpecialValue.vue @@ -0,0 +1,71 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/String.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/String.vue index 1ac07d43..2041b984 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/String.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/String.vue @@ -7,34 +7,95 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Trigonometric.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Trigonometric.vue index b8807ba8..9fc27e04 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Trigonometric.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/Trigonometric.vue @@ -7,27 +7,50 @@ - - - - - + + + + + - - + + - - + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/date/Now.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/date/Now.vue index c2b0527c..ecf45fb7 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/date/Now.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/date/Now.vue @@ -1,26 +1,40 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Comma.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Comma.vue index e5b479f5..9f2698eb 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Comma.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Comma.vue @@ -1,8 +1,8 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Decimal.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Decimal.vue new file mode 100644 index 00000000..6aeb31c9 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Decimal.vue @@ -0,0 +1,52 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Percent.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Percent.vue index 51df2048..5813a2a2 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Percent.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Percent.vue @@ -1,8 +1,8 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Precision.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Precision.vue deleted file mode 100644 index 404b223d..00000000 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/formater/Precision.vue +++ /dev/null @@ -1,32 +0,0 @@ - - diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Abs.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Abs.vue index 86fa4455..6be3a3eb 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Abs.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Abs.vue @@ -1,22 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Ceil.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Ceil.vue index 62e039bf..2db80f79 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Ceil.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Ceil.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Floor.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Floor.vue index 98d8acba..5d759a49 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Floor.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Floor.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Max.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Max.vue index caeec6c4..22a56d22 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Max.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Max.vue @@ -1,56 +1,59 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Min.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Min.vue index 58a1fa92..ce1423fc 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Min.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Min.vue @@ -1,56 +1,59 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Mod.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Mod.vue index c71b6f89..efe3f89e 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Mod.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Mod.vue @@ -1,8 +1,8 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Random.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Random.vue index 899e9369..7c3c8de9 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Random.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Random.vue @@ -1,26 +1,42 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/RandomInt.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/RandomInt.vue index e85dc0b9..b76a2d2b 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/RandomInt.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/RandomInt.vue @@ -1,26 +1,42 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Remainder.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Remainder.vue index f680c80f..7d3b109a 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Remainder.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Remainder.vue @@ -1,8 +1,8 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Rint.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Rint.vue index 5cb57e55..aa51dcf7 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Rint.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Rint.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Round.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Round.vue index 672c6ffc..34785150 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Round.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Round.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Sum.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Sum.vue index 4abf14ae..0436237c 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Sum.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/number/Sum.vue @@ -1,56 +1,59 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/probability/InverseNormal.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/probability/InverseNormal.vue index 3c9971d5..5ef5cf78 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/probability/InverseNormal.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/probability/InverseNormal.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/probability/Normal.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/probability/Normal.vue index e19387fd..8e724302 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/probability/Normal.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/probability/Normal.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/Infinite.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/Infinite.vue new file mode 100644 index 00000000..e6f21932 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/Infinite.vue @@ -0,0 +1,52 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/NaN.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/NaN.vue new file mode 100644 index 00000000..71a4e497 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/NaN.vue @@ -0,0 +1,52 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/Nil.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/Nil.vue new file mode 100644 index 00000000..2aff1049 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/Nil.vue @@ -0,0 +1,52 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/Zero.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/Zero.vue new file mode 100644 index 00000000..6e10c664 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/specialValue/Zero.vue @@ -0,0 +1,52 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Contains.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Contains.vue index 29e17c3f..4d6a9df9 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Contains.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Contains.vue @@ -1,8 +1,8 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/EndsWith.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/EndsWith.vue index 1620e857..b48d6001 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/EndsWith.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/EndsWith.vue @@ -1,8 +1,8 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Join.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Join.vue new file mode 100644 index 00000000..f275e8e4 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Join.vue @@ -0,0 +1,56 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Length.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Length.vue index 43f578cc..26b39a04 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Length.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Length.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/LowerCase.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/LowerCase.vue index c4963486..da0309fc 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/LowerCase.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/LowerCase.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/StartsWith.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/StartsWith.vue index 67a2ff5e..072c304e 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/StartsWith.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/StartsWith.vue @@ -1,8 +1,8 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Trim.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Trim.vue index 75e8a80b..9ec81ec2 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Trim.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/Trim.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/UpperCase.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/UpperCase.vue index 8c9fcaf4..1c02b7cb 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/UpperCase.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/string/UpperCase.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/Degrees.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/Degrees.vue index 731a53eb..cc12a9c0 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/Degrees.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/Degrees.vue @@ -1,28 +1,44 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/Radians.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/Radians.vue index ae431726..4dd0beaa 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/Radians.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/Radians.vue @@ -1,28 +1,44 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Cosh.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Cosh.vue index 90079387..ed6ae407 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Cosh.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Cosh.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Coth.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Coth.vue index c1aaaaeb..350e3efb 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Coth.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Coth.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Csch.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Csch.vue index bbfec1a4..c9725a04 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Csch.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Csch.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Hyperbolic.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Hyperbolic.vue index 1ceddad5..8eacdbb7 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Hyperbolic.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Hyperbolic.vue @@ -8,33 +8,88 @@ - - + + - - + + - - + + - - + + - - + + - - + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Sech.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Sech.vue index c2daf38d..bd7e7457 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Sech.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Sech.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Sinh.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Sinh.vue index 70e97e86..7a493419 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Sinh.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Sinh.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Tanh.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Tanh.vue index 241e4893..f8b32e86 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Tanh.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/hyperbolic/Tanh.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCosh.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCosh.vue index f6698f0f..f75b403c 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCosh.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCosh.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCoth.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCoth.vue index 0646fff5..170ba928 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCoth.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCoth.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCsch.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCsch.vue index d27d4975..46b0e422 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCsch.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcCsch.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcSech.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcSech.vue index a9edb6a3..12ae63bb 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcSech.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcSech.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcSinh.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcSinh.vue index 0c07e122..4d10f3a5 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcSinh.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcSinh.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcTanh.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcTanh.vue index 21b26996..5d4efd4d 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcTanh.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/ArcTanh.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/InverseHyperbolic.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/InverseHyperbolic.vue index cf5a9d00..09c0eeb4 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/InverseHyperbolic.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseHyperbolic/InverseHyperbolic.vue @@ -8,33 +8,88 @@ - - + + - - + + - - + + - - + + - - + + - - + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCos.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCos.vue index 2e20168b..d713a4ee 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCos.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCos.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCot.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCot.vue index ae81a817..43e2ba06 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCot.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCot.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCsc.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCsc.vue index a33c3432..90f1c12e 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCsc.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcCsc.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcSec.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcSec.vue index 20c8474b..0ef9b8b5 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcSec.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcSec.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcSin.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcSin.vue index 21bcc6ba..3f96a209 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcSin.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcSin.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcTan.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcTan.vue index 78e32faf..8f095055 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcTan.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/ArcTan.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/InverseTrigonometric.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/InverseTrigonometric.vue index 7800d19b..7b116cc5 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/InverseTrigonometric.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/inverseTrigonometric/InverseTrigonometric.vue @@ -8,33 +8,88 @@ - - + + - - + + - - + + - - + + - - + + - - + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Cos.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Cos.vue index 0b7b065f..ba7aed59 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Cos.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Cos.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Cot.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Cot.vue index 72945d4a..f49b07dd 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Cot.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Cot.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Csc.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Csc.vue index ee28dca1..d0df4406 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Csc.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Csc.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Sec.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Sec.vue index 6231817b..0a46bd90 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Sec.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Sec.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Sin.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Sin.vue index 57b3299a..c2eb41a9 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Sin.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Sin.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Tan.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Tan.vue index 090ba7a1..ec119d63 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Tan.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Tan.vue @@ -1,28 +1,46 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Trigonometric.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Trigonometric.vue index 537fc7fc..b2e526b1 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Trigonometric.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/functions/trigonometric/trigonometric/Trigonometric.vue @@ -8,34 +8,89 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/E.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/E.vue index 247e8e4b..9c23e408 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/E.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/E.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Exp.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Exp.vue new file mode 100644 index 00000000..7088b161 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Exp.vue @@ -0,0 +1,35 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Extracting.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Extracting.vue index 5078196c..054be23c 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Extracting.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Extracting.vue @@ -9,27 +9,27 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Lg.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Lg.vue new file mode 100644 index 00000000..d11b33ce --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Lg.vue @@ -0,0 +1,31 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Ln.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Ln.vue new file mode 100644 index 00000000..55f010c0 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Ln.vue @@ -0,0 +1,31 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Logarithm.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Log.vue similarity index 51% rename from io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Logarithm.vue rename to io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Log.vue index 0d9f0695..86ce10f1 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Logarithm.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Log.vue @@ -1,5 +1,5 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Pi.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Pi.vue index 9acb1993..e3906470 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Pi.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Pi.vue @@ -6,24 +6,24 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Power.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Power.vue index f676baa4..a996274b 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Power.vue +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Power.vue @@ -9,27 +9,27 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Power2.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Power2.vue new file mode 100644 index 00000000..5e6eff8d --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Power2.vue @@ -0,0 +1,35 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Sqrt.vue b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Sqrt.vue new file mode 100644 index 00000000..678f6df7 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/expression/toolbar/math/Sqrt.vue @@ -0,0 +1,35 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/expression/utils/ZoomLevels.ts b/io.sc.platform.core.frontend/src/platform/components/expression/utils/ZoomLevels.ts index 58478bd2..070c3950 100644 --- a/io.sc.platform.core.frontend/src/platform/components/expression/utils/ZoomLevels.ts +++ b/io.sc.platform.core.frontend/src/platform/components/expression/utils/ZoomLevels.ts @@ -1,4 +1,30 @@ class ZoomLevels { + public static defaultLevel: number = 6; + public static levels: any[] = [ + /*0*/ { 'font-size': '0.75rem', 'line-height': '1rem', pixels: [9, 6, 5, 4] }, //12px,16px + /*1*/ { 'font-size': '0.875rem', 'line-height': '1.25rem', pixels: [10, 7, 6, 4] }, //14px,20px + /*2*/ { 'font-size': '1rem', 'line-height': '1.5rem', pixels: [11, 8, 7, 5] }, //16px,24px + /*3*/ { 'font-size': '1.125rem', 'line-height': '1.75rem', pixels: [12, 9, 7, 5] }, //18px,28px + /*4*/ { 'font-size': '1.25rem', 'line-height': '1.75rem', pixels: [14, 10, 8, 6] }, //20px,28px + /*5*/ { 'font-size': '1.5rem', 'line-height': '2rem', pixels: [17, 12, 10, 7] }, //24px,32px + /*6*/ { 'font-size': '1.875rem', 'line-height': '2.25rem', pixels: [21, 15, 12, 9] }, //30px,36px + /*7*/ { 'font-size': '2.25rem', 'line-height': '2.5rem', pixels: [25, 18, 15, 11] }, //36px,40px + /*8*/ { 'font-size': '3rem', 'line-height': '1', pixels: [34, 24, 20, 14] }, //48px + /*9*/ { 'font-size': '3.75rem', 'line-height': '1', pixels: [42, 30, 25, 18] }, //60px + /*10*/ { 'font-size': '4.5rem', 'line-height': '1', pixels: [50, 37, 30, 21] }, //72px + /*11*/ { 'font-size': '6rem', 'line-height': '1', pixels: [67, 49, 41, 28] }, //96px + /*12*/ { 'font-size': '8rem', 'line-height': '1', pixels: [89, 66, 54, 38] }, //128px + ]; + + public static getLength(): number { + return ZoomLevels.levels.length; + } + + public static getStyle(index: number): object { + return ZoomLevels.levels[index]; + } + + /* public static defaultName: string = '3xl'; static #names = { xs: 0, @@ -63,6 +89,7 @@ class ZoomLevels { public static getStyleByIndex(index: number): object { return ZoomLevels.#styles[index]; } + */ } export { ZoomLevels }; diff --git a/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue b/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue index e97d7367..926f75af 100644 --- a/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue +++ b/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue @@ -46,7 +46,7 @@ diff --git a/io.sc.platform.core.frontend/src/views/testcase/math/MathEditor.vue b/io.sc.platform.core.frontend/src/views/testcase/math/MathEditor.vue index b6f16bbe..0664750a 100644 --- a/io.sc.platform.core.frontend/src/views/testcase/math/MathEditor.vue +++ b/io.sc.platform.core.frontend/src/views/testcase/math/MathEditor.vue @@ -1,12 +1,96 @@ diff --git a/io.sc.platform.core.frontend/template-project/.npmrc b/io.sc.platform.core.frontend/template-project/.npmrc index dd3810ca..304f4652 100644 --- a/io.sc.platform.core.frontend/template-project/.npmrc +++ b/io.sc.platform.core.frontend/template-project/.npmrc @@ -3,6 +3,8 @@ registry=http://nexus.sc.io:8000/repository/npm-public/ # 用户邮箱 email= +# publish 时无需先进行 git 代码同步检查, 可避免 publish 时使用 --no-git-checks 选项 +git-checks=false # 注意: 以下 // 不是注释,不能去掉哦 # 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置 diff --git a/io.sc.platform.core.frontend/template-project/package.json b/io.sc.platform.core.frontend/template-project/package.json index 0381d35d..3042b21d 100644 --- a/io.sc.platform.core.frontend/template-project/package.json +++ b/io.sc.platform.core.frontend/template-project/package.json @@ -1,6 +1,6 @@ { "name": "platform-core", - "version": "8.1.248", + "version": "8.1.273", "description": "前端核心包,用于快速构建前端的脚手架", "private": false, "keywords": [], @@ -24,92 +24,93 @@ "no-git-checks": true }, "devDependencies": { - "@babel/core": "7.24.4", - "@babel/preset-env": "7.24.4", - "@babel/preset-typescript": "7.24.1", - "@babel/plugin-transform-class-properties": "7.24.1", - "@babel/plugin-transform-object-rest-spread": "7.24.1", - "@quasar/app-webpack": "3.12.5", - "@quasar/cli": "2.4.0", + "@babel/core": "7.24.7", + "@babel/preset-env": "7.24.7", + "@babel/preset-typescript": "7.24.7", + "@babel/plugin-transform-class-properties": "7.24.7", + "@babel/plugin-transform-object-rest-spread": "7.24.7", + "@quasar/app-webpack": "3.13.2", + "@quasar/cli": "2.4.1", "@types/mockjs": "1.0.10", - "@types/node": "20.12.7", - "@typescript-eslint/eslint-plugin": "7.7.1", - "@typescript-eslint/parser": "7.7.1", - "@vue/compiler-sfc": "3.4.24", + "@types/node": "20.14.10", + "@typescript-eslint/eslint-plugin": "7.15.0", + "@typescript-eslint/parser": "7.15.0", + "@vue/compiler-sfc": "3.4.31", "@webpack-cli/serve": "2.0.5", "autoprefixer": "10.4.19", "babel-loader": "9.1.3", "clean-webpack-plugin": "4.0.0", "copy-webpack-plugin": "12.0.2", "cross-env": "7.0.3", - "css-loader": "7.1.1", + "css-loader": "7.1.2", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-vue": "9.25.0", - "eslint-webpack-plugin": "4.1.0", + "eslint-plugin-vue": "9.27.0", + "eslint-webpack-plugin": "4.2.0", "html-webpack-plugin": "5.6.0", "json5": "2.2.3", "mini-css-extract-plugin": "2.9.0", - "nodemon": "3.1.0", - "postcss": "8.4.38", + "nodemon": "3.1.4", + "postcss": "8.4.39", "postcss-import": "16.1.0", "postcss-loader": "8.1.1", - "postcss-preset-env": "9.5.9", - "prettier": "3.2.5", - "sass": "1.75.0", + "postcss-preset-env": "9.6.0", + "prettier": "3.3.2", + "sass": "1.77.6", "sass-loader": "14.2.1", - "typescript": "5.4.5", + "typescript": "5.5.3", "vue-loader": "17.4.2", - "webpack": "5.91.0", + "webpack": "5.92.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4", - "webpack-merge": "5.10.0", + "webpack-merge": "6.0.1", "@vue/babel-plugin-jsx": "1.2.2" }, "dependencies": { - "@codemirror/autocomplete": "6.16.0", - "@codemirror/commands": "6.5.0", + "@codemirror/autocomplete": "6.17.0", + "@codemirror/commands": "6.6.0", "@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.6.3", + "@codemirror/lang-sql": "6.7.0", "@codemirror/lang-xml": "6.1.0", - "@codemirror/language": "6.10.1", + "@codemirror/language": "6.10.2", "@codemirror/search": "6.5.6", "@codemirror/state": "6.4.1", - "@codemirror/view": "6.26.3", - "@maxgraph/core": "0.10.0", - "@quasar/extras": "1.16.11", - "@univerjs/core": "0.1.13", - "@univerjs/design": "0.1.13", - "@univerjs/docs": "0.1.13", - "@univerjs/docs-ui": "0.1.13", - "@univerjs/engine-formula": "0.1.13", - "@univerjs/engine-render": "0.1.13", - "@univerjs/facade": "0.1.13", - "@univerjs/sheets": "0.1.13", - "@univerjs/sheets-formula": "0.1.13", - "@univerjs/sheets-ui": "0.1.13", - "@univerjs/ui": "0.1.13", - "@vueuse/core": "10.9.0", - "axios": "1.6.8", + "@codemirror/view": "6.28.4", + "@maxgraph/core": "0.12.0", + "@quasar/extras": "1.16.12", + "@univerjs/core": "0.2.0", + "@univerjs/design": "0.2.0", + "@univerjs/docs": "0.2.0", + "@univerjs/docs-ui": "0.2.0", + "@univerjs/engine-formula": "0.2.0", + "@univerjs/engine-render": "0.2.0", + "@univerjs/facade": "0.2.0", + "@univerjs/sheets": "0.2.0", + "@univerjs/sheets-formula": "0.2.0", + "@univerjs/sheets-ui": "0.2.0", + "@univerjs/ui": "0.2.0", + "@vueuse/core": "10.11.0", + "axios": "1.7.2", "codemirror": "6.0.1", - "dayjs": "1.11.10", - "echarts": "5.5.0", + "dayjs": "1.11.11", + "echarts": "5.5.1", "exceljs": "4.4.0", "file-saver": "2.0.5", "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.248", - "quasar": "2.15.3", - "tailwindcss": "3.4.3", - "vue": "3.4.24", - "vue-dompurify-html": "5.0.1", + "platform-core": "8.1.273", + "quasar": "2.15.4", + "tailwindcss": "3.4.4", + "vue": "3.4.31", + "vue-dompurify-html": "5.1.0", "vue-i18n": "9.13.1", - "vue-router": "4.3.2" + "vue-router": "4.4.0", + "xml-formatter": "3.6.3" } } \ No newline at end of file diff --git a/io.sc.platform.core.frontend/template-project/src/components/index.ts b/io.sc.platform.core.frontend/template-project/src/components/index.ts index 39705852..b232bb71 100644 --- a/io.sc.platform.core.frontend/template-project/src/components/index.ts +++ b/io.sc.platform.core.frontend/template-project/src/components/index.ts @@ -5,6 +5,7 @@ import component_testcase_openNoMenuRoute from '@/views/testcase/route/OpenNoMenuRoute.vue'; import component_testcase_noMenuRoute from '@/views/testcase/route/NoMenuRoute.vue'; import component_testcase_mathEditor from '@/views/testcase/math/MathEditor.vue'; +import component_testcase_mathEditorForm from '@/views/testcase/math/MathEditorForm.vue'; import component_testcase_form from '@/views/testcase/form/form.vue'; import component_testcase_codemirror from '@/views/testcase/code-mirror/code-mirror.vue'; import component_testcase_loading from '@/views/testcase/loading/loading.vue'; @@ -24,6 +25,7 @@ const localComponents = { 'component.testcase.openNoMenuRoute': component_testcase_openNoMenuRoute, 'component.testcase.noMenuRoute': component_testcase_noMenuRoute, 'component.testcase.mathEditor': component_testcase_mathEditor, + 'component.testcase.mathEditorForm': component_testcase_mathEditorForm, 'component.testcase.form': component_testcase_form, 'component.testcase.codemirror': component_testcase_codemirror, 'component.testcase.loading': component_testcase_loading, diff --git a/io.sc.platform.core.frontend/template-project/src/i18n/messages.json b/io.sc.platform.core.frontend/template-project/src/i18n/messages.json index a5945b76..34a10912 100644 --- a/io.sc.platform.core.frontend/template-project/src/i18n/messages.json +++ b/io.sc.platform.core.frontend/template-project/src/i18n/messages.json @@ -2,6 +2,7 @@ "menu.testcase": "Test Case", "menu.testcase.openNoMenuRoute": "Open No Menu Route", "menu.testcase.mathEditor": "Math Formual Editor", + "menu.testcase.mathEditorForm": "Math Formual Editor(Form)", "menu.testcase.form":"Form Element", "menu.testcase.codemirror":"Code Mirror", "menu.testcase.loading":"Loading", diff --git a/io.sc.platform.core.frontend/template-project/src/i18n/messages_tw_CN.json b/io.sc.platform.core.frontend/template-project/src/i18n/messages_tw_CN.json index 73b0171f..fa1f6bce 100644 --- a/io.sc.platform.core.frontend/template-project/src/i18n/messages_tw_CN.json +++ b/io.sc.platform.core.frontend/template-project/src/i18n/messages_tw_CN.json @@ -2,6 +2,7 @@ "menu.testcase": "測試用例", "menu.testcase.openNoMenuRoute": "打開無關聯菜單的路由", "menu.testcase.mathEditor": "數學公式編輯器", + "menu.testcase.mathEditorForm": "數學公式編輯器(表單)", "menu.testcase.form":"表單元素", "menu.testcase.codemirror":"代碼編輯器", "menu.testcase.loading":"正在加載", diff --git a/io.sc.platform.core.frontend/template-project/src/i18n/messages_zh_CN.json b/io.sc.platform.core.frontend/template-project/src/i18n/messages_zh_CN.json index 6b203fb1..bfb24469 100644 --- a/io.sc.platform.core.frontend/template-project/src/i18n/messages_zh_CN.json +++ b/io.sc.platform.core.frontend/template-project/src/i18n/messages_zh_CN.json @@ -2,6 +2,7 @@ "menu.testcase": "测试用例", "menu.testcase.openNoMenuRoute": "打开无关联菜单的路由示例", "menu.testcase.mathEditor": "数学公式编辑器", + "menu.testcase.mathEditorForm": "数学公式编辑器(表单)", "menu.testcase.form":"表单元素", "menu.testcase.codemirror":"代码编辑器", "menu.testcase.loading":"正在加載", diff --git a/io.sc.platform.core.frontend/template-project/src/menus/menus.json b/io.sc.platform.core.frontend/template-project/src/menus/menus.json index 5dee34b0..6e1ac209 100644 --- a/io.sc.platform.core.frontend/template-project/src/menus/menus.json +++ b/io.sc.platform.core.frontend/template-project/src/menus/menus.json @@ -36,6 +36,15 @@ "icon": "bi-palette", "routeName": "route.testcase.mathEditor" }, + { + "type": "ROUTE", + "order": 200, + "parentId": "menu.testcase", + "id": "menu.testcase.mathEditorForm", + "titleI18nKey": "menu.testcase.mathEditorForm", + "icon": "bi-palette", + "routeName": "route.testcase.mathEditorForm" + }, { "type": "ROUTE", "order": 300, diff --git a/io.sc.platform.core.frontend/template-project/src/routes/routes.json b/io.sc.platform.core.frontend/template-project/src/routes/routes.json index c0f6d157..cad4f5cd 100644 --- a/io.sc.platform.core.frontend/template-project/src/routes/routes.json +++ b/io.sc.platform.core.frontend/template-project/src/routes/routes.json @@ -39,6 +39,19 @@ } }, + { + "name": "route.testcase.mathEditorForm", + "path": "testcase/mathEditorForm", + "parent": "/", + "priority": 0, + "component": "component.testcase.mathEditorForm", + "componentPath": "@/views/testcase/math/MathEditorForm.vue", + "redirect": null, + "meta": { + "permissions": ["/testcase/math/**/*"] + } + }, + { "name": "route.testcase.form", "path": "testcase/form", diff --git a/io.sc.platform.core.frontend/template-project/src/views/likm/A.vue b/io.sc.platform.core.frontend/template-project/src/views/likm/A.vue new file mode 100644 index 00000000..f1d6b20d --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/likm/A.vue @@ -0,0 +1,13 @@ + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/likm/Dialog.vue b/io.sc.platform.core.frontend/template-project/src/views/likm/Dialog.vue new file mode 100644 index 00000000..99c8e6ae --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/likm/Dialog.vue @@ -0,0 +1,38 @@ + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/likm/Drawer.vue b/io.sc.platform.core.frontend/template-project/src/views/likm/Drawer.vue new file mode 100644 index 00000000..210f1cb7 --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/likm/Drawer.vue @@ -0,0 +1,34 @@ + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/likm/Form.vue b/io.sc.platform.core.frontend/template-project/src/views/likm/Form.vue new file mode 100644 index 00000000..46d80793 --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/likm/Form.vue @@ -0,0 +1,183 @@ + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/likm/Grid.vue b/io.sc.platform.core.frontend/template-project/src/views/likm/Grid.vue new file mode 100644 index 00000000..d7cba6b6 --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/likm/Grid.vue @@ -0,0 +1,462 @@ + + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/likm/GridLayout.vue b/io.sc.platform.core.frontend/template-project/src/views/likm/GridLayout.vue new file mode 100644 index 00000000..2b8c2a7c --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/likm/GridLayout.vue @@ -0,0 +1,308 @@ + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/likm/InfoPanel.vue b/io.sc.platform.core.frontend/template-project/src/views/likm/InfoPanel.vue new file mode 100644 index 00000000..1b13197c --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/likm/InfoPanel.vue @@ -0,0 +1,15 @@ + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/likm/QuasarGrid.vue b/io.sc.platform.core.frontend/template-project/src/views/likm/QuasarGrid.vue new file mode 100644 index 00000000..b0c6f538 --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/likm/QuasarGrid.vue @@ -0,0 +1,752 @@ + + + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/likm/Toolbar.vue b/io.sc.platform.core.frontend/template-project/src/views/likm/Toolbar.vue new file mode 100644 index 00000000..f2910ede --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/likm/Toolbar.vue @@ -0,0 +1,153 @@ + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/likm/TreeGrid.vue b/io.sc.platform.core.frontend/template-project/src/views/likm/TreeGrid.vue new file mode 100644 index 00000000..0e0b989f --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/likm/TreeGrid.vue @@ -0,0 +1,412 @@ + + + + + + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/AutoCompletionManager.ts b/io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/AutoCompletionManager.ts new file mode 100644 index 00000000..8558fb90 --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/AutoCompletionManager.ts @@ -0,0 +1,170 @@ +import { Tools } from '@/platform'; + +class AutoCompletionManager { + parameters: object[]; + valueTypes: object[]; + + public setParameters(parameters) { + this.parameters = parameters; + } + public setValueTypes(valueTypes) { + this.valueTypes = valueTypes; + } + + public getOptions(path: string): any { + if (!path) { + return this.getParameterOptions(); + } + if (path.endsWith('.')) { + path = path.substring(0, path.length - 1); + } + const names = path.split('.'); + if (!names) { + return this.getParameterOptions(); + } + //参数 + const parameter = this.findParmeter(names[0]); + if (!parameter) { + return null; + } + const valueTypeString = parameter.valueType; + const valueTypeVersion = parameter.valueTypeVersion; + let valueType = this.findValueType(valueTypeString, valueTypeVersion); + if (!valueType || !valueType.properties || valueType.properties.length <= 0) { + return null; + } + let index = 1; + while (index < names.length) { + valueType = this.findValueTypeByProperty(valueType.code, valueType.version, names[index++]); + } + + const options = []; + for (const property of valueType.properties) { + const propertyValueType = this.findValueType(property.valueType, property.valueTypeVersion); + if (!propertyValueType) { + continue; + } + const info = propertyValueType.version ? propertyValueType.name + '(V' + propertyValueType.version + ')' : propertyValueType.name; + options.push({ label: property.name, type: 'property', apply: '${' + property.name + '}', info: info }); + } + return options; + } + + public findParmeter(parameterName) { + for (const parameter of this.parameters) { + if (parameter.name === parameterName) { + return parameter; + } + } + return null; + } + + public findValueType(valueTypeString, valueTypeVersion) { + for (const valueType of this.valueTypes) { + if (valueType.code === valueTypeString && valueType.version === valueTypeVersion) { + return valueType; + } + } + return null; + } + + public findValueTypeByProperty(valueTypeString, valueTypeVersion, propertyName) { + const valueType = this.findValueType(valueTypeString, valueTypeVersion); + if (!valueType) { + return null; + } + for (const property of valueType.properties) { + if (property.name === propertyName) { + return this.findValueType(property.valueType, property.valueTypeVersion); + } + } + } + + public getParameterOptions(): any { + const options = []; + for (const parameter of this.parameters) { + const valueType = this.findValueType(parameter.valueType, parameter.valueTypeVersion); + const info = valueType.version ? valueType.name + '(V' + valueType.version + ')' : valueType.name; + options.push({ label: parameter.name, type: 'variable', apply: '${' + parameter.name + '}', info: info }); + } + return options; + } + + public getPropertyOptions(parameterName: string): any { + let parameterType = undefined; + for (const parameter of this.parameters) { + if (parameter.name === parameterName) { + parameterType = parameter.valueType; + } + } + if (!parameterType) { + return null; + } + for (const type of this.valueTypes) { + if (type.code === parameterType) { + parameterType = type; + } + } + if (!parameterType) { + return null; + } + + if (parameterType.properties && parameterType.properties.length > 0) { + const options = []; + for (const property of parameterType.properties) { + options.push({ label: property.name, type: 'property', apply: '${' + property.name + '}', detail: this.findValueTypeInfo(property.valueType) }); + } + return options; + } + } + + public autoCompletionParameters(to, matchedText): any { + return { + from: to, + options: this.getParameterOptions(), + validFor: /(.*)?/, + }; + } + + public autoCompletionProperties(to, matchedText): any { + const matchedTextReverse = Tools.reverseString(matchedText); + const regReverse = /(\.\}(.+?)\{\$)+/g; //匹配 '.}xxx{$' 模式 + const matcheds = matchedTextReverse.match(regReverse); + if (Tools.isUndefinedOrNull(matcheds) || matcheds.length <= 0) { + return null; + } + const matched = Tools.reverseString(matcheds[0]); + const parameterName = matched.replace(/\$\{(.+?)\}/g, '$1'); + if (Tools.isUndefinedOrNull(parameterName)) { + return null; + } + const options = this.getOptions(parameterName); + if (Tools.isUndefinedOrNull(options)) { + return null; + } + return { + from: to, + options: options, + validFor: /^(.*)?$/, + }; + } + + public autoCompletion(context): any { + const beforeMatched = context.matchBefore(/(.+?)/g); + if (Tools.isUndefinedOrNull(beforeMatched)) { + return null; + } + const beforeText = beforeMatched.text || ''; + if (beforeText.endsWith('.')) { + //匹配属性 + return this.autoCompletionProperties(beforeMatched.to, beforeText); + } else if (beforeText.endsWith(' ')) { + //匹配参数 + return this.autoCompletionParameters(beforeMatched.to); + } else { + return null; + } + } +} + +export { AutoCompletionManager }; diff --git a/io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/code-mirror.vue b/io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/code-mirror.vue index 139b3a05..ceca6c2e 100644 --- a/io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/code-mirror.vue +++ b/io.sc.platform.core.frontend/template-project/src/views/testcase/code-mirror/code-mirror.vue @@ -1,526 +1,26 @@ diff --git a/io.sc.platform.core.frontend/template-project/src/views/testcase/math/MathEditor.vue b/io.sc.platform.core.frontend/template-project/src/views/testcase/math/MathEditor.vue index b6f16bbe..0664750a 100644 --- a/io.sc.platform.core.frontend/template-project/src/views/testcase/math/MathEditor.vue +++ b/io.sc.platform.core.frontend/template-project/src/views/testcase/math/MathEditor.vue @@ -1,12 +1,96 @@ diff --git a/io.sc.platform.core.frontend/template-project/src/views/testcase/math/MathEditorForm.vue b/io.sc.platform.core.frontend/template-project/src/views/testcase/math/MathEditorForm.vue new file mode 100644 index 00000000..94ac5dba --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/testcase/math/MathEditorForm.vue @@ -0,0 +1,178 @@ + + diff --git a/io.sc.platform.core.frontend/template-project/webpack.config.mf.cjs b/io.sc.platform.core.frontend/template-project/webpack.config.mf.cjs index 6425f66e..dd430adc 100644 --- a/io.sc.platform.core.frontend/template-project/webpack.config.mf.cjs +++ b/io.sc.platform.core.frontend/template-project/webpack.config.mf.cjs @@ -60,6 +60,18 @@ module.exports = { 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, + "xml-formatter": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/core": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/design": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-render": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/facade": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/ui": { requiredVersion: deps['vue-router'], singleton: true } } }), ] diff --git a/io.sc.platform.core.frontend/template-project/webpack.env.build.cjs b/io.sc.platform.core.frontend/template-project/webpack.env.build.cjs index 0776c382..fbcf0fbe 100644 --- a/io.sc.platform.core.frontend/template-project/webpack.env.build.cjs +++ b/io.sc.platform.core.frontend/template-project/webpack.env.build.cjs @@ -24,7 +24,7 @@ module.exports = merge(common, mf, { cacheGroups: { 'shared': { name: 'vue', - test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs)[\\/]/, + test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs|xml-formatter)[\\/]/, priority: 20, chunks: 'all', enforce: true @@ -71,6 +71,13 @@ module.exports = merge(common, mf, { chunks: 'all', enforce: true }, + '@univerjs': { + name: '@univerjs', + test: /[\\/]node_modules[\\/]@univerjs[\\/]/, + priority: 20, + chunks: 'all', + enforce: true + }, 'view': { name: 'view', test: /[\\/]view[\\/]/, diff --git a/io.sc.platform.core.frontend/webpack.config.mf.cjs b/io.sc.platform.core.frontend/webpack.config.mf.cjs index 6425f66e..dd430adc 100644 --- a/io.sc.platform.core.frontend/webpack.config.mf.cjs +++ b/io.sc.platform.core.frontend/webpack.config.mf.cjs @@ -60,6 +60,18 @@ module.exports = { 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, + "xml-formatter": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/core": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/design": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-render": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/facade": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/ui": { requiredVersion: deps['vue-router'], singleton: true } } }), ] diff --git a/io.sc.platform.core.frontend/webpack.env.build.cjs b/io.sc.platform.core.frontend/webpack.env.build.cjs index 0776c382..fbcf0fbe 100644 --- a/io.sc.platform.core.frontend/webpack.env.build.cjs +++ b/io.sc.platform.core.frontend/webpack.env.build.cjs @@ -24,7 +24,7 @@ module.exports = merge(common, mf, { cacheGroups: { 'shared': { name: 'vue', - test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs)[\\/]/, + test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs|xml-formatter)[\\/]/, priority: 20, chunks: 'all', enforce: true @@ -71,6 +71,13 @@ module.exports = merge(common, mf, { chunks: 'all', enforce: true }, + '@univerjs': { + name: '@univerjs', + test: /[\\/]node_modules[\\/]@univerjs[\\/]/, + priority: 20, + chunks: 'all', + enforce: true + }, 'view': { name: 'view', test: /[\\/]view[\\/]/, diff --git a/io.sc.platform.core.frontend/webpack.env.lib.cjs b/io.sc.platform.core.frontend/webpack.env.lib.cjs index ed9e8d5f..acb7f860 100644 --- a/io.sc.platform.core.frontend/webpack.env.lib.cjs +++ b/io.sc.platform.core.frontend/webpack.env.lib.cjs @@ -58,7 +58,19 @@ const config =merge(common, { 'vue': 'vue', 'vue-dompurify-html': 'vue-dompurify-html', 'vue-i18n': 'vue-i18n', - 'vue-router': 'vue-router' + 'vue-router': 'vue-router', + 'xml-formatter': 'xml-formatter', + '@univerjs/core': '@univerjs/core', + '@univerjs/design': '@univerjs/design', + '@univerjs/docs': '@univerjs/docs', + '@univerjs/docs-ui': '@univerjs/docs-ui', + '@univerjs/engine-formula': '@univerjs/engine-formula', + '@univerjs/engine-render': '@univerjs/engine-render', + '@univerjs/facade': '@univerjs/facade', + '@univerjs/sheets': '@univerjs/sheets', + '@univerjs/sheets-formula': '@univerjs/sheets-formula', + '@univerjs/sheets-ui': '@univerjs/sheets-ui', + '@univerjs/ui': '@univerjs/ui' } ], diff --git a/io.sc.platform.core/build.gradle b/io.sc.platform.core/build.gradle index b027c1e4..4152e877 100644 --- a/io.sc.platform.core/build.gradle +++ b/io.sc.platform.core/build.gradle @@ -12,6 +12,7 @@ dependencies { "jakarta.servlet:jakarta.servlet-api", "org.apache.commons:commons-lang3", + "org.apache.commons:commons-text:${commons_text_version}", "com.google.guava:guava:${guava_version}", "com.beust:jcommander:${jcommander_version}", "net.lingala.zip4j:zip4j:${zip4j_version}", diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/ApplicationLauncher.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/ApplicationLauncher.java index 33cc720f..93da1746 100644 --- a/io.sc.platform.core/src/main/java/io/sc/platform/core/ApplicationLauncher.java +++ b/io.sc.platform.core/src/main/java/io/sc/platform/core/ApplicationLauncher.java @@ -31,7 +31,9 @@ public class ApplicationLauncher { private static ConfigurableApplicationContext context; private static KeepApplicationNotCloseThread notCloseThread; - private ApplicationLauncher(){} + private ApplicationLauncher(){ + + } public static ConfigurableApplicationContext run(Class primarySource, String... args) throws IOException { try{ diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties index 14ac22b4..8792bdb8 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties @@ -176,6 +176,7 @@ category=Category condition=Condition header=Header parameter=Parameter +parameterName=Parameter Name methodDescriptor=Method Descriptor roundingMode=Rounding Mode level=Level @@ -229,4 +230,10 @@ online=Online offline=Offline finish=Finish loading=Processing, please wait ...... -effectiveDate=Effective Date \ No newline at end of file +effectiveDate=Effective Date +analyze=Analyze +field=Field +fieldName=Field Name +propertyName=Property Name +property=Property +autoMatch=Auto Match \ No newline at end of file diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties index e1a41deb..2208ba86 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties @@ -176,6 +176,7 @@ category=\u5206\u985E condition=\u689D\u4EF6 header=\u982D parameter=\u53C3\u6578 +parameterName=\u53C3\u6578\u540D\u7A31 methodDescriptor=\u65B9\u6CD5\u7C3D\u540D roundingMode=\u56DB\u6368\u4E94\u5165\u6A21\u5F0F level=\u7D1A\u5225 @@ -229,4 +230,10 @@ online=\u5728\u7DDA offline=\u96E2\u7DDA finish=\u5B8C\u6210 loading=\u6B63\u5728\u8655\u7406, \u8ACB\u7B49\u5F85...... -effectiveDate=\u751F\u6548\u65E5\u671F \ No newline at end of file +effectiveDate=\u751F\u6548\u65E5\u671F +analyze=\u5206\u6790 +field=\u5B57\u6BB5 +fieldName=\u5B57\u6BB5\u540D\u7A31 +propertyName=\u5C6C\u6027\u540D\u7A31 +property=\u5C6C\u6027 +autoMatch=\u81EA\u52D5\u5339\u914D \ No newline at end of file diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties index 021c1ba8..bc5f3162 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties @@ -176,6 +176,7 @@ category=\u5206\u7C7B condition=\u6761\u4EF6 header=\u5934 parameter=\u53C2\u6570 +parameterName=\u53C2\u6570\u540D\u79F0 methodDescriptor=\u65B9\u6CD5\u7B7E\u540D roundingMode=\u56DB\u820D\u4E94\u5165\u6A21\u5F0F level=\u7EA7\u522B @@ -229,4 +230,10 @@ online=\u5728\u7EBF offline=\u79BB\u7EBF finish=\u5B8C\u6210 loading=\u6B63\u5728\u5904\u7406, \u8BF7\u7B49\u5F85...... -effectiveDate=\u751F\u6548\u65E5\u671F \ No newline at end of file +effectiveDate=\u751F\u6548\u65E5\u671F +analyze=\u5206\u6790 +field=\u5B57\u6BB5 +fieldName=\u5B57\u6BB5\u540D\u79F0 +propertyName=\u5C5E\u6027\u540D\u79F0 +property=\u5C5E\u6027 +autoMatch=\u81EA\u52A8\u5339\u914D \ No newline at end of file diff --git a/io.sc.platform.developer.frontend/.npmrc b/io.sc.platform.developer.frontend/.npmrc index dd3810ca..304f4652 100644 --- a/io.sc.platform.developer.frontend/.npmrc +++ b/io.sc.platform.developer.frontend/.npmrc @@ -3,6 +3,8 @@ registry=http://nexus.sc.io:8000/repository/npm-public/ # 用户邮箱 email= +# publish 时无需先进行 git 代码同步检查, 可避免 publish 时使用 --no-git-checks 选项 +git-checks=false # 注意: 以下 // 不是注释,不能去掉哦 # 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置 diff --git a/io.sc.platform.developer.frontend/package.json b/io.sc.platform.developer.frontend/package.json index cffdd0d1..7f589ff8 100644 --- a/io.sc.platform.developer.frontend/package.json +++ b/io.sc.platform.developer.frontend/package.json @@ -23,92 +23,94 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.24.4", - "@babel/preset-env": "7.24.4", - "@babel/preset-typescript": "7.24.1", - "@babel/plugin-transform-class-properties": "7.24.1", - "@babel/plugin-transform-object-rest-spread": "7.24.1", - "@quasar/app-webpack": "3.12.5", - "@quasar/cli": "2.4.0", + "@babel/core": "7.24.7", + "@babel/preset-env": "7.24.7", + "@babel/preset-typescript": "7.24.7", + "@babel/plugin-transform-class-properties": "7.24.7", + "@babel/plugin-transform-object-rest-spread": "7.24.7", + "@quasar/app-webpack": "3.13.2", + "@quasar/cli": "2.4.1", "@types/mockjs": "1.0.10", - "@types/node": "20.12.7", - "@typescript-eslint/eslint-plugin": "7.7.1", - "@typescript-eslint/parser": "7.7.1", - "@vue/compiler-sfc": "3.4.24", + "@types/node": "20.14.10", + "@typescript-eslint/eslint-plugin": "7.15.0", + "@typescript-eslint/parser": "7.15.0", + "@vue/compiler-sfc": "3.4.31", "@webpack-cli/serve": "2.0.5", "autoprefixer": "10.4.19", "babel-loader": "9.1.3", "clean-webpack-plugin": "4.0.0", "copy-webpack-plugin": "12.0.2", "cross-env": "7.0.3", - "css-loader": "7.1.1", + "css-loader": "7.1.2", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-vue": "9.25.0", - "eslint-webpack-plugin": "4.1.0", + "eslint-plugin-vue": "9.27.0", + "eslint-webpack-plugin": "4.2.0", "html-webpack-plugin": "5.6.0", "json5": "2.2.3", "mini-css-extract-plugin": "2.9.0", - "nodemon": "3.1.0", - "postcss": "8.4.38", + "nodemon": "3.1.4", + "postcss": "8.4.39", "postcss-import": "16.1.0", "postcss-loader": "8.1.1", - "postcss-preset-env": "9.5.9", - "prettier": "3.2.5", - "sass": "1.75.0", + "postcss-preset-env": "9.6.0", + "prettier": "3.3.2", + "sass": "1.77.6", "sass-loader": "14.2.1", - "typescript": "5.4.5", + "typescript": "5.5.3", "vue-loader": "17.4.2", - "webpack": "5.91.0", + "webpack": "5.92.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4", - "webpack-merge": "5.10.0", + "webpack-merge": "6.0.1", "@vue/babel-plugin-jsx": "1.2.2" }, "dependencies": { - "@codemirror/autocomplete": "6.16.0", - "@codemirror/commands": "6.5.0", + "@codemirror/autocomplete": "6.17.0", + "@codemirror/commands": "6.6.0", "@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.6.3", + "@codemirror/lang-sql": "6.7.0", "@codemirror/lang-xml": "6.1.0", - "@codemirror/language": "6.10.1", + "@codemirror/language": "6.10.2", "@codemirror/search": "6.5.6", "@codemirror/state": "6.4.1", - "@codemirror/view": "6.26.3", - "@maxgraph/core": "0.10.0", - "@quasar/extras": "1.16.11", - "@vueuse/core": "10.9.0", - "axios": "1.6.8", + "@codemirror/view": "6.28.4", + "@maxgraph/core": "0.12.0", + "@quasar/extras": "1.16.12", + "@vueuse/core": "10.11.0", + "axios": "1.7.2", "codemirror": "6.0.1", - "dayjs": "1.11.10", - "echarts": "5.5.0", + "dayjs": "1.11.11", + "echarts": "5.5.1", "exceljs": "4.4.0", "file-saver": "2.0.5", "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.246", - "quasar": "2.15.3", - "tailwindcss": "3.4.3", - "vue": "3.4.24", - "vue-dompurify-html": "5.0.1", + "platform-core": "8.1.273", + "quasar": "2.15.4", + "tailwindcss": "3.4.4", + "vue": "3.4.31", + "vue-dompurify-html": "5.1.0", "vue-i18n": "9.13.1", - "vue-router": "4.3.2", - "@univerjs/core": "0.1.13", - "@univerjs/design": "0.1.13", - "@univerjs/docs": "0.1.13", - "@univerjs/docs-ui": "0.1.13", - "@univerjs/engine-formula": "0.1.13", - "@univerjs/engine-render": "0.1.13", - "@univerjs/facade": "0.1.13", - "@univerjs/sheets": "0.1.13", - "@univerjs/sheets-formula": "0.1.13", - "@univerjs/sheets-ui": "0.1.13", - "@univerjs/ui": "0.1.13" + "vue-router": "4.4.0", + "@univerjs/core": "0.2.0", + "@univerjs/design": "0.2.0", + "@univerjs/docs": "0.2.0", + "@univerjs/docs-ui": "0.2.0", + "@univerjs/engine-formula": "0.2.0", + "@univerjs/engine-render": "0.2.0", + "@univerjs/facade": "0.2.0", + "@univerjs/sheets": "0.2.0", + "@univerjs/sheets-formula": "0.2.0", + "@univerjs/sheets-ui": "0.2.0", + "@univerjs/ui": "0.2.0", + "pinia-undo": "0.2.4", + "xml-formatter": "3.6.3" } } \ No newline at end of file diff --git a/io.sc.platform.developer.frontend/src/views/backend/sql/import-excel/StepImport.vue b/io.sc.platform.developer.frontend/src/views/backend/sql/import-excel/StepImport.vue index 9008d47e..ffbf4ed0 100644 --- a/io.sc.platform.developer.frontend/src/views/backend/sql/import-excel/StepImport.vue +++ b/io.sc.platform.developer.frontend/src/views/backend/sql/import-excel/StepImport.vue @@ -16,7 +16,7 @@ const messageRef = ref('正在导入......'); const setData = (data) => { dataRef.value = data; - console.log(data); + axios.post(Environment.apiContextPath('')); }; const done = (_function) => {}; diff --git a/io.sc.platform.developer.frontend/webpack.config.mf.cjs b/io.sc.platform.developer.frontend/webpack.config.mf.cjs index 6425f66e..dd430adc 100644 --- a/io.sc.platform.developer.frontend/webpack.config.mf.cjs +++ b/io.sc.platform.developer.frontend/webpack.config.mf.cjs @@ -60,6 +60,18 @@ module.exports = { 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, + "xml-formatter": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/core": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/design": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-render": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/facade": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/ui": { requiredVersion: deps['vue-router'], singleton: true } } }), ] diff --git a/io.sc.platform.developer.frontend/webpack.env.build.cjs b/io.sc.platform.developer.frontend/webpack.env.build.cjs index 0776c382..fbcf0fbe 100644 --- a/io.sc.platform.developer.frontend/webpack.env.build.cjs +++ b/io.sc.platform.developer.frontend/webpack.env.build.cjs @@ -24,7 +24,7 @@ module.exports = merge(common, mf, { cacheGroups: { 'shared': { name: 'vue', - test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs)[\\/]/, + test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs|xml-formatter)[\\/]/, priority: 20, chunks: 'all', enforce: true @@ -71,6 +71,13 @@ module.exports = merge(common, mf, { chunks: 'all', enforce: true }, + '@univerjs': { + name: '@univerjs', + test: /[\\/]node_modules[\\/]@univerjs[\\/]/, + priority: 20, + chunks: 'all', + enforce: true + }, 'view': { name: 'view', test: /[\\/]view[\\/]/, diff --git a/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt b/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt index e8a7f8e9..8aa5be8d 100644 --- a/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt +++ b/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt @@ -2,9 +2,13 @@ package app.platform; import io.sc.platform.core.ApplicationLauncher; import io.sc.platform.core.PlatformSpringBootServletInitializer; +import io.sc.platform.core.util.FileUtil; +import io.sc.platform.core.util.StringUtil; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.WebApplicationInitializer; +import java.io.IOException; + /** * 应用程序入口 */ @@ -13,4 +17,9 @@ public class Application extends PlatformSpringBootServletInitializer implements public static void main(String[] args) throws Exception { ApplicationLauncher.run(Application.class,args); } + +// public static void main(String[] args) throws IOException { +// String s =FileUtil.readString("classpath:/poc/REPORT_RECORD.sql","GBK"); +// FileUtil.writeString("/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/app.platform/src/main/resources/poc/REPORT_RECORD.sql",s,"UTF-8"); +// } } diff --git a/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-common.xsd b/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-common.xsd deleted file mode 100755 index 98b801dc..00000000 --- a/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-common.xsd +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-content.xsd b/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-content.xsd deleted file mode 100755 index 160c25be..00000000 --- a/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-content.xsd +++ /dev/null @@ -1,684 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-presentation.xsd b/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-presentation.xsd deleted file mode 100755 index 418cbabc..00000000 --- a/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-presentation.xsd +++ /dev/null @@ -1,2151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-strict-content.xsd b/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-strict-content.xsd deleted file mode 100755 index 869de61b..00000000 --- a/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3-strict-content.xsd +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3.xsd b/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3.xsd deleted file mode 100755 index 283c31e6..00000000 --- a/io.sc.platform.gradle/templates/pgp/app/src/main/resources/mathml3/mathml3.xsd +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/io.sc.platform.gradle/templates/pgp/setup/gradle.properties b/io.sc.platform.gradle/templates/pgp/setup/gradle.properties index 461ba7da..b233897c 100644 --- a/io.sc.platform.gradle/templates/pgp/setup/gradle.properties +++ b/io.sc.platform.gradle/templates/pgp/setup/gradle.properties @@ -38,7 +38,7 @@ application_version=1.0.0 platform_group=io.sc platform_version=8.1.44 platform_plugin_version=8.1.44 -platform_core_frontend_version=8.1.245 +platform_core_frontend_version=8.1.264 ########################################################### # dependencies version diff --git a/io.sc.platform.lcdp.frontend/.npmrc b/io.sc.platform.lcdp.frontend/.npmrc index dd3810ca..304f4652 100644 --- a/io.sc.platform.lcdp.frontend/.npmrc +++ b/io.sc.platform.lcdp.frontend/.npmrc @@ -3,6 +3,8 @@ registry=http://nexus.sc.io:8000/repository/npm-public/ # 用户邮箱 email= +# publish 时无需先进行 git 代码同步检查, 可避免 publish 时使用 --no-git-checks 选项 +git-checks=false # 注意: 以下 // 不是注释,不能去掉哦 # 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置 diff --git a/io.sc.platform.lcdp.frontend/package.json b/io.sc.platform.lcdp.frontend/package.json index 1afc0b91..39aedbc6 100644 --- a/io.sc.platform.lcdp.frontend/package.json +++ b/io.sc.platform.lcdp.frontend/package.json @@ -23,92 +23,94 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.24.4", - "@babel/preset-env": "7.24.4", - "@babel/preset-typescript": "7.24.1", - "@babel/plugin-transform-class-properties": "7.24.1", - "@babel/plugin-transform-object-rest-spread": "7.24.1", - "@quasar/app-webpack": "3.12.5", - "@quasar/cli": "2.4.0", + "@babel/core": "7.24.7", + "@babel/preset-env": "7.24.7", + "@babel/preset-typescript": "7.24.7", + "@babel/plugin-transform-class-properties": "7.24.7", + "@babel/plugin-transform-object-rest-spread": "7.24.7", + "@quasar/app-webpack": "3.13.2", + "@quasar/cli": "2.4.1", "@types/mockjs": "1.0.10", - "@types/node": "20.12.7", - "@typescript-eslint/eslint-plugin": "7.7.1", - "@typescript-eslint/parser": "7.7.1", - "@vue/compiler-sfc": "3.4.24", + "@types/node": "20.14.10", + "@typescript-eslint/eslint-plugin": "7.15.0", + "@typescript-eslint/parser": "7.15.0", + "@vue/compiler-sfc": "3.4.31", "@webpack-cli/serve": "2.0.5", "autoprefixer": "10.4.19", "babel-loader": "9.1.3", "clean-webpack-plugin": "4.0.0", "copy-webpack-plugin": "12.0.2", "cross-env": "7.0.3", - "css-loader": "7.1.1", + "css-loader": "7.1.2", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-vue": "9.25.0", - "eslint-webpack-plugin": "4.1.0", + "eslint-plugin-vue": "9.27.0", + "eslint-webpack-plugin": "4.2.0", "html-webpack-plugin": "5.6.0", "json5": "2.2.3", "mini-css-extract-plugin": "2.9.0", - "nodemon": "3.1.0", - "postcss": "8.4.38", + "nodemon": "3.1.4", + "postcss": "8.4.39", "postcss-import": "16.1.0", "postcss-loader": "8.1.1", - "postcss-preset-env": "9.5.9", - "prettier": "3.2.5", - "sass": "1.75.0", + "postcss-preset-env": "9.6.0", + "prettier": "3.3.2", + "sass": "1.77.6", "sass-loader": "14.2.1", - "typescript": "5.4.5", + "typescript": "5.5.3", "vue-loader": "17.4.2", - "webpack": "5.91.0", + "webpack": "5.92.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4", - "webpack-merge": "5.10.0", + "webpack-merge": "6.0.1", "@vue/babel-plugin-jsx": "1.2.2" }, "dependencies": { - "@codemirror/autocomplete": "6.16.0", - "@codemirror/commands": "6.5.0", + "@codemirror/autocomplete": "6.17.0", + "@codemirror/commands": "6.6.0", "@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.6.3", + "@codemirror/lang-sql": "6.7.0", "@codemirror/lang-xml": "6.1.0", - "@codemirror/language": "6.10.1", + "@codemirror/language": "6.10.2", "@codemirror/search": "6.5.6", "@codemirror/state": "6.4.1", - "@codemirror/view": "6.26.3", - "@maxgraph/core": "0.10.0", - "@quasar/extras": "1.16.11", - "@vueuse/core": "10.9.0", - "axios": "1.6.8", + "@codemirror/view": "6.28.4", + "@maxgraph/core": "0.12.0", + "@quasar/extras": "1.16.12", + "@vueuse/core": "10.11.0", + "axios": "1.7.2", "codemirror": "6.0.1", - "dayjs": "1.11.10", - "echarts": "5.5.0", + "dayjs": "1.11.11", + "echarts": "5.5.1", "exceljs": "4.4.0", "file-saver": "2.0.5", "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.246", - "quasar": "2.15.3", - "tailwindcss": "3.4.3", - "vue": "3.4.24", - "vue-dompurify-html": "5.0.1", + "platform-core": "8.1.273", + "quasar": "2.15.4", + "tailwindcss": "3.4.4", + "vue": "3.4.31", + "vue-dompurify-html": "5.1.0", "vue-i18n": "9.13.1", - "vue-router": "4.3.2", - "@univerjs/core": "0.1.13", - "@univerjs/design": "0.1.13", - "@univerjs/docs": "0.1.13", - "@univerjs/docs-ui": "0.1.13", - "@univerjs/engine-formula": "0.1.13", - "@univerjs/engine-render": "0.1.13", - "@univerjs/facade": "0.1.13", - "@univerjs/sheets": "0.1.13", - "@univerjs/sheets-formula": "0.1.13", - "@univerjs/sheets-ui": "0.1.13", - "@univerjs/ui": "0.1.13" + "vue-router": "4.4.0", + "@univerjs/core": "0.2.0", + "@univerjs/design": "0.2.0", + "@univerjs/docs": "0.2.0", + "@univerjs/docs-ui": "0.2.0", + "@univerjs/engine-formula": "0.2.0", + "@univerjs/engine-render": "0.2.0", + "@univerjs/facade": "0.2.0", + "@univerjs/sheets": "0.2.0", + "@univerjs/sheets-formula": "0.2.0", + "@univerjs/sheets-ui": "0.2.0", + "@univerjs/ui": "0.2.0", + "pinia-undo": "0.2.4", + "xml-formatter": "3.6.3" } } \ No newline at end of file diff --git a/io.sc.platform.lcdp.frontend/webpack.config.mf.cjs b/io.sc.platform.lcdp.frontend/webpack.config.mf.cjs index 6425f66e..dd430adc 100644 --- a/io.sc.platform.lcdp.frontend/webpack.config.mf.cjs +++ b/io.sc.platform.lcdp.frontend/webpack.config.mf.cjs @@ -60,6 +60,18 @@ module.exports = { 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, + "xml-formatter": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/core": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/design": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-render": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/facade": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/ui": { requiredVersion: deps['vue-router'], singleton: true } } }), ] diff --git a/io.sc.platform.lcdp.frontend/webpack.env.build.cjs b/io.sc.platform.lcdp.frontend/webpack.env.build.cjs index 0776c382..fbcf0fbe 100644 --- a/io.sc.platform.lcdp.frontend/webpack.env.build.cjs +++ b/io.sc.platform.lcdp.frontend/webpack.env.build.cjs @@ -24,7 +24,7 @@ module.exports = merge(common, mf, { cacheGroups: { 'shared': { name: 'vue', - test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs)[\\/]/, + test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs|xml-formatter)[\\/]/, priority: 20, chunks: 'all', enforce: true @@ -71,6 +71,13 @@ module.exports = merge(common, mf, { chunks: 'all', enforce: true }, + '@univerjs': { + name: '@univerjs', + test: /[\\/]node_modules[\\/]@univerjs[\\/]/, + priority: 20, + chunks: 'all', + enforce: true + }, 'view': { name: 'view', test: /[\\/]view[\\/]/, diff --git a/io.sc.platform.mvc.frontend/.npmrc b/io.sc.platform.mvc.frontend/.npmrc index dd3810ca..304f4652 100644 --- a/io.sc.platform.mvc.frontend/.npmrc +++ b/io.sc.platform.mvc.frontend/.npmrc @@ -3,6 +3,8 @@ registry=http://nexus.sc.io:8000/repository/npm-public/ # 用户邮箱 email= +# publish 时无需先进行 git 代码同步检查, 可避免 publish 时使用 --no-git-checks 选项 +git-checks=false # 注意: 以下 // 不是注释,不能去掉哦 # 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置 diff --git a/io.sc.platform.mvc.frontend/package.json b/io.sc.platform.mvc.frontend/package.json index aee5b3ee..20e6bd35 100644 --- a/io.sc.platform.mvc.frontend/package.json +++ b/io.sc.platform.mvc.frontend/package.json @@ -23,92 +23,94 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.24.4", - "@babel/preset-env": "7.24.4", - "@babel/preset-typescript": "7.24.1", - "@babel/plugin-transform-class-properties": "7.24.1", - "@babel/plugin-transform-object-rest-spread": "7.24.1", - "@quasar/app-webpack": "3.12.5", - "@quasar/cli": "2.4.0", + "@babel/core": "7.24.7", + "@babel/preset-env": "7.24.7", + "@babel/preset-typescript": "7.24.7", + "@babel/plugin-transform-class-properties": "7.24.7", + "@babel/plugin-transform-object-rest-spread": "7.24.7", + "@quasar/app-webpack": "3.13.2", + "@quasar/cli": "2.4.1", "@types/mockjs": "1.0.10", - "@types/node": "20.12.7", - "@typescript-eslint/eslint-plugin": "7.7.1", - "@typescript-eslint/parser": "7.7.1", - "@vue/compiler-sfc": "3.4.24", + "@types/node": "20.14.10", + "@typescript-eslint/eslint-plugin": "7.15.0", + "@typescript-eslint/parser": "7.15.0", + "@vue/compiler-sfc": "3.4.31", "@webpack-cli/serve": "2.0.5", "autoprefixer": "10.4.19", "babel-loader": "9.1.3", "clean-webpack-plugin": "4.0.0", "copy-webpack-plugin": "12.0.2", "cross-env": "7.0.3", - "css-loader": "7.1.1", + "css-loader": "7.1.2", "eslint": "8.56.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-vue": "9.25.0", - "eslint-webpack-plugin": "4.1.0", + "eslint-plugin-vue": "9.27.0", + "eslint-webpack-plugin": "4.2.0", "html-webpack-plugin": "5.6.0", "json5": "2.2.3", "mini-css-extract-plugin": "2.9.0", - "nodemon": "3.1.0", - "postcss": "8.4.38", + "nodemon": "3.1.4", + "postcss": "8.4.39", "postcss-import": "16.1.0", "postcss-loader": "8.1.1", - "postcss-preset-env": "9.5.9", - "prettier": "3.2.5", - "sass": "1.75.0", + "postcss-preset-env": "9.6.0", + "prettier": "3.3.2", + "sass": "1.77.6", "sass-loader": "14.2.1", - "typescript": "5.4.5", + "typescript": "5.5.3", "vue-loader": "17.4.2", - "webpack": "5.91.0", + "webpack": "5.92.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4", - "webpack-merge": "5.10.0", + "webpack-merge": "6.0.1", "@vue/babel-plugin-jsx": "1.2.2" }, "dependencies": { - "@codemirror/autocomplete": "6.16.0", - "@codemirror/commands": "6.5.0", + "@codemirror/autocomplete": "6.17.0", + "@codemirror/commands": "6.6.0", "@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.6.3", + "@codemirror/lang-sql": "6.7.0", "@codemirror/lang-xml": "6.1.0", - "@codemirror/language": "6.10.1", + "@codemirror/language": "6.10.2", "@codemirror/search": "6.5.6", "@codemirror/state": "6.4.1", - "@codemirror/view": "6.26.3", - "@maxgraph/core": "0.10.0", - "@quasar/extras": "1.16.11", - "@vueuse/core": "10.9.0", - "axios": "1.6.8", + "@codemirror/view": "6.28.4", + "@maxgraph/core": "0.12.0", + "@quasar/extras": "1.16.12", + "@vueuse/core": "10.11.0", + "axios": "1.7.2", "codemirror": "6.0.1", - "dayjs": "1.11.10", - "echarts": "5.5.0", + "dayjs": "1.11.11", + "echarts": "5.5.1", "exceljs": "4.4.0", "file-saver": "2.0.5", "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.246", - "quasar": "2.15.3", - "tailwindcss": "3.4.3", - "vue": "3.4.24", - "vue-dompurify-html": "5.0.1", + "platform-core": "8.1.273", + "quasar": "2.15.4", + "tailwindcss": "3.4.4", + "vue": "3.4.31", + "vue-dompurify-html": "5.1.0", "vue-i18n": "9.13.1", - "vue-router": "4.3.2", - "@univerjs/core": "0.1.13", - "@univerjs/design": "0.1.13", - "@univerjs/docs": "0.1.13", - "@univerjs/docs-ui": "0.1.13", - "@univerjs/engine-formula": "0.1.13", - "@univerjs/engine-render": "0.1.13", - "@univerjs/facade": "0.1.13", - "@univerjs/sheets": "0.1.13", - "@univerjs/sheets-formula": "0.1.13", - "@univerjs/sheets-ui": "0.1.13", - "@univerjs/ui": "0.1.13" + "vue-router": "4.4.0", + "@univerjs/core": "0.2.0", + "@univerjs/design": "0.2.0", + "@univerjs/docs": "0.2.0", + "@univerjs/docs-ui": "0.2.0", + "@univerjs/engine-formula": "0.2.0", + "@univerjs/engine-render": "0.2.0", + "@univerjs/facade": "0.2.0", + "@univerjs/sheets": "0.2.0", + "@univerjs/sheets-formula": "0.2.0", + "@univerjs/sheets-ui": "0.2.0", + "@univerjs/ui": "0.2.0", + "pinia-undo": "0.2.4", + "xml-formatter": "3.6.3" } } \ No newline at end of file diff --git a/io.sc.platform.mvc.frontend/webpack.config.mf.cjs b/io.sc.platform.mvc.frontend/webpack.config.mf.cjs index 6425f66e..dd430adc 100644 --- a/io.sc.platform.mvc.frontend/webpack.config.mf.cjs +++ b/io.sc.platform.mvc.frontend/webpack.config.mf.cjs @@ -60,6 +60,18 @@ module.exports = { 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, + "xml-formatter": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/core": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/design": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-render": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/facade": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/ui": { requiredVersion: deps['vue-router'], singleton: true } } }), ] diff --git a/io.sc.platform.mvc.frontend/webpack.env.build.cjs b/io.sc.platform.mvc.frontend/webpack.env.build.cjs index 0776c382..fbcf0fbe 100644 --- a/io.sc.platform.mvc.frontend/webpack.env.build.cjs +++ b/io.sc.platform.mvc.frontend/webpack.env.build.cjs @@ -24,7 +24,7 @@ module.exports = merge(common, mf, { cacheGroups: { 'shared': { name: 'vue', - test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs)[\\/]/, + test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs|xml-formatter)[\\/]/, priority: 20, chunks: 'all', enforce: true @@ -71,6 +71,13 @@ module.exports = merge(common, mf, { chunks: 'all', enforce: true }, + '@univerjs': { + name: '@univerjs', + test: /[\\/]node_modules[\\/]@univerjs[\\/]/, + priority: 20, + chunks: 'all', + enforce: true + }, 'view': { name: 'view', test: /[\\/]view[\\/]/, diff --git a/io.sc.platform.poi/src/main/java/io/sc/platform/poi/ExcelBuilder.java b/io.sc.platform.poi/src/main/java/io/sc/platform/poi/ExcelBuilder.java new file mode 100644 index 00000000..0a006c95 --- /dev/null +++ b/io.sc.platform.poi/src/main/java/io/sc/platform/poi/ExcelBuilder.java @@ -0,0 +1,34 @@ +package io.sc.platform.poi; + +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +public class ExcelBuilder { + private String sheetName ="sheet"; + private int currentRowIndex =0; + private int currentColIndex =0; + private List> rows =new ArrayList<>(); + + public XSSFWorkbook create(){ + XSSFWorkbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet(sheetName); + return workbook; + } + + public ExcelBuilder sheet(String sheetName){ + if(StringUtils.hasText(sheetName)) { + this.sheetName = sheetName; + } + return this; + } + + public ExcelBuilder addRow(List cols){ + rows.add(cols); + return this; + } + +} diff --git a/io.sc.platform.poi/src/main/java/io/sc/platform/poi/service/impl/PoiServiceImpl.java b/io.sc.platform.poi/src/main/java/io/sc/platform/poi/service/impl/PoiServiceImpl.java index 88c654c9..5de987d2 100644 --- a/io.sc.platform.poi/src/main/java/io/sc/platform/poi/service/impl/PoiServiceImpl.java +++ b/io.sc.platform.poi/src/main/java/io/sc/platform/poi/service/impl/PoiServiceImpl.java @@ -10,6 +10,9 @@ import io.sc.platform.core.util.PinyinUtil; import io.sc.platform.core.util.WriterUtil; import io.sc.platform.poi.service.PoiService; import net.sourceforge.pinyin4j.PinyinHelper; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.stereotype.Service; diff --git a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/jpa/entity/ExecutorRegistryEntity.java b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/jpa/entity/ExecutorRegistryEntity.java index 17d8268c..bef3763e 100644 --- a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/jpa/entity/ExecutorRegistryEntity.java +++ b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/jpa/entity/ExecutorRegistryEntity.java @@ -40,7 +40,7 @@ public class ExecutorRegistryEntity extends BaseEntity { @Temporal(TemporalType.TIMESTAMP) private Date registDate; - @Formula("current_timestamp") + @Transient private Date now; public ExecutorRegistryEntity(){} @@ -69,7 +69,7 @@ public class ExecutorRegistryEntity extends BaseEntity { vo.setUrl(this.getUrl()); vo.setRegistDate(this.getRegistDate()); vo.setNow(this.getNow()); - vo.setOnline((this.getNow().getTime() - this.getRegistDate().getTime())<40*1000); + vo.setOnline((new Date().getTime() - this.getRegistDate().getTime())<40*1000); return vo; } diff --git a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/jpa/entity/TaskLogEntity.java b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/jpa/entity/TaskLogEntity.java index 0fcbd5ad..2bcfc2a3 100644 --- a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/jpa/entity/TaskLogEntity.java +++ b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/jpa/entity/TaskLogEntity.java @@ -15,6 +15,8 @@ import java.util.Date; public class TaskLogEntity extends BaseEntity { //主键 @Id + @GeneratedValue(generator = "assigned") + @GenericGenerator(name = "assigned", strategy = "assigned") @Column(name="ID_", length=36) @Size(max=36) private String id; diff --git a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/ExecutorRegistryService.java b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/ExecutorRegistryService.java index 21a7d103..898c61b6 100644 --- a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/ExecutorRegistryService.java +++ b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/ExecutorRegistryService.java @@ -10,6 +10,7 @@ import java.util.List; public interface ExecutorRegistryService extends DaoService { public static final int ONLINE_INTERVAL_SECONDS =35; + public List findAllExecutors(); public List findOnlineExecutors(); public void registry(ExecutorRegistry registry); public void unRegistry(ExecutorRegistry registry); diff --git a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/TaskLogService.java b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/TaskLogService.java index b589a2ad..036a34f7 100644 --- a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/TaskLogService.java +++ b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/TaskLogService.java @@ -8,5 +8,6 @@ import io.sc.platform.orm.service.DaoService; import java.util.List; public interface TaskLogService extends DaoService { + public void insert(TaskLogEntity entity) throws Exception; public void callback(TaskLog taskLog) throws Exception; } diff --git a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/impl/ExecutorRegistryServiceImpl.java b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/impl/ExecutorRegistryServiceImpl.java index 82f920b0..2e62f6fd 100644 --- a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/impl/ExecutorRegistryServiceImpl.java +++ b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/impl/ExecutorRegistryServiceImpl.java @@ -8,10 +8,13 @@ import io.sc.platform.scheduler.manager.server.jpa.repository.ExecutorRegistryRe import io.sc.platform.scheduler.manager.server.service.ExecutorRegistryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.sql.DataSource; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -24,17 +27,36 @@ public class ExecutorRegistryServiceImpl extends DaoServiceImpl findAllExecutors() { + return jdbcTemplate.query(querySql, new RowMapper() { + @Override + public ExecutorRegistryEntity mapRow(ResultSet rs, int rowNum) throws SQLException { + ExecutorRegistryEntity entity = new ExecutorRegistryEntity(); + entity.setId(rs.getString("ID_")); + entity.setApplicationName(rs.getString("APPLICATION_NAME_")); + entity.setName(rs.getString("NAME_")); + entity.setUrl(rs.getString("URL_")); + entity.setRegistDate(rs.getDate("REGIST_DATE_")); + entity.setNow(rs.getDate("NOW_")); + return entity; + } + }); + } + @Override public List findOnlineExecutors() { - List entities =repository.findAll(); + List entities =findAllExecutors(); List result =new ArrayList<>(); for(ExecutorRegistryEntity entity : entities){ if(entity.getNow().getTime() - entity.getRegistDate().getTime() queryWithDetail(QueryParameter queryParameter) throws Exception { Page page =EntityVoUtil.toVo(super.query(queryParameter)); if(page!=null && page.getContent()!=null && !page.getContent().isEmpty()){ - List executorRegistries =EntityVoUtil.toVo(executorRegistryService.getRepository().findAll()); + List executorRegistries =EntityVoUtil.toVo(executorRegistryService.findAllExecutors()); List executors =page.getContent(); for(Executor executor : executors){ executor.setDetails(buildDetails(executor,executorRegistries)); diff --git a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/impl/TaskLogServiceImpl.java b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/impl/TaskLogServiceImpl.java index 47b8fda8..fabc6715 100644 --- a/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/impl/TaskLogServiceImpl.java +++ b/io.sc.platform.scheduler.manager/src/main/java/io/sc/platform/scheduler/manager/server/service/impl/TaskLogServiceImpl.java @@ -8,16 +8,36 @@ import io.sc.platform.scheduler.manager.server.jpa.repository.TaskLogRepository; import io.sc.platform.scheduler.manager.server.service.TaskLogService; import io.sc.platform.orm.service.impl.DaoServiceImpl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCallback; +import org.springframework.jdbc.support.lob.DefaultLobHandler; +import org.springframework.jdbc.support.lob.LobCreator; +import org.springframework.jdbc.support.lob.LobHandler; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.transaction.Transactional; -import java.util.Date; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Timestamp; import java.util.List; @Service("io.sc.platform.scheduler.manager.server.service.impl.TaskLogServiceImpl") public class TaskLogServiceImpl extends DaoServiceImpl implements TaskLogService { + private static final String INSERT_TASK_LOG_SQL ="" + + "insert into JOB_TASK_LOG(" + + "ID_," + + "TASK_ID_," + + "EXECUTOR_ID_," + + "EXECUTOR_URL_," + + "PARAMETER_," + + "RETRY_COUNT_," + + "TRIGGER_DATA_TIME_," + + "TRIGGER_RESULT_," + + "TRIGGER_MESSAGE_)" + + " values(?,?,?,?,?,?,?,?,?)"; private static final String UPDATE_TASK_LOG_SQL ="update JOB_TASK_LOG set HANDLE_STATUS_=?,HANDLE_DATA_TIME_=?,HANDLE_MESSAGE_=? where ID_=?"; private static final String UPDATE_TASK_SQL ="update JOB_TASK set STATUS_=? where ID_=?"; @Autowired private JdbcTemplate jdbcTemplate; @@ -27,6 +47,25 @@ public class TaskLogServiceImpl extends DaoServiceImpl -
{{ $t('standard.industry.grid.title') }}
+
{{ $t('standard.tab.industry') }}
-
{{ $t('standard.adminDivision.grid.title') }}
+
{{ $t('standard.tab.adminDivision') }}
-
- {{ $t('standard.performanceStatus.grid.title') }} +
+ {{ $t('standard.tab.performanceStatus') }}
-
{{ $t('standard.counterparty.grid.title') }}
+
{{ $t('standard.tab.counterparty') }}
-
{{ $t('standard.country.grid.title') }}
+
{{ $t('standard.tab.country') }}
-
{{ $t('standard.currency.grid.title') }}
+
{{ $t('standard.tab.currency') }}
+
+ +
{{ $t('standard.tab.loanProduct') }}
+
+ +
{{ $t('standard.tab.tradeFinanceProduct') }}
+
+ +
{{ $t('standard.tab.bussinessProduct') }}
+
+ +
{{ $t('standard.tab.collateral') }}
+
+ +
{{ $t('standard.tab.bond') }}
@@ -47,6 +62,21 @@ + + + + + + + + + + + + + + +
@@ -61,6 +91,11 @@ import PerformanceStatus from './standard/PerformanceStatus.vue'; import Counterparty from './standard/Counterparty.vue'; import Country from './standard/Country.vue'; import Currency from './standard/Currency.vue'; +import LoanProduct from './standard/LoanProduct.vue'; +import TradeFinanceProduct from './standard/TradeFinanceProduct.vue'; +import BussinessProduct from './standard/BussinessProduct.vue'; +import Collateral from './standard/Collateral.vue'; +import Bond from './standard/Bond.vue'; const splitterModelRef = ref(15); const selectedTabRef = ref('Industry'); diff --git a/io.sc.standard.frontend/src/views/standard/AdminDivision.vue b/io.sc.standard.frontend/src/views/standard/AdminDivision.vue index 3a68fa6d..166ebc62 100644 --- a/io.sc.standard.frontend/src/views/standard/AdminDivision.vue +++ b/io.sc.standard.frontend/src/views/standard/AdminDivision.vue @@ -52,7 +52,6 @@ columns: [ { width: 300, name: 'name', label: $t('name') }, { width: 100, name: 'code', label: $t('code') }, - { width: 100, name: 'description', label: $t('description') }, ], }, { @@ -61,11 +60,8 @@ columns: [ { width: 300, name: 'mappingName', label: $t('name') }, { width: 100, name: 'mappingCode', label: $t('code') }, - { width: 100, name: 'mappingDescription', label: $t('description') }, ], }, - { width: 100, name: 'lastModifier', label: $t('lastModifier') }, - { width: 120, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, ]" :editor="{ dialog: { diff --git a/io.sc.standard.frontend/src/views/standard/Bond.vue b/io.sc.standard.frontend/src/views/standard/Bond.vue new file mode 100644 index 00000000..e7bac00b --- /dev/null +++ b/io.sc.standard.frontend/src/views/standard/Bond.vue @@ -0,0 +1,106 @@ + + diff --git a/io.sc.standard.frontend/src/views/standard/BussinessProduct.vue b/io.sc.standard.frontend/src/views/standard/BussinessProduct.vue new file mode 100644 index 00000000..5092c2d7 --- /dev/null +++ b/io.sc.standard.frontend/src/views/standard/BussinessProduct.vue @@ -0,0 +1,102 @@ + + diff --git a/io.sc.standard.frontend/src/views/standard/Collateral.vue b/io.sc.standard.frontend/src/views/standard/Collateral.vue new file mode 100644 index 00000000..72c5d8bb --- /dev/null +++ b/io.sc.standard.frontend/src/views/standard/Collateral.vue @@ -0,0 +1,107 @@ + + diff --git a/io.sc.standard.frontend/src/views/standard/Counterparty.vue b/io.sc.standard.frontend/src/views/standard/Counterparty.vue index fa413e4e..7eaf4d3c 100644 --- a/io.sc.standard.frontend/src/views/standard/Counterparty.vue +++ b/io.sc.standard.frontend/src/views/standard/Counterparty.vue @@ -6,6 +6,7 @@ selection="multiple" :checkbox-selection="true" :tree="false" + dense primary-key="code" :data-url="Environment.apiContextPath('/api/standard/counterparty')" :pageable="true" @@ -22,7 +23,6 @@ columns: [ { width: 150, name: 'code', label: $t('code') }, { width: 200, name: 'name', label: $t('name') }, - { width: 100, name: 'description', label: $t('description') }, ], }, { @@ -31,11 +31,8 @@ columns: [ { width: 150, name: 'mappingCode', label: $t('code') }, { width: 200, name: 'mappingName', label: $t('name') }, - { width: 100, name: 'mappingDescription', label: $t('description') }, ], }, - { width: 100, name: 'lastModifier', label: $t('lastModifier') }, - { width: 120, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, ]" :editor="{ dialog: { diff --git a/io.sc.standard.frontend/src/views/standard/Country.vue b/io.sc.standard.frontend/src/views/standard/Country.vue index 6ad9e5d1..dde03c17 100644 --- a/io.sc.standard.frontend/src/views/standard/Country.vue +++ b/io.sc.standard.frontend/src/views/standard/Country.vue @@ -7,6 +7,7 @@ selection="multiple" :checkbox-selection="true" :tree="false" + dense primary-key="code" :data-url="Environment.apiContextPath('/api/standard/country')" :pageable="false" @@ -149,7 +150,7 @@ const columnsComputed = computed(() => { }, { name: 'currency', - label: t('standard.entity.currency'), + label: t('standard.country.entity.currency'), columns: [ { width: 70, @@ -189,7 +190,7 @@ const columnsComputed = computed(() => { { width: 80, name: 'language', - label: t('standard.entity.language'), + label: t('standard.country.entity.language'), columns: [{ width: 100, name: 'languageCode3', label: t('code') }], }, diff --git a/io.sc.standard.frontend/src/views/standard/Currency.vue b/io.sc.standard.frontend/src/views/standard/Currency.vue index 79748352..f4f3b280 100644 --- a/io.sc.standard.frontend/src/views/standard/Currency.vue +++ b/io.sc.standard.frontend/src/views/standard/Currency.vue @@ -7,6 +7,7 @@ selection="multiple" :checkbox-selection="true" :tree="false" + dense primary-key="code" :data-url="Environment.apiContextPath('/api/standard/currency')" :pageable="false" @@ -29,8 +30,6 @@ { width: 150, name: 'nameChinese', label: $t('standard.currency.entity.nameChinese') }, { width: 150, name: 'nameEnglish', label: $t('standard.currency.entity.nameEnglish') }, { width: 100, name: 'precision', label: $t('standard.currency.entity.precision') }, - { width: 100, name: 'lastModifier', label: $t('lastModifier') }, - { width: 120, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, ]" :editor="{ dialog: { diff --git a/io.sc.standard.frontend/src/views/standard/Industry.vue b/io.sc.standard.frontend/src/views/standard/Industry.vue index 6ed7b233..a8c491f0 100644 --- a/io.sc.standard.frontend/src/views/standard/Industry.vue +++ b/io.sc.standard.frontend/src/views/standard/Industry.vue @@ -50,22 +50,18 @@ name: 'target', label: $t('standard.entity.target'), columns: [ - { width: 300, name: 'name', label: $t('name') }, + { width: 450, name: 'name', label: $t('name') }, { width: 100, name: 'code', label: $t('code') }, - { width: 100, name: 'description', label: $t('description') }, ], }, { name: 'source', label: $t('standard.entity.source'), columns: [ - { width: 300, name: 'mappingName', label: $t('name') }, + { width: 350, name: 'mappingName', label: $t('name') }, { width: 100, name: 'mappingCode', label: $t('code') }, - { width: 100, name: 'mappingDescription', label: $t('description') }, ], }, - { width: 100, name: 'lastModifier', label: $t('lastModifier') }, - { width: 120, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, ]" :editor="{ dialog: { diff --git a/io.sc.standard.frontend/src/views/standard/LoanProduct.vue b/io.sc.standard.frontend/src/views/standard/LoanProduct.vue new file mode 100644 index 00000000..5d28fd30 --- /dev/null +++ b/io.sc.standard.frontend/src/views/standard/LoanProduct.vue @@ -0,0 +1,102 @@ + + diff --git a/io.sc.standard.frontend/src/views/standard/PerformanceStatus.vue b/io.sc.standard.frontend/src/views/standard/PerformanceStatus.vue index 679b10f3..a1b010bb 100644 --- a/io.sc.standard.frontend/src/views/standard/PerformanceStatus.vue +++ b/io.sc.standard.frontend/src/views/standard/PerformanceStatus.vue @@ -6,13 +6,11 @@ selection="multiple" :checkbox-selection="true" :tree="false" + dense primary-key="code" :data-url="Environment.apiContextPath('/api/standard/performanceStatus')" - :pageable="true" - :pagination="{ - sortBy: 'code', - descending: false, - }" + :pageable="false" + :sort-by="['code']" :toolbar-configure="{ noIcon: false }" :toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'view', 'separator', 'export']" :columns="[ @@ -22,7 +20,6 @@ columns: [ { width: 100, name: 'code', label: $t('code') }, { width: 100, name: 'name', label: $t('name') }, - { width: 100, name: 'description', label: $t('description') }, ], }, { @@ -31,11 +28,8 @@ columns: [ { width: 100, name: 'mappingCode', label: $t('code') }, { width: 100, name: 'mappingName', label: $t('name') }, - { width: 100, name: 'mappingDescription', label: $t('description') }, ], }, - { width: 100, name: 'lastModifier', label: $t('lastModifier') }, - { width: 120, name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.dateOnly() }, ]" :editor="{ dialog: { diff --git a/io.sc.standard.frontend/src/views/standard/TradeFinanceProduct.vue b/io.sc.standard.frontend/src/views/standard/TradeFinanceProduct.vue new file mode 100644 index 00000000..2fac026e --- /dev/null +++ b/io.sc.standard.frontend/src/views/standard/TradeFinanceProduct.vue @@ -0,0 +1,102 @@ + + diff --git a/io.sc.standard.frontend/webpack.config.mf.cjs b/io.sc.standard.frontend/webpack.config.mf.cjs index 6425f66e..dd430adc 100644 --- a/io.sc.standard.frontend/webpack.config.mf.cjs +++ b/io.sc.standard.frontend/webpack.config.mf.cjs @@ -60,6 +60,18 @@ module.exports = { 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, + "xml-formatter": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/core": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/design": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/docs-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/engine-render": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/facade": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-formula": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/sheets-ui": { requiredVersion: deps['vue-router'], singleton: true }, + "@univerjs/ui": { requiredVersion: deps['vue-router'], singleton: true } } }), ] diff --git a/io.sc.standard.frontend/webpack.env.build.cjs b/io.sc.standard.frontend/webpack.env.build.cjs index 0776c382..fbcf0fbe 100644 --- a/io.sc.standard.frontend/webpack.env.build.cjs +++ b/io.sc.standard.frontend/webpack.env.build.cjs @@ -24,7 +24,7 @@ module.exports = merge(common, mf, { cacheGroups: { 'shared': { name: 'vue', - test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs)[\\/]/, + test: /[\\/]node_modules[\\/](axios|dayjs|exceljs|file-saver|luckyexcel|mockjs|xml-formatter)[\\/]/, priority: 20, chunks: 'all', enforce: true @@ -71,6 +71,13 @@ module.exports = merge(common, mf, { chunks: 'all', enforce: true }, + '@univerjs': { + name: '@univerjs', + test: /[\\/]node_modules[\\/]@univerjs[\\/]/, + priority: 20, + chunks: 'all', + enforce: true + }, 'view': { name: 'view', test: /[\\/]view[\\/]/, diff --git a/io.sc.standard/src/main/java/io/sc/standard/controller/BondWebController.java b/io.sc.standard/src/main/java/io/sc/standard/controller/BondWebController.java new file mode 100644 index 00000000..464311e1 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/controller/BondWebController.java @@ -0,0 +1,26 @@ +package io.sc.standard.controller; + +import io.sc.platform.mvc.controller.support.RestCrudController; +import io.sc.platform.orm.service.support.QueryParameter; +import io.sc.standard.api.BondVo; +import io.sc.standard.jpa.entity.BondEntity; +import io.sc.standard.jpa.repository.BondRepository; +import io.sc.standard.service.BondService; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@RestController("io.sc.standard.controller.BondWebController") +@RequestMapping("/api/standard/bond") +public class BondWebController extends RestCrudController { + @Override + protected Page query(HttpServletRequest request, HttpServletResponse response, QueryParameter queryParameter) throws Exception { + if(!queryParameter.existsSortBy()){ + queryParameter.addSortBy("+code"); + } + return super.query(request, response, queryParameter); + } +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/controller/BussinessProductWebController.java b/io.sc.standard/src/main/java/io/sc/standard/controller/BussinessProductWebController.java new file mode 100644 index 00000000..5415cde4 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/controller/BussinessProductWebController.java @@ -0,0 +1,26 @@ +package io.sc.standard.controller; + +import io.sc.platform.mvc.controller.support.RestCrudController; +import io.sc.platform.orm.service.support.QueryParameter; +import io.sc.standard.api.BussinessProductVo; +import io.sc.standard.jpa.entity.BussinessProductEntity; +import io.sc.standard.jpa.repository.BussinessProductRepository; +import io.sc.standard.service.BussinessProductService; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@RestController("io.sc.standard.controller.BussinessProductWebController") +@RequestMapping("/api/standard/bussinessProduct") +public class BussinessProductWebController extends RestCrudController { + @Override + protected Page query(HttpServletRequest request, HttpServletResponse response, QueryParameter queryParameter) throws Exception { + if(!queryParameter.existsSortBy()){ + queryParameter.addSortBy("+code"); + } + return super.query(request, response, queryParameter); + } +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/controller/CollateralWebController.java b/io.sc.standard/src/main/java/io/sc/standard/controller/CollateralWebController.java new file mode 100644 index 00000000..705f6f89 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/controller/CollateralWebController.java @@ -0,0 +1,26 @@ +package io.sc.standard.controller; + +import io.sc.platform.mvc.controller.support.RestCrudController; +import io.sc.platform.orm.service.support.QueryParameter; +import io.sc.standard.api.CollateralVo; +import io.sc.standard.jpa.entity.CollateralEntity; +import io.sc.standard.jpa.repository.CollateralRepository; +import io.sc.standard.service.CollateralService; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@RestController("io.sc.standard.controller.CollateralWebController") +@RequestMapping("/api/standard/collateral") +public class CollateralWebController extends RestCrudController { + @Override + protected Page query(HttpServletRequest request, HttpServletResponse response, QueryParameter queryParameter) throws Exception { + if(!queryParameter.existsSortBy()){ + queryParameter.addSortBy("+code"); + } + return super.query(request, response, queryParameter); + } +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/controller/LoanProductWebController.java b/io.sc.standard/src/main/java/io/sc/standard/controller/LoanProductWebController.java new file mode 100644 index 00000000..21f8d4df --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/controller/LoanProductWebController.java @@ -0,0 +1,26 @@ +package io.sc.standard.controller; + +import io.sc.platform.mvc.controller.support.RestCrudController; +import io.sc.platform.orm.service.support.QueryParameter; +import io.sc.standard.api.LoanProductVo; +import io.sc.standard.jpa.entity.LoanProductEntity; +import io.sc.standard.jpa.repository.LoanProductRepository; +import io.sc.standard.service.LoanProductService; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@RestController("io.sc.standard.controller.LoanProductWebController") +@RequestMapping("/api/standard/loanProduct") +public class LoanProductWebController extends RestCrudController { + @Override + protected Page query(HttpServletRequest request, HttpServletResponse response, QueryParameter queryParameter) throws Exception { + if(!queryParameter.existsSortBy()){ + queryParameter.addSortBy("+code"); + } + return super.query(request, response, queryParameter); + } +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/controller/TradeFinanceProductWebController.java b/io.sc.standard/src/main/java/io/sc/standard/controller/TradeFinanceProductWebController.java new file mode 100644 index 00000000..8c37345b --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/controller/TradeFinanceProductWebController.java @@ -0,0 +1,26 @@ +package io.sc.standard.controller; + +import io.sc.platform.mvc.controller.support.RestCrudController; +import io.sc.platform.orm.service.support.QueryParameter; +import io.sc.standard.api.TradeFinanceProductVo; +import io.sc.standard.jpa.entity.TradeFinanceProductEntity; +import io.sc.standard.jpa.repository.TradeFinanceProductRepository; +import io.sc.standard.service.TradeFinanceProductService; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@RestController("io.sc.standard.controller.TradeFinanceProductWebController") +@RequestMapping("/api/standard/tradeFinanceProduct") +public class TradeFinanceProductWebController extends RestCrudController { + @Override + protected Page query(HttpServletRequest request, HttpServletResponse response, QueryParameter queryParameter) throws Exception { + if(!queryParameter.existsSortBy()){ + queryParameter.addSortBy("+code"); + } + return super.query(request, response, queryParameter); + } +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/AdminDivisionEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/AdminDivisionEntity.java index 19e77332..3fd89b2e 100644 --- a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/AdminDivisionEntity.java +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/AdminDivisionEntity.java @@ -7,7 +7,7 @@ import javax.persistence.*; import javax.validation.constraints.Size; /** - * 国民经济行业分类(GB/T 4754—2017) + * 中国行政区划分(GB/T 4754—2017) */ @Entity(name="io.sc.standard.jpa.entity.AdminDivisionEntity") @Table(name="SD_ADMIN_DIVISION") @@ -17,8 +17,8 @@ public class AdminDivisionEntity extends AuditorEntity { @Size(max=6) private String code; - @Column(name="NAME_", length=1024) - @Size(max=1024) + @Column(name="NAME_", length=255) + @Size(max=255) private String name; @Column(name="DESCRIPTION_", length=1024) @@ -29,8 +29,8 @@ public class AdminDivisionEntity extends AuditorEntity { @Size(max=255) private String mappingCode; - @Column(name="MAPPING_NAME_", length=1024) - @Size(max=1024) + @Column(name="MAPPING_NAME_", length=255) + @Size(max=255) private String mappingName; @Column(name="MAPPING_DESCRIPTION_", length=1024) diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/BondEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/BondEntity.java new file mode 100644 index 00000000..ad876e78 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/BondEntity.java @@ -0,0 +1,145 @@ +package io.sc.standard.jpa.entity; + +import io.sc.platform.orm.entity.AuditorEntity; +import io.sc.standard.api.BondVo; + +import javax.persistence.*; +import javax.validation.constraints.Size; + +/** + * 债券分类 + */ +@Entity(name="io.sc.standard.jpa.entity.BondEntity") +@Table(name="SD_BOND") +public class BondEntity extends AuditorEntity { + @Id + @Column(name="CODE_", length=5) + @Size(max=5) + private String code; + + @Column(name="NAME_", length=255) + @Size(max=255) + private String name; + + @Column(name="TYPE_", length=20) + @Size(max=20) + private String type; + + @Column(name="DESCRIPTION_", length=1024) + @Size(max=1024) + private String description; + + @Column(name="MAPPING_CODE_", length=255) + @Size(max=255) + private String mappingCode; + + @Column(name="MAPPING_NAME_", length=255) + @Size(max=255) + private String mappingName; + + @Column(name="MAPPING_TYPE_", length=20) + @Size(max=20) + private String mappingType; + + @Column(name="MAPPING_DESCRIPTION_", length=1024) + @Size(max=1024) + private String mappingDescription; + + @ManyToOne(fetch=FetchType.LAZY) + @JoinColumn(name="PARENT_CODE_") + protected BondEntity parent; + + @Override + public BondVo toVo() { + BondVo vo =new BondVo(); + super.toVo(vo); + vo.setCode(this.getCode()); + vo.setName(this.getName()); + vo.setType(this.getType()); + vo.setDescription(this.getDescription()); + vo.setMappingCode(this.getMappingCode()); + vo.setMappingName(this.getMappingName()); + vo.setMappingType(this.getMappingType()); + vo.setMappingDescription(this.getMappingDescription()); + vo.setParent(this.getParent()==null?null:this.getParent().getCode()); + return vo; + } + + + public BondEntity(){} + public BondEntity(String code){ + this.code =code; + } + + public @Size(max = 5) String getCode() { + return code; + } + + public void setCode(@Size(max = 5) String code) { + this.code = code; + } + + public @Size(max = 255) String getName() { + return name; + } + + public void setName(@Size(max = 255) String name) { + this.name = name; + } + + public @Size(max = 20) String getType() { + return type; + } + + public void setType(@Size(max = 20) String type) { + this.type = type; + } + + public @Size(max = 1024) String getDescription() { + return description; + } + + public void setDescription(@Size(max = 1024) String description) { + this.description = description; + } + + public @Size(max = 255) String getMappingCode() { + return mappingCode; + } + + public void setMappingCode(@Size(max = 255) String mappingCode) { + this.mappingCode = mappingCode; + } + + public @Size(max = 255) String getMappingName() { + return mappingName; + } + + public void setMappingName(@Size(max = 255) String mappingName) { + this.mappingName = mappingName; + } + + public @Size(max = 20) String getMappingType() { + return mappingType; + } + + public void setMappingType(@Size(max = 20) String mappingType) { + this.mappingType = mappingType; + } + + public @Size(max = 1024) String getMappingDescription() { + return mappingDescription; + } + + public void setMappingDescription(@Size(max = 1024) String mappingDescription) { + this.mappingDescription = mappingDescription; + } + + public BondEntity getParent() { + return parent; + } + + public void setParent(BondEntity parent) { + this.parent = parent; + } +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/BusinessCategoryEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/BusinessCategoryEntity.java deleted file mode 100644 index 24c5813f..00000000 --- a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/BusinessCategoryEntity.java +++ /dev/null @@ -1,118 +0,0 @@ -package io.sc.standard.jpa.entity; - -import io.sc.platform.orm.entity.AuditorEntity; -import io.sc.standard.api.IndustryVo; - -import javax.persistence.*; -import javax.validation.constraints.Size; - -/** - * 银行业务分类 - */ -@Entity(name="io.sc.standard.jpa.entity.BusinessCategoryEntity") -@Table(name="SD_BUSINESS_CATEGORY") -public class BusinessCategoryEntity extends AuditorEntity { - @Id - @Column(name="CODE_", length=5) - @Size(max=5) - private String code; - - @Column(name="NAME_", length=254) - @Size(max=254) - private String name; - - @Column(name="DESCRIPTION_", length=1024) - @Size(max=1024) - private String description; - - @Column(name="MAPPING_CODE_", length=255) - @Size(max=255) - private String mappingCode; - - @Column(name="MAPPING_NAME_", length=1024) - @Size(max=1024) - private String mappingName; - - @Column(name="MAPPING_DESCRIPTION_", length=1024) - @Size(max=1024) - private String mappingDescription; - - @ManyToOne(fetch=FetchType.LAZY) - @JoinColumn(name="PARENT_CODE_") - protected BusinessCategoryEntity parent; - - @Override - public IndustryVo toVo() { - IndustryVo vo =new IndustryVo(); - super.toVo(vo); - vo.setCode(this.getCode()); - vo.setName(this.getName()); - vo.setDescription(this.getDescription()); - vo.setMappingCode(this.getMappingCode()); - vo.setMappingName(this.getMappingName()); - vo.setMappingDescription(this.getMappingDescription()); - vo.setParent(this.getParent()==null?null:this.getParent().getCode()); - return vo; - } - - public BusinessCategoryEntity(){} - public BusinessCategoryEntity(String code){ - this.code =code; - } - - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getMappingCode() { - return mappingCode; - } - - public void setMappingCode(String mappingCode) { - this.mappingCode = mappingCode; - } - - public String getMappingName() { - return mappingName; - } - - public void setMappingName(String mappingName) { - this.mappingName = mappingName; - } - - public String getMappingDescription() { - return mappingDescription; - } - - public void setMappingDescription(String mappingDescription) { - this.mappingDescription = mappingDescription; - } - - public BusinessCategoryEntity getParent() { - return parent; - } - - public void setParent(BusinessCategoryEntity parent) { - this.parent = parent; - } -} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/BussinessProductEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/BussinessProductEntity.java new file mode 100644 index 00000000..71b32c4f --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/BussinessProductEntity.java @@ -0,0 +1,119 @@ +package io.sc.standard.jpa.entity; + +import io.sc.platform.orm.entity.AuditorEntity; +import io.sc.standard.api.BussinessProductVo; + +import javax.persistence.*; +import javax.validation.constraints.Size; + +/** + * 业务产品分类 + */ +@Entity(name="io.sc.standard.jpa.entity.BussinessProductEntity") +@Table(name="SD_BUS_PRODUCT") +public class BussinessProductEntity extends AuditorEntity { + @Id + @Column(name="CODE_", length=5) + @Size(max=5) + private String code; + + @Column(name="NAME_", length=255) + @Size(max=255) + private String name; + + @Column(name="DESCRIPTION_", length=1024) + @Size(max=1024) + private String description; + + @Column(name="MAPPING_CODE_", length=255) + @Size(max=255) + private String mappingCode; + + @Column(name="MAPPING_NAME_", length=255) + @Size(max=255) + private String mappingName; + + @Column(name="MAPPING_DESCRIPTION_", length=1024) + @Size(max=1024) + private String mappingDescription; + + @ManyToOne(fetch=FetchType.LAZY) + @JoinColumn(name="PARENT_CODE_") + protected BussinessProductEntity parent; + + @Override + public BussinessProductVo toVo() { + BussinessProductVo vo =new BussinessProductVo(); + super.toVo(vo); + vo.setCode(this.getCode()); + vo.setName(this.getName()); + vo.setDescription(this.getDescription()); + vo.setMappingCode(this.getMappingCode()); + vo.setMappingName(this.getMappingName()); + vo.setMappingDescription(this.getMappingDescription()); + vo.setParent(this.getParent()==null?null:this.getParent().getCode()); + return vo; + } + + + public BussinessProductEntity(){} + public BussinessProductEntity(String code){ + this.code =code; + } + + public @Size(max = 5) String getCode() { + return code; + } + + public void setCode(@Size(max = 5) String code) { + this.code = code; + } + + public @Size(max = 254) String getName() { + return name; + } + + public void setName(@Size(max = 254) String name) { + this.name = name; + } + + public @Size(max = 1024) String getDescription() { + return description; + } + + public void setDescription(@Size(max = 1024) String description) { + this.description = description; + } + + public @Size(max = 255) String getMappingCode() { + return mappingCode; + } + + public void setMappingCode(@Size(max = 255) String mappingCode) { + this.mappingCode = mappingCode; + } + + public @Size(max = 1024) String getMappingName() { + return mappingName; + } + + public void setMappingName(@Size(max = 1024) String mappingName) { + this.mappingName = mappingName; + } + + public @Size(max = 1024) String getMappingDescription() { + return mappingDescription; + } + + public void setMappingDescription(@Size(max = 1024) String mappingDescription) { + this.mappingDescription = mappingDescription; + } + + public BussinessProductEntity getParent() { + return parent; + } + + public void setParent(BussinessProductEntity parent) { + this.parent = parent; + } +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CollateralEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CollateralEntity.java new file mode 100644 index 00000000..6d0f76a6 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CollateralEntity.java @@ -0,0 +1,132 @@ +package io.sc.standard.jpa.entity; + +import io.sc.platform.orm.entity.AuditorEntity; +import io.sc.standard.api.CollateralVo; + +import javax.persistence.*; +import javax.validation.constraints.Size; + +/** + * 押品分类 + */ +@Entity(name="io.sc.standard.jpa.entity.CollateralEntity") +@Table(name="SD_COLLATERAL") +public class CollateralEntity extends AuditorEntity { + @Id + @Column(name="CODE_", length=5) + @Size(max=5) + private String code; + + @Column(name="NAME_", length=255) + @Size(max=255) + private String name; + + @Column(name="DESCRIPTION_", length=1024) + @Size(max=1024) + private String description; + + @Column(name="MAPPING_CODE_", length=255) + @Size(max=255) + private String mappingCode; + + @Column(name="MAPPING_NAME_", length=255) + @Size(max=255) + private String mappingName; + + @Column(name="MAPPING_DESCRIPTION_", length=1024) + @Size(max=1024) + private String mappingDescription; + + @Column(name="SUPERVISE_NAME_", length=255) + @Size(max=255) + private String superviseName; + + @ManyToOne(fetch=FetchType.LAZY) + @JoinColumn(name="PARENT_CODE_") + protected CollateralEntity parent; + + @Override + public CollateralVo toVo() { + CollateralVo vo =new CollateralVo(); + super.toVo(vo); + vo.setCode(this.getCode()); + vo.setName(this.getName()); + vo.setDescription(this.getDescription()); + vo.setMappingCode(this.getMappingCode()); + vo.setMappingName(this.getMappingName()); + vo.setMappingDescription(this.getMappingDescription()); + vo.setSuperviseName(this.getSuperviseName()); + vo.setParent(this.getParent()==null?null:this.getParent().getCode()); + return vo; + } + + + public CollateralEntity(){} + public CollateralEntity(String code){ + this.code =code; + } + + public @Size(max = 5) String getCode() { + return code; + } + + public void setCode(@Size(max = 5) String code) { + this.code = code; + } + + public @Size(max = 254) String getName() { + return name; + } + + public void setName(@Size(max = 254) String name) { + this.name = name; + } + + public @Size(max = 1024) String getDescription() { + return description; + } + + public void setDescription(@Size(max = 1024) String description) { + this.description = description; + } + + public @Size(max = 255) String getMappingCode() { + return mappingCode; + } + + public void setMappingCode(@Size(max = 255) String mappingCode) { + this.mappingCode = mappingCode; + } + + public @Size(max = 1024) String getMappingName() { + return mappingName; + } + + public void setMappingName(@Size(max = 1024) String mappingName) { + this.mappingName = mappingName; + } + + public @Size(max = 1024) String getMappingDescription() { + return mappingDescription; + } + + public void setMappingDescription(@Size(max = 1024) String mappingDescription) { + this.mappingDescription = mappingDescription; + } + + public @Size(max = 255) String getSuperviseName() { + return superviseName; + } + + public void setSuperviseName(@Size(max = 255) String superviseName) { + this.superviseName = superviseName; + } + + public CollateralEntity getParent() { + return parent; + } + + public void setParent(CollateralEntity parent) { + this.parent = parent; + } +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CounterpartyEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CounterpartyEntity.java index 426d3691..65336eaa 100644 --- a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CounterpartyEntity.java +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CounterpartyEntity.java @@ -10,7 +10,7 @@ import javax.persistence.Table; import javax.validation.constraints.Size; /** - * 履约状态 + * 交易对手 */ @Entity(name="io.sc.standard.jpa.entity.CounterpartyEntity") @Table(name="SD_COUNTERPARTY") @@ -24,8 +24,8 @@ public class CounterpartyEntity extends AuditorEntity { @Size(max=255) private String name; - @Column(name="DESCRIPTION_", length=255) - @Size(max=255) + @Column(name="DESCRIPTION_", length=1024) + @Size(max=1024) private String description; @Column(name="MAPPING_CODE_", length=255) @@ -36,8 +36,8 @@ public class CounterpartyEntity extends AuditorEntity { @Size(max=255) private String mappingName; - @Column(name="MAPPING_DESCRIPTION_", length=255) - @Size(max=255) + @Column(name="MAPPING_DESCRIPTION_", length=1024) + @Size(max=1024) private String mappingDescription; @Override diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CountryEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CountryEntity.java index 374e819e..2cb0b44a 100644 --- a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CountryEntity.java +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/CountryEntity.java @@ -56,13 +56,13 @@ public class CountryEntity extends AuditorEntity { private String nameLocalShort; // 中文备注 - @Column(name="REMARK_CHINESE_", length=512) - @Size(max=512) + @Column(name="REMARK_CHINESE_", length=255) + @Size(max=255) private String remarkChinese; // 英文备注 - @Column(name="REMARK_ENGLISH_", length=512) - @Size(max=512) + @Column(name="REMARK_ENGLISH_", length=255) + @Size(max=255) private String remarkEnglish; // 语种代码(两字母) diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/IndustryEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/IndustryEntity.java index 14da1faf..da232d18 100644 --- a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/IndustryEntity.java +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/IndustryEntity.java @@ -29,8 +29,8 @@ public class IndustryEntity extends AuditorEntity { @Size(max=255) private String mappingCode; - @Column(name="MAPPING_NAME_", length=1024) - @Size(max=1024) + @Column(name="MAPPING_NAME_", length=255) + @Size(max=255) private String mappingName; @Column(name="MAPPING_DESCRIPTION_", length=1024) diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/LoanProductEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/LoanProductEntity.java new file mode 100644 index 00000000..f336732b --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/LoanProductEntity.java @@ -0,0 +1,120 @@ +package io.sc.standard.jpa.entity; + +import io.sc.platform.orm.entity.AuditorEntity; +import io.sc.standard.api.IndustryVo; +import io.sc.standard.api.LoanProductVo; + +import javax.persistence.*; +import javax.validation.constraints.Size; + +/** + * 贷款产品分类 + */ +@Entity(name="io.sc.standard.jpa.entity.LoanProductEntity") +@Table(name="SD_LOAN_PRODUCT") +public class LoanProductEntity extends AuditorEntity { + @Id + @Column(name="CODE_", length=5) + @Size(max=5) + private String code; + + @Column(name="NAME_", length=255) + @Size(max=255) + private String name; + + @Column(name="DESCRIPTION_", length=1024) + @Size(max=1024) + private String description; + + @Column(name="MAPPING_CODE_", length=255) + @Size(max=255) + private String mappingCode; + + @Column(name="MAPPING_NAME_", length=255) + @Size(max=255) + private String mappingName; + + @Column(name="MAPPING_DESCRIPTION_", length=1024) + @Size(max=1024) + private String mappingDescription; + + @ManyToOne(fetch=FetchType.LAZY) + @JoinColumn(name="PARENT_CODE_") + protected LoanProductEntity parent; + + @Override + public LoanProductVo toVo() { + LoanProductVo vo =new LoanProductVo(); + super.toVo(vo); + vo.setCode(this.getCode()); + vo.setName(this.getName()); + vo.setDescription(this.getDescription()); + vo.setMappingCode(this.getMappingCode()); + vo.setMappingName(this.getMappingName()); + vo.setMappingDescription(this.getMappingDescription()); + vo.setParent(this.getParent()==null?null:this.getParent().getCode()); + return vo; + } + + + public LoanProductEntity(){} + public LoanProductEntity(String code){ + this.code =code; + } + + public @Size(max = 5) String getCode() { + return code; + } + + public void setCode(@Size(max = 5) String code) { + this.code = code; + } + + public @Size(max = 254) String getName() { + return name; + } + + public void setName(@Size(max = 254) String name) { + this.name = name; + } + + public @Size(max = 1024) String getDescription() { + return description; + } + + public void setDescription(@Size(max = 1024) String description) { + this.description = description; + } + + public @Size(max = 255) String getMappingCode() { + return mappingCode; + } + + public void setMappingCode(@Size(max = 255) String mappingCode) { + this.mappingCode = mappingCode; + } + + public @Size(max = 1024) String getMappingName() { + return mappingName; + } + + public void setMappingName(@Size(max = 1024) String mappingName) { + this.mappingName = mappingName; + } + + public @Size(max = 1024) String getMappingDescription() { + return mappingDescription; + } + + public void setMappingDescription(@Size(max = 1024) String mappingDescription) { + this.mappingDescription = mappingDescription; + } + + public LoanProductEntity getParent() { + return parent; + } + + public void setParent(LoanProductEntity parent) { + this.parent = parent; + } +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/PerformanceStatusEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/PerformanceStatusEntity.java index 43bd4e72..67288020 100644 --- a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/PerformanceStatusEntity.java +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/PerformanceStatusEntity.java @@ -25,8 +25,8 @@ public class PerformanceStatusEntity extends AuditorEntity @Size(max=20) private String name; - @Column(name="DESCRIPTION_", length=255) - @Size(max=255) + @Column(name="DESCRIPTION_", length=1024) + @Size(max=1024) private String description; @Column(name="MAPPING_CODE_", length=6) @@ -37,8 +37,8 @@ public class PerformanceStatusEntity extends AuditorEntity @Size(max=20) private String mappingName; - @Column(name="MAPPING_DESCRIPTION_", length=255) - @Size(max=255) + @Column(name="MAPPING_DESCRIPTION_", length=1024) + @Size(max=1024) private String mappingDescription; @Override diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/TradeFinanceProductEntity.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/TradeFinanceProductEntity.java new file mode 100644 index 00000000..b1b04043 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/entity/TradeFinanceProductEntity.java @@ -0,0 +1,120 @@ +package io.sc.standard.jpa.entity; + +import io.sc.platform.orm.entity.AuditorEntity; +import io.sc.standard.api.LoanProductVo; +import io.sc.standard.api.TradeFinanceProductVo; + +import javax.persistence.*; +import javax.validation.constraints.Size; + +/** + * 贸易融资产品分类 + */ +@Entity(name="io.sc.standard.jpa.entity.TradeFinanceProductEntity") +@Table(name="SD_TF_PRODUCT") +public class TradeFinanceProductEntity extends AuditorEntity { + @Id + @Column(name="CODE_", length=5) + @Size(max=5) + private String code; + + @Column(name="NAME_", length=255) + @Size(max=255) + private String name; + + @Column(name="DESCRIPTION_", length=1024) + @Size(max=1024) + private String description; + + @Column(name="MAPPING_CODE_", length=255) + @Size(max=255) + private String mappingCode; + + @Column(name="MAPPING_NAME_", length=255) + @Size(max=255) + private String mappingName; + + @Column(name="MAPPING_DESCRIPTION_", length=1024) + @Size(max=1024) + private String mappingDescription; + + @ManyToOne(fetch=FetchType.LAZY) + @JoinColumn(name="PARENT_CODE_") + protected TradeFinanceProductEntity parent; + + @Override + public TradeFinanceProductVo toVo() { + TradeFinanceProductVo vo =new TradeFinanceProductVo(); + super.toVo(vo); + vo.setCode(this.getCode()); + vo.setName(this.getName()); + vo.setDescription(this.getDescription()); + vo.setMappingCode(this.getMappingCode()); + vo.setMappingName(this.getMappingName()); + vo.setMappingDescription(this.getMappingDescription()); + vo.setParent(this.getParent()==null?null:this.getParent().getCode()); + return vo; + } + + + public TradeFinanceProductEntity(){} + public TradeFinanceProductEntity(String code){ + this.code =code; + } + + public @Size(max = 5) String getCode() { + return code; + } + + public void setCode(@Size(max = 5) String code) { + this.code = code; + } + + public @Size(max = 254) String getName() { + return name; + } + + public void setName(@Size(max = 254) String name) { + this.name = name; + } + + public @Size(max = 1024) String getDescription() { + return description; + } + + public void setDescription(@Size(max = 1024) String description) { + this.description = description; + } + + public @Size(max = 255) String getMappingCode() { + return mappingCode; + } + + public void setMappingCode(@Size(max = 255) String mappingCode) { + this.mappingCode = mappingCode; + } + + public @Size(max = 1024) String getMappingName() { + return mappingName; + } + + public void setMappingName(@Size(max = 1024) String mappingName) { + this.mappingName = mappingName; + } + + public @Size(max = 1024) String getMappingDescription() { + return mappingDescription; + } + + public void setMappingDescription(@Size(max = 1024) String mappingDescription) { + this.mappingDescription = mappingDescription; + } + + public TradeFinanceProductEntity getParent() { + return parent; + } + + public void setParent(TradeFinanceProductEntity parent) { + this.parent = parent; + } +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/BondRepository.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/BondRepository.java new file mode 100644 index 00000000..2969db2a --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/BondRepository.java @@ -0,0 +1,10 @@ +package io.sc.standard.jpa.repository; + +import io.sc.platform.orm.repository.DaoRepository; +import io.sc.standard.jpa.entity.BondEntity; +import org.springframework.stereotype.Service; + +@Service("io.sc.standard.jpa.repository.BondRepository") +public interface BondRepository extends DaoRepository { + public BondEntity findByCode(String code); +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/BussinessProductRepository.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/BussinessProductRepository.java new file mode 100644 index 00000000..f0345428 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/BussinessProductRepository.java @@ -0,0 +1,10 @@ +package io.sc.standard.jpa.repository; + +import io.sc.platform.orm.repository.DaoRepository; +import io.sc.standard.jpa.entity.BussinessProductEntity; +import org.springframework.stereotype.Service; + +@Service("io.sc.standard.jpa.repository.BussinessProductRepository") +public interface BussinessProductRepository extends DaoRepository { + public BussinessProductEntity findByCode(String code); +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/CollateralRepository.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/CollateralRepository.java new file mode 100644 index 00000000..5a5a3810 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/CollateralRepository.java @@ -0,0 +1,10 @@ +package io.sc.standard.jpa.repository; + +import io.sc.platform.orm.repository.DaoRepository; +import io.sc.standard.jpa.entity.CollateralEntity; +import org.springframework.stereotype.Service; + +@Service("io.sc.standard.jpa.repository.CollateralRepository") +public interface CollateralRepository extends DaoRepository { + public CollateralEntity findByCode(String code); +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/LoanProductRepository.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/LoanProductRepository.java new file mode 100644 index 00000000..f1b66da1 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/LoanProductRepository.java @@ -0,0 +1,13 @@ +package io.sc.standard.jpa.repository; + +import io.sc.platform.orm.repository.DaoRepository; +import io.sc.standard.jpa.entity.LoanProductEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service("io.sc.standard.jpa.repository.LoanProductRepository") +public interface LoanProductRepository extends DaoRepository { + public LoanProductEntity findByCode(String code); +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/TradeFinanceProductRepository.java b/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/TradeFinanceProductRepository.java new file mode 100644 index 00000000..04b36442 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/jpa/repository/TradeFinanceProductRepository.java @@ -0,0 +1,13 @@ +package io.sc.standard.jpa.repository; + +import io.sc.platform.orm.repository.DaoRepository; +import io.sc.standard.jpa.entity.TradeFinanceProductEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service("io.sc.standard.jpa.repository.TradeFinanceProductRepository") +public interface TradeFinanceProductRepository extends DaoRepository { + public TradeFinanceProductEntity findByCode(String code); +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/service/BondService.java b/io.sc.standard/src/main/java/io/sc/standard/service/BondService.java new file mode 100644 index 00000000..ab8cb451 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/service/BondService.java @@ -0,0 +1,9 @@ +package io.sc.standard.service; + +import io.sc.platform.orm.service.DaoService; +import io.sc.standard.jpa.entity.BondEntity; +import io.sc.standard.jpa.repository.BondRepository; + +public interface BondService extends DaoService { + +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/service/BussinessProductService.java b/io.sc.standard/src/main/java/io/sc/standard/service/BussinessProductService.java new file mode 100644 index 00000000..abd7cd76 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/service/BussinessProductService.java @@ -0,0 +1,9 @@ +package io.sc.standard.service; + +import io.sc.platform.orm.service.DaoService; +import io.sc.standard.jpa.entity.BussinessProductEntity; +import io.sc.standard.jpa.repository.BussinessProductRepository; + +public interface BussinessProductService extends DaoService { + +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/service/CollateralService.java b/io.sc.standard/src/main/java/io/sc/standard/service/CollateralService.java new file mode 100644 index 00000000..8d10b122 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/service/CollateralService.java @@ -0,0 +1,9 @@ +package io.sc.standard.service; + +import io.sc.platform.orm.service.DaoService; +import io.sc.standard.jpa.entity.CollateralEntity; +import io.sc.standard.jpa.repository.CollateralRepository; + +public interface CollateralService extends DaoService { + +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/service/LoanProductService.java b/io.sc.standard/src/main/java/io/sc/standard/service/LoanProductService.java new file mode 100644 index 00000000..6572814d --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/service/LoanProductService.java @@ -0,0 +1,9 @@ +package io.sc.standard.service; + +import io.sc.platform.orm.service.DaoService; +import io.sc.standard.jpa.entity.LoanProductEntity; +import io.sc.standard.jpa.repository.LoanProductRepository; + +public interface LoanProductService extends DaoService { + +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/service/TradeFinanceProductService.java b/io.sc.standard/src/main/java/io/sc/standard/service/TradeFinanceProductService.java new file mode 100644 index 00000000..b9d15c09 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/service/TradeFinanceProductService.java @@ -0,0 +1,9 @@ +package io.sc.standard.service; + +import io.sc.platform.orm.service.DaoService; +import io.sc.standard.jpa.entity.TradeFinanceProductEntity; +import io.sc.standard.jpa.repository.TradeFinanceProductRepository; + +public interface TradeFinanceProductService extends DaoService { + +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/service/impl/BondServiceImpl.java b/io.sc.standard/src/main/java/io/sc/standard/service/impl/BondServiceImpl.java new file mode 100644 index 00000000..43795d32 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/service/impl/BondServiceImpl.java @@ -0,0 +1,12 @@ +package io.sc.standard.service.impl; + +import io.sc.platform.orm.service.impl.DaoServiceImpl; +import io.sc.standard.jpa.entity.BondEntity; +import io.sc.standard.jpa.repository.BondRepository; +import io.sc.standard.service.BondService; +import org.springframework.stereotype.Service; + +@Service("io.sc.standard.service.impl.BondServiceImpl") +public class BondServiceImpl extends DaoServiceImpl implements BondService { + +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/service/impl/BussinessProductServiceImpl.java b/io.sc.standard/src/main/java/io/sc/standard/service/impl/BussinessProductServiceImpl.java new file mode 100644 index 00000000..68f89eed --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/service/impl/BussinessProductServiceImpl.java @@ -0,0 +1,12 @@ +package io.sc.standard.service.impl; + +import io.sc.platform.orm.service.impl.DaoServiceImpl; +import io.sc.standard.jpa.entity.BussinessProductEntity; +import io.sc.standard.jpa.repository.BussinessProductRepository; +import io.sc.standard.service.BussinessProductService; +import org.springframework.stereotype.Service; + +@Service("io.sc.standard.service.impl.BussinessProductServiceImpl") +public class BussinessProductServiceImpl extends DaoServiceImpl implements BussinessProductService { + +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/service/impl/CollateralServiceImpl.java b/io.sc.standard/src/main/java/io/sc/standard/service/impl/CollateralServiceImpl.java new file mode 100644 index 00000000..b1cac818 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/service/impl/CollateralServiceImpl.java @@ -0,0 +1,12 @@ +package io.sc.standard.service.impl; + +import io.sc.platform.orm.service.impl.DaoServiceImpl; +import io.sc.standard.jpa.entity.CollateralEntity; +import io.sc.standard.jpa.repository.CollateralRepository; +import io.sc.standard.service.CollateralService; +import org.springframework.stereotype.Service; + +@Service("io.sc.standard.service.impl.CollateralServiceImpl") +public class CollateralServiceImpl extends DaoServiceImpl implements CollateralService { + +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/service/impl/LoanProductServiceImpl.java b/io.sc.standard/src/main/java/io/sc/standard/service/impl/LoanProductServiceImpl.java new file mode 100644 index 00000000..e9602fd1 --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/service/impl/LoanProductServiceImpl.java @@ -0,0 +1,12 @@ +package io.sc.standard.service.impl; + +import io.sc.platform.orm.service.impl.DaoServiceImpl; +import io.sc.standard.jpa.entity.LoanProductEntity; +import io.sc.standard.jpa.repository.LoanProductRepository; +import io.sc.standard.service.LoanProductService; +import org.springframework.stereotype.Service; + +@Service("io.sc.standard.service.impl.LoanProductServiceImpl") +public class LoanProductServiceImpl extends DaoServiceImpl implements LoanProductService { + +} diff --git a/io.sc.standard/src/main/java/io/sc/standard/service/impl/TradeFinanceProductServiceImpl.java b/io.sc.standard/src/main/java/io/sc/standard/service/impl/TradeFinanceProductServiceImpl.java new file mode 100644 index 00000000..693ed1bc --- /dev/null +++ b/io.sc.standard/src/main/java/io/sc/standard/service/impl/TradeFinanceProductServiceImpl.java @@ -0,0 +1,12 @@ +package io.sc.standard.service.impl; + +import io.sc.platform.orm.service.impl.DaoServiceImpl; +import io.sc.standard.jpa.entity.TradeFinanceProductEntity; +import io.sc.standard.jpa.repository.TradeFinanceProductRepository; +import io.sc.standard.service.TradeFinanceProductService; +import org.springframework.stereotype.Service; + +@Service("io.sc.standard.service.impl.TradeFinanceProductServiceImpl") +public class TradeFinanceProductServiceImpl extends DaoServiceImpl implements TradeFinanceProductService { + +} diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_admin_division.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_admin_division.csv similarity index 100% rename from io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_admin_division.csv rename to io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_admin_division.csv diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_bond.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_bond.csv new file mode 100644 index 00000000..c59fbcf9 --- /dev/null +++ b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_bond.csv @@ -0,0 +1,21 @@ +"SD_BOND",,,,,,,,,,,,,, +"CODE_","PARENT_CODE_","NAME_","TYPE_","DESCRIPTION_","MAPPING_CODE_","MAPPING_NAME_","MAPPING_TYPE_","MAPPING_DESCRIPTION_","JPA_VERSION_","DATA_COME_FROM_","CREATOR_","CREATE_DATE_","LAST_MODIFIER_","LAST_MODIFYDATE_" +"代码","父代码","名称","类型","说明","映射代码","映射名称","映射类型","映射描述","JPA乐观锁版本","","创建人","创建日期","最后修改人","最后修改日期" +"VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","INTEGER","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP" +"java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.Integer","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp" +"FICEB",,"央票","非对公",,"FICEB","央票","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FICER",,"凭证式国债","非对公",,"FICER","凭证式国债","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FICMB",,"商业银行债","非对公",,"FICMB","商业银行债","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FICSED",,"次级债","非对公",,"FICSED","次级债","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FIDKPJ",,"同业贷款支持票据","非对公",,"FIDKPJ","同业贷款支持票据","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FIFG",,"外国政府债券","非对公",,"FIFG","外国政府债券","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FIGOV",,"记账式国债","非对公",,"FIGOV","记账式国债","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FIGPE",,"政府投资公共企业债","对公",,"FIGPE","政府投资公共企业债","对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FILSAB",,"零售ABS债","非对公",,"FILSAB","零售ABS债","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FIOE",,"其他企业债","对公",,"FIOE","其他企业债","对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FIOFI",,"金融机构债","非对公",,"FIOFI","金融机构债","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FIOTAB",,"非我行ABS债","非对公",,"FIOTAB","非我行ABS债","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FIQS",,"券商收益凭证","非对公",,"FIQS","券商收益凭证","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FIREC",,"地方债","非对公",,"FIREC","地方债","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"FISECC",,"证券公司债","非对公",,"FISECC","证券公司债","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" +"IPOLB",,"政策性银行债","非对公",,"IPOLB","政策性银行债","非对公",,,"INPUT","system","2024-07-10 09:18:29.0","system","2024-07-10 09:18:29.0" diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_bus_product.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_bus_product.csv new file mode 100644 index 00000000..e71ceb67 --- /dev/null +++ b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_bus_product.csv @@ -0,0 +1,741 @@ +"SD_BUS_PRODUCT",,,,,,,,,,,, +"CODE_","PARENT_CODE_","NAME_","DESCRIPTION_","MAPPING_CODE_","MAPPING_NAME_","MAPPING_DESCRIPTION_","JPA_VERSION_","DATA_COME_FROM_","CREATOR_","CREATE_DATE_","LAST_MODIFIER_","LAST_MODIFYDATE_" +"代码","父代码","名称","说明","映射代码","映射名称","映射描述","JPA乐观锁版本","数据来源(INPUT:手工录入,IMPORT:系统自动导入)","创建人","创建日期","最后修改人","最后修改日期" +"VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","INTEGER","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP" +"java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.Integer","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp" +"1110010",,"员工住房贷款",,"1110010","员工住房贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1110020",,"一手楼按揭",,"1110020","一手楼按揭",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1110030",,"二手楼按揭",,"1110030","二手楼按揭",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1110060",,"直客式按揭",,"1110060","直客式按揭",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1110070",,"持证抵押贷款",,"1110070","持证抵押贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1110080",,"房屋持证抵押授信额度",,"1110080","房屋持证抵押授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1110090",,"转按揭",,"1110090","转按揭",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1120010",,"个人汽车抵押贷款",,"1120010","个人汽车抵押贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1120020",,"个人汽车保证贷款",,"1120020","个人汽车保证贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1120030",,"信用卡车贷",,"1120030","信用卡车贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1130010",,"个人存单质押贷款",,"1130010","个人存单质押贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1130020",,"个人其他质押贷款",,"1130020","个人其他质押贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1130040",,"寿险保单质押贷款",,"1130040","寿险保单质押贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1130050",,"灵活定存",,"1130050","灵活定存",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1130060",,"金抵利理财产品质押贷款",,"1130060","金抵利理财产品质押贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140010",,"个人普通信用贷款",,"1140010","个人普通信用贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140020",,"个人工资保证贷款",,"1140020","个人工资保证贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140030",,"员工信用贷款",,"1140030","员工信用贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140040",,"小额消费信用贷款",,"1140040","小额消费信用贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140050",,"增值贷",,"1140050","增值贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140070",,"薪税贷",,"1140070","薪税贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140080",,"薪水贷",,"1140080","薪水贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140090",,"白领快贷",,"1140090","白领快贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140100",,"新一贷",,"1140100","新一贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140110",,"信用速贷",,"1140110","信用速贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140120",,"免担保赎楼贷款",,"1140120","免担保赎楼贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140130",,"贷贷平安",,"1140130","贷贷平安",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1140170",,"橙e贷",,"1140170","橙e贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1150010",,"下岗失业人员小额担保贷款",,"1150010","下岗失业人员小额担保贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1150020",,"国家助学贷款",,"1150020","国家助学贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1150030",,"商业助学贷款",,"1150030","商业助学贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1150040",,"个人助业贷款",,"1150040","个人助业贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1150050",,"个人其他保证贷款",,"1150050","个人其他保证贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1150060",,"个人小额消费贷款",,"1150060","个人小额消费贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1150070",,"赎楼贷款",,"1150070","赎楼贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1150080",,"快贷",,"1150080","快贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1150100",,"房易贷",,"1150100","房易贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1160050",,"商易贷",,"1160050","商易贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1160060",,"独立循环额度",,"1160060","独立循环额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1190010",,"老个人委托贷款",,"1190010","老个人委托贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1190030",,"个人委托贷款",,"1190030","个人委托贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200010",,"上海公积金贷款",,"1200010","上海公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200020",,"珠海公积金贷款",,"1200020","珠海公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200030",,"广州公积金贷款",,"1200030","广州公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200040",,"昆明公积金贷款",,"1200040","昆明公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200050",,"重庆公积金贷款",,"1200050","重庆公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200060",,"深圳公积金贷款",,"1200060","深圳公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200070",,"成都公积金贷款",,"1200070","成都公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200080",,"海口公积金贷款",,"1200080","海口公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200090",,"济南公积金贷款",,"1200090","济南公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200110",,"南京公积金贷款",,"1200110","南京公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200120",,"天津公积金贷款",,"1200120","天津公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200130",,"武汉公积金贷款",,"1200130","武汉公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"1200140",,"广铁公积金贷款",,"1200140","广铁公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2110100010",,"小微标准住房抵押业务",,"2110100010","小微标准住房抵押业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2110100020",,"小微标准商用房抵押业务",,"2110100020","小微标准商用房抵押业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2110100030",,"小微一般房产抵押业务",,"2110100030","小微一般房产抵押业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2110100040",,"小微组合贷",,"2110100040","小微组合贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2110100050",,"房易贷(传统审批模式)",,"2110100050","房易贷(传统审批模式)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2110200010",,"小微车辆抵押类业务",,"2110200010","小微车辆抵押类业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2110200020",,"小微设备抵押类业务",,"2110200020","小微设备抵押类业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2110200030",,"小微船舶抵押类业务",,"2110200030","小微船舶抵押类业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2110200040",,"小微其他抵押类业务",,"2110200040","小微其他抵押类业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2120100010",,"小微核心企业担保类业务",,"2120100010","小微核心企业担保类业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2120100020",,"小微服务管理机构担保类业务",,"2120100020","小微服务管理机构担保类业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2120100030",,"小微专业担保机构担保类业务",,"2120100030","小微专业担保机构担保类业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2120100040",,"小微第三方法人保证类业务",,"2120100040","小微第三方法人保证类业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2120200010",,"小微联保业务",,"2120200010","小微联保业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2120200020",,"小微互保业务",,"2120200020","小微互保业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2120200030",,"小微第三方自然人保证",,"2120200030","小微第三方自然人保证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2120200040",,"小微共同基金担保",,"2120200040","小微共同基金担保",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130100010",,"小微定期存款质押业务",,"2130100010","小微定期存款质押业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130100020",,"小微国债质押业务",,"2130100020","小微国债质押业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130100030",,"小微银行承兑汇票质押业务",,"2130100030","小微银行承兑汇票质押业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130100040",,"小微商业承兑汇票质押业务",,"2130100040","小微商业承兑汇票质押业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130100050",,"小微商铺承租权质押业务",,"2130100050","小微商铺承租权质押业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130100060",,"小微仓单质押业务",,"2130100060","小微仓单质押业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130100070",,"小微其它权利质押类业务",,"2130100070","小微其它权利质押类业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130100080",,"小微车辆经营权质押业务",,"2130100080","小微车辆经营权质押业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130200010",,"小微动产质押(静态)",,"2130200010","小微动产质押(静态)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130200020",,"小微动产质押(浮动)",,"2130200020","小微动产质押(浮动)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2130200030",,"小微动产质押(其他)",,"2130200030","小微动产质押(其他)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2140100",,"小微新一贷",,"2140100","小微新一贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2140150",,"小微流水贷",,"2140150","小微流水贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2140300",,"小微其他信用类业务",,"2140300","小微其他信用类业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2140310",,"小微超市供应商信用授信",,"2140310","小微超市供应商信用授信",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2160100010",,"小微营运车辆按揭",,"2160100010","小微营运车辆按揭",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2160100020",,"小微机械设备按揭",,"2160100020","小微机械设备按揭",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2160100030",,"小微品牌经销商预付款融资(信用)",,"2160100030","小微品牌经销商预付款融资(信用)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2160100040",,"小微品牌经销商预付款融资(保证)",,"2160100040","小微品牌经销商预付款融资(保证)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2170100",,"小微委托贷款",,"2170100","小微委托贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2170200",,"铁路公积金委托贷款",,"2170200","铁路公积金委托贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2180100",,"小微承兑垫款",,"2180100","小微承兑垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2180200",,"小微贴现垫款",,"2180200","小微贴现垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2180300",,"小微担保垫款",,"2180300","小微担保垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2190100",,"担保额度",,"2190100","担保额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2190200",,"目标客户群额度",,"2190200","目标客户群额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2190300",,"其他合作方额度",,"2190300","其他合作方额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"2210100",,"综合授信额度",,"2210100","综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110010",,"流动资金贷款",,"3110010","流动资金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110020",,"法人房产按揭贷款",,"3110020","法人房产按揭贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110030",,"车辆按揭贷款",,"3110030","车辆按揭贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110040",,"设备按揭贷款",,"3110040","设备按揭贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110050",,"其他按揭贷款",,"3110050","其他按揭贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110060",,"基础设施贷款",,"3110060","基础设施贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110070",,"技术改造贷款",,"3110070","技术改造贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110080",,"其他固定资产贷款",,"3110080","其他固定资产贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110090",,"联合贷款",,"3110090","联合贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110100",,"其他贷款",,"3110100","其他贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3110110",,"小微新一贷(取消)",,"3110110","小微新一贷(取消)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3120010",,"委托贷款",,"3120010","委托贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3130010",,"承兑垫款",,"3130010","承兑垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3130020",,"贴现垫款",,"3130020","贴现垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3130030",,"担保垫款",,"3130030","担保垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3140010",,"小微银行承兑汇票贴现",,"3140010","小微银行承兑汇票贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3140020",,"小微商业承兑汇票贴现",,"3140020","小微商业承兑汇票贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3150010",,"银行承兑汇票",,"3150010","银行承兑汇票",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160010010",,"投标保函",,"3160010010","投标保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160010020",,"履约保函",,"3160010020","履约保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160010030",,"预付款保函",,"3160010030","预付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160010040",,"质量与维修保函",,"3160010040","质量与维修保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160010050",,"延期付款保函",,"3160010050","延期付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160010060",,"其他非融资性保函",,"3160010060","其他非融资性保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160010070",,"债务保函",,"3160010070","债务保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160020010",,"借款保函",,"3160020010","借款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160020020",,"融资租赁保函",,"3160020020","融资租赁保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160020030",,"透支保函",,"3160020030","透支保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160020040",,"银行授信额度保函",,"3160020040","银行授信额度保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3160020050",,"其他融资性保函",,"3160020050","其他融资性保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3170010",,"可撤销贷款承诺",,"3170010","可撤销贷款承诺",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3170020",,"不可撤销贷款承诺",,"3170020","不可撤销贷款承诺",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"3170030",,"商票保贴",,"3170030","商票保贴",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"4110010",,"一手楼公积金贷款",,"4110010","一手楼公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"4110020",,"公积金转按揭贷款",,"4110020","公积金转按揭贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"4110030",,"二手楼公积金贷款",,"4110030","二手楼公积金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"4110040",,"公积金建翻修贷款",,"4110040","公积金建翻修贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM000000",,"说明数据",,"CM000000","说明数据",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010010",,"一手楼住房按揭贷款(1年以内,含1年)",,"CM0010010","一手楼住房按揭贷款(1年以内,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010011",,"一手楼住房按揭贷款(1-5年,含5年)",,"CM0010011","一手楼住房按揭贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010012",,"一手楼住房按揭贷款(5-30年,含30年)",,"CM0010012","一手楼住房按揭贷款(5-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010013",,"一手楼住房按揭贷款(1年以下,含1年)",,"CM0010013","一手楼住房按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010014",,"一手楼住房按揭贷款(1-30年,含30年)",,"CM0010014","一手楼住房按揭贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010015",,"一手楼住房按揭贷款(5-30年,含30年)",,"CM0010015","一手楼住房按揭贷款(5-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010016",,"一手楼住房按揭贷款(期供,1年以下,含1年)",,"CM0010016","一手楼住房按揭贷款(期供,1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010017",,"一手楼住房贷款(非期供,1-30年,移行用)",,"CM0010017","一手楼住房贷款(非期供,1-30年,移行用)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010018",,"一手楼非住房贷款(非期供,1-30年,移行用)",,"CM0010018","一手楼非住房贷款(非期供,1-30年,移行用)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010019",,"一手住房固定利率贷款(1-30年)",,"CM0010019","一手住房固定利率贷款(1-30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010020",,"二手房住房按揭贷款(1年以下,含1年)",,"CM0010020","二手房住房按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010021",,"二手楼住房按揭贷款(1-5年,含5年)",,"CM0010021","二手楼住房按揭贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010022",,"二手楼住房按揭贷款(5-30年,含30年)",,"CM0010022","二手楼住房按揭贷款(5-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010023",,"期供类二手住房按揭(1年以下,含1年)",,"CM0010023","期供类二手住房按揭(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010024",,"二手楼住房按揭贷款(1年以下,含1年)",,"CM0010024","二手楼住房按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010025",,"二手楼住房按揭贷款(1-30年,含30年)",,"CM0010025","二手楼住房按揭贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0010026",,"二手楼住房按揭贷款(5-30年,含30年)",,"CM0010026","二手楼住房按揭贷款(5-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0011",,"临时专项额度",,"CM0011","临时专项额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0012",,"同业准入额度",,"CM0012","同业准入额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0013",,"同业代销及其他额度",,"CM0013","同业代销及其他额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0014",,"资产支持证券",,"CM0014","资产支持证券",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0015",,"证券基金透支额度",,"CM0015","证券基金透支额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0016",,"同业投资",,"CM0016","同业投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0017",,"标准化债权",,"CM0017","标准化债权",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0018",,"理财投资",,"CM0018","理财投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0019",,"代销额度",,"CM0019","代销额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020010",,"一手楼商铺、写字楼按揭贷款(6个月-1年,含1年)",,"CM0020010","一手楼商铺、写字楼按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020011",,"一手楼商铺、写字楼按揭贷款(1-3年,含3年)",,"CM0020011","一手楼商铺、写字楼按揭贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020012",,"一手楼商铺、写字楼按揭贷款(3-5年,含5年)",,"CM0020012","一手楼商铺、写字楼按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020013",,"一手楼商铺、写字楼按揭贷款(5-10年,含10年)",,"CM0020013","一手楼商铺、写字楼按揭贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020014",,"一手楼商铺写字楼贷款(期供,1年以下,含1年)",,"CM0020014","一手楼商铺写字楼贷款(期供,1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020015",,"一手楼商铺写字楼按揭贷款(1-30年,含30年)",,"CM0020015","一手楼商铺写字楼按揭贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020016",,"二手楼商铺、写字楼按揭贷款(6个月-1年,含1年)",,"CM0020016","二手楼商铺、写字楼按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020017",,"二手楼商铺、写字楼按揭贷款(1-3年,含3年)",,"CM0020017","二手楼商铺、写字楼按揭贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020018",,"二手楼商铺、写字楼按揭贷款(3-5年,含5年)",,"CM0020018","二手楼商铺、写字楼按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020019",,"二手楼商铺、写字楼按揭贷款(5-10年,含10年)",,"CM0020019","二手楼商铺、写字楼按揭贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020020",,"二手楼商铺写字楼贷款(期供,1年以下,含1年)",,"CM0020020","二手楼商铺写字楼贷款(期供,1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0020021",,"二手楼商铺写字楼按揭贷款(1-30年,含30年)",,"CM0020021","二手楼商铺写字楼按揭贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030010",,"一手楼工业厂房按揭贷款(1年以下,含1年)",,"CM0030010","一手楼工业厂房按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030011",,"一手楼工业厂房按揭贷款(1-30年,含30年)",,"CM0030011","一手楼工业厂房按揭贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030012",,"一手楼工业厂房按揭贷款(3-5年,含5年)",,"CM0030012","一手楼工业厂房按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030013",,"一手楼工业厂房按揭贷款(5-10年,含10年)",,"CM0030013","一手楼工业厂房按揭贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030014",,"一手楼工业厂房按揭贷款(1-3年)",,"CM0030014","一手楼工业厂房按揭贷款(1-3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030015",,"一手楼工业厂房按揭贷款(3-5年)",,"CM0030015","一手楼工业厂房按揭贷款(3-5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030016",,"一手楼工业厂房按揭贷款(5-10年)",,"CM0030016","一手楼工业厂房按揭贷款(5-10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030017",,"二手楼工业厂房按揭贷款(1年以下,含1年)",,"CM0030017","二手楼工业厂房按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030018",,"二手楼工业厂房按揭贷款(1-30年,含30年)",,"CM0030018","二手楼工业厂房按揭贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030019",,"二手楼工业厂房按揭贷款(3-5年,含5年)",,"CM0030019","二手楼工业厂房按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030020",,"二手楼工业厂房按揭贷款(5-10年,含10年)",,"CM0030020","二手楼工业厂房按揭贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030021",,"二手楼工业厂房按揭贷款(1-3年,含3年)",,"CM0030021","二手楼工业厂房按揭贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030022",,"二手楼工业厂房按揭贷款(3-5年,含5年)",,"CM0030022","二手楼工业厂房按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0030023",,"二手楼工业厂房按揭贷款(5-10年,含10年)",,"CM0030023","二手楼工业厂房按揭贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0040010",,"一手楼公积金贷款(1年以下,含1年)",,"CM0040010","一手楼公积金贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0040011",,"一手楼公积金贷款(1年以上)",,"CM0040011","一手楼公积金贷款(1年以上)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0040012",,"一手楼公积金贷款(5-30年,含30年)",,"CM0040012","一手楼公积金贷款(5-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0040013",,"二手楼公积金贷款(1年以下,含1年)",,"CM0040013","二手楼公积金贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0040014",,"二手楼公积金贷款(1年以上)",,"CM0040014","二手楼公积金贷款(1年以上)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0040015",,"二手楼公积金贷款(5-20年,含20年)",,"CM0040015","二手楼公积金贷款(5-20年,含20年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0050010",,"交易类住房转按揭贷款(1年以下,含1年)",,"CM0050010","交易类住房转按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0050011",,"交易类住房转按揭贷款(1-5年,含5年)",,"CM0050011","交易类住房转按揭贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0050012",,"交易类住房转按揭贷款(5-30年,含30年)",,"CM0050012","交易类住房转按揭贷款(5-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0050013",,"交易类住房转按揭贷款(1年以下,含1年)",,"CM0050013","交易类住房转按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0050014",,"交易类住房转按揭贷款(1-30年,含30年)",,"CM0050014","交易类住房转按揭贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0050015",,"交易类住房转按揭贷款(5-30年,含30年)",,"CM0050015","交易类住房转按揭贷款(5-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0060010",,"非交易类住房转按揭贷款(1年以下,含1年)",,"CM0060010","非交易类住房转按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0060011",,"非交易类住房转按揭贷款(1-5年,含5年)",,"CM0060011","非交易类住房转按揭贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0060012",,"非交易类住房转按揭贷款(5-30年,含30年)",,"CM0060012","非交易类住房转按揭贷款(5-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0060013",,"非交易类住房转按揭贷款(1年以下,含1年)",,"CM0060013","非交易类住房转按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0060014",,"非交易类住房转按揭贷款(1-30年,含30年)",,"CM0060014","非交易类住房转按揭贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0060015",,"非交易类住房转按揭贷款(5-30年,含30年)",,"CM0060015","非交易类住房转按揭贷款(5-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0070010",,"交易类商铺、写字楼转按揭贷款(6个月-1年,含1年)",,"CM0070010","交易类商铺、写字楼转按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0070011",,"交易类商铺、写字楼转按揭贷款(1-3年,含3年)",,"CM0070011","交易类商铺、写字楼转按揭贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0070012",,"交易类商铺、写字楼转按揭贷款(3-5年,含5年)",,"CM0070012","交易类商铺、写字楼转按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0070013",,"交易类商铺、写字楼转按揭贷款(5-10年,含10年)",,"CM0070013","交易类商铺、写字楼转按揭贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0070014",,"交易类商铺写字楼按揭贷款(1-30年,含30年)",,"CM0070014","交易类商铺写字楼按揭贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0080010",,"非交易类商铺、写字楼转按揭贷款(6个月-1年,含1年)",,"CM0080010","非交易类商铺、写字楼转按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0080011",,"非交易类商铺、写字楼转按揭贷款(1-3年,含3年)",,"CM0080011","非交易类商铺、写字楼转按揭贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0080012",,"非交易类商铺、写字楼转按揭贷款(3-5年,含5年)",,"CM0080012","非交易类商铺、写字楼转按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0080013",,"非交易类商铺、写字楼转按揭贷款(5-10年,含10年)",,"CM0080013","非交易类商铺、写字楼转按揭贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0080014",,"非交易类商铺写字楼转按揭贷款(1-30年,含30年)",,"CM0080014","非交易类商铺写字楼转按揭贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0090010",,"公积金转按揭贷款(1年以下,含1年)",,"CM0090010","公积金转按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0090011",,"公积金转按揭贷款(1年以上)",,"CM0090011","公积金转按揭贷款(1年以上)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0090012",,"公积金转按揭贷款(5-20年,含20年)",,"CM0090012","公积金转按揭贷款(5-20年,含20年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100001",,"消费类普通住房房产抵押贷款(6个月以下,含6个月)",,"CM0100001","消费类普通住房房产抵押贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100002",,"消费类普通住房房产抵押贷款(6个月-1年,含1年)",,"CM0100002","消费类普通住房房产抵押贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100003",,"期供消费类普通住房抵押贷款(1-3年,含3年)",,"CM0100003","期供消费类普通住房抵押贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100004",,"消费类普通住房抵押贷款(3-5年,含5年)",,"CM0100004","消费类普通住房抵押贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100005",,"消费类普通住房抵押贷款(5-10年,含10年)",,"CM0100005","消费类普通住房抵押贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100006",,"经营性普通住房抵押贷款(6个月以下,含6个月)",,"CM0100006","经营性普通住房抵押贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100007",,"经营性普通住房抵押贷款(6个月-1年,含1年)",,"CM0100007","经营性普通住房抵押贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100008",,"期供经营性普通住房抵押贷款(1-3年,含3年)",,"CM0100008","期供经营性普通住房抵押贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100009",,"经营性普通住房抵押贷款(3-5年,含5年)",,"CM0100009","经营性普通住房抵押贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100010",,"经营性普通住房抵押贷款(5-10年,含10年)",,"CM0100010","经营性普通住房抵押贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100011",,"非期供消费类普通住房抵押贷款(1-10年,含10年)",,"CM0100011","非期供消费类普通住房抵押贷款(1-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100012",,"非期供经营性普通住房抵押贷款(1-10年,含10年)",,"CM0100012","非期供经营性普通住房抵押贷款(1-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100013",,"期供消费类住房抵押贷款(1年以内)",,"CM0100013","期供消费类住房抵押贷款(1年以内)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100014",,"期供经营性住房抵押贷款(1年以内)",,"CM0100014","期供经营性住房抵押贷款(1年以内)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100015",,"非期供消费类住房抵押贷款(1年以内)",,"CM0100015","非期供消费类住房抵押贷款(1年以内)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100016",,"非期供经营性住房抵押贷款(1年以内)",,"CM0100016","非期供经营性住房抵押贷款(1年以内)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100017",,"期供消费类住房抵押贷款(1-30年,含30年)",,"CM0100017","期供消费类住房抵押贷款(1-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100018",,"期供经营性住房抵押贷款(1-10年,含10年)",,"CM0100018","期供经营性住房抵押贷款(1-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100019",,"消费类其他房产抵押贷款(6个月以下,含6个月)",,"CM0100019","消费类其他房产抵押贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100020",,"消费类其他房产抵押贷款(6个月-1年,含1年)",,"CM0100020","消费类其他房产抵押贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100021",,"期供消费类其他房产抵押贷款(1-3年,含3年)",,"CM0100021","期供消费类其他房产抵押贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100022",,"非期供消费类其他房产抵押贷款(1-10年,含10年)",,"CM0100022","非期供消费类其他房产抵押贷款(1-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100023",,"消费类其他房产抵押贷款(3-5年,含5年)",,"CM0100023","消费类其他房产抵押贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100024",,"消费类其他房产抵押贷款(5-10年,含10年)",,"CM0100024","消费类其他房产抵押贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100025",,"经营性其他房产抵押贷款(6个月以下,含6个月)",,"CM0100025","经营性其他房产抵押贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100026",,"经营性其他房产抵押贷款(6个月-1年,含1年)",,"CM0100026","经营性其他房产抵押贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100027",,"期供经营性其他房产抵押贷款(1-3年,含3年)",,"CM0100027","期供经营性其他房产抵押贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100028",,"非期供经营性其他房产抵押贷款(1-10年,含10年)",,"CM0100028","非期供经营性其他房产抵押贷款(1-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100029",,"经营性其他房产抵押贷款(3-5年,含5年)",,"CM0100029","经营性其他房产抵押贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100030",,"经营性其他房产抵押贷款(5-10年,含10年)",,"CM0100030","经营性其他房产抵押贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100031",,"期供消费类其他房产抵押贷款(1年以内)",,"CM0100031","期供消费类其他房产抵押贷款(1年以内)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100032",,"期供经营性其他房产抵押贷款(1年以内)",,"CM0100032","期供经营性其他房产抵押贷款(1年以内)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100033",,"非期供消费类其他房产抵押贷款(1年以下)",,"CM0100033","非期供消费类其他房产抵押贷款(1年以下)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100034",,"非期供经营性其他房产抵押贷款(1年以下)",,"CM0100034","非期供经营性其他房产抵押贷款(1年以下)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100035",,"期供消费类其他房产抵押贷款(1-10年,含10年)",,"CM0100035","期供消费类其他房产抵押贷款(1-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100036",,"期供经营性其他房产抵押贷款(1-10年,含10年)",,"CM0100036","期供经营性其他房产抵押贷款(1-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100037",,"质押助学贷款(6个月以下,含6个月)",,"CM0100037","质押助学贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100038",,"质押助学贷款(6个月-1年,含1年)",,"CM0100038","质押助学贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100039",,"期供类质押助学贷款(1-5年,含5年)",,"CM0100039","期供类质押助学贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100040",,"期供类存单、国债质押助学贷款(3-5年,含5年)",,"CM0100040","期供类存单、国债质押助学贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100041",,"非期供类质押助学贷款(1-5年,含5年)",,"CM0100041","非期供类质押助学贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100042",,"非期供类存单、国债质押助学贷款(3-5年,含5年)",,"CM0100042","非期供类存单、国债质押助学贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100043",,"质押消费贷款(6个月以下,含6个月)",,"CM0100043","质押消费贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100044",,"质押消费贷款(6个月-1年,含1年)",,"CM0100044","质押消费贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100045",,"期供类质押消费贷款(1-3年,含3年)",,"CM0100045","期供类质押消费贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100046",,"期供类质押消费贷款(3-5年,含5年)",,"CM0100046","期供类质押消费贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100047",,"非期供类质押消费贷款(1-3年,含3年)",,"CM0100047","非期供类质押消费贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100048",,"非期供质押消费贷款(3-5年,含5年)",,"CM0100048","非期供质押消费贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100049",,"质押经营贷款(1年以内)",,"CM0100049","质押经营贷款(1年以内)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100050",,"期供质押经营贷款(1-5年,含5年)",,"CM0100050","期供质押经营贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100051",,"非期供质押经营贷款(1-5年,含5年)",,"CM0100051","非期供质押经营贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100052",,"出国留学保证贷款(6个月以下,含6个月)",,"CM0100052","出国留学保证贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100053",,"出国留学保证贷款(6个月-1年,含1年)",,"CM0100053","出国留学保证贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100054",,"保单质押贷款(6个月以下,含6个月)",,"CM0100054","保单质押贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100055",,"保单质押贷款(6个月-1年,含1年)",,"CM0100055","保单质押贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100056",,"经营类保单质押贷款(1-3年,含3年)",,"CM0100056","经营类保单质押贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100057",,"出租车营运证质押贷款(6个月以下,含6个月)",,"CM0100057","出租车营运证质押贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100058",,"出租车营运证质押贷款(6个月-1年,含1年)",,"CM0100058","出租车营运证质押贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100059",,"出租车营运证质押贷款(1-3年,含3年)",,"CM0100059","出租车营运证质押贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100060",,"消费类个人保证贷款(6个月以下,含6个月)",,"CM0100060","消费类个人保证贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100061",,"消费类个人保证贷款(6个月-1年,含1年)",,"CM0100061","消费类个人保证贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100062",,"消费类个人保证贷款(1-2年,含2年)",,"CM0100062","消费类个人保证贷款(1-2年,含2年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100063",,"展业类个人保证贷款(6个月以下,含6个月)",,"CM0100063","展业类个人保证贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100064",,"展业类个人保证贷款(6个月-1年,含1年)",,"CM0100064","展业类个人保证贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100065",,"展业类个人保证贷款(1-5年,含5年)",,"CM0100065","展业类个人保证贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100066",,"消费类个人保证贷款(1-5年,含5年)",,"CM0100066","消费类个人保证贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100067",,"非期供消费类个人保证贷款(1-5年,含5年)",,"CM0100067","非期供消费类个人保证贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100068",,"非期供展业类个人保证贷款(1-5年,含5年)",,"CM0100068","非期供展业类个人保证贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100069",,"消费类专业担保公司保证贷款(6月以下,含6个月)",,"CM0100069","消费类专业担保公司保证贷款(6月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100070",,"消费类专业担保公司保证贷款(6个月-1年,含1年)",,"CM0100070","消费类专业担保公司保证贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100071",,"消费类专业担保公司保证贷款(1-2年,含2年)",,"CM0100071","消费类专业担保公司保证贷款(1-2年,含2年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100072",,"展业类专业担保公司保证贷款(6个月以下,含6个月)",,"CM0100072","展业类专业担保公司保证贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100073",,"展业类专业担保公司保证贷款(6个月-1年,含1年)",,"CM0100073","展业类专业担保公司保证贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100074",,"展业类专业担保公司保证贷款(1-2年,含2年)",,"CM0100074","展业类专业担保公司保证贷款(1-2年,含2年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100075",,"消费类个人信用贷款(6个月以下,含6个月)",,"CM0100075","消费类个人信用贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100076",,"消费类个人信用贷款(6个月-1年,含1年)",,"CM0100076","消费类个人信用贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100077",,"消费类个人信用贷款(期供,1-3年,含3年)",,"CM0100077","消费类个人信用贷款(期供,1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100078",,"展业类个人信用贷款(6个月-1年,含1年)",,"CM0100078","展业类个人信用贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100079",,"消费类个人信用贷款(非期供,1-3年,含3年)",,"CM0100079","消费类个人信用贷款(非期供,1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100080",,"期供履约类一手车按揭贷款(6个月以下,含6个月)",,"CM0100080","期供履约类一手车按揭贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100081",,"期供履约类一手车按揭贷款(6个月-1年,含1年)",,"CM0100081","期供履约类一手车按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100082",,"履约类一手车按揭贷款(1-3年,含3年)",,"CM0100082","履约类一手车按揭贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100083",,"履约类一手车按揭贷款(3-5年,含5年)",,"CM0100083","履约类一手车按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100084",,"期供抵押类一手车按揭贷款(6个月以下,含6个月)",,"CM0100084","期供抵押类一手车按揭贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100085",,"期供抵押类一手车按揭贷款(6个月-1年,含1年)",,"CM0100085","期供抵押类一手车按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100086",,"抵押类一手车按揭贷款(1-3年,含3年)",,"CM0100086","抵押类一手车按揭贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100087",,"抵押类一手车按揭贷款(3-5年,含5年)",,"CM0100087","抵押类一手车按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100088",,"非期供履约类一手车贷款(6个月以下,含6个月)",,"CM0100088","非期供履约类一手车贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100089",,"非期供履约类一手车贷款(6个月-1年,含1年)",,"CM0100089","非期供履约类一手车贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100090",,"非期供抵押类一手车贷款(6个月以下,含6个月)",,"CM0100090","非期供抵押类一手车贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100091",,"非期供抵押类一手车贷款(6个月-1年,含1年)",,"CM0100091","非期供抵押类一手车贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100092",,"抵押类一手车按揭贷款(1-5年,含5年)",,"CM0100092","抵押类一手车按揭贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100093",,"抵押类一手车按揭贷款(非期供,1-5年,含5年)",,"CM0100093","抵押类一手车按揭贷款(非期供,1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100094",,"期供履约类二手车按揭贷款(6个月以下,含6个月)",,"CM0100094","期供履约类二手车按揭贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100095",,"期供履约类二手车按揭贷款(6个月-1年,含1年)",,"CM0100095","期供履约类二手车按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100096",,"履约类二手车按揭贷款(1-3年,含3年)",,"CM0100096","履约类二手车按揭贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100097",,"履约类二手车按揭贷款(3-5年,含5年)",,"CM0100097","履约类二手车按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100098",,"期供抵押类二手车按揭货款(6个月以下,含6个月)",,"CM0100098","期供抵押类二手车按揭货款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100099",,"期供抵押类二手车按揭贷款(6个月-1年,含1年)",,"CM0100099","期供抵押类二手车按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100100",,"抵押类二手车按揭贷款(1-5年,含5年)",,"CM0100100","抵押类二手车按揭贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100101",,"抵押类二手车按揭贷款(3-5年,含5年)",,"CM0100101","抵押类二手车按揭贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100102",,"非期供履约类二手车贷款(6个月以下,含6个月)",,"CM0100102","非期供履约类二手车贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100103",,"非期供履约类二手车贷款(6个月-1年,含1年)",,"CM0100103","非期供履约类二手车贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100104",,"非期供抵押类二手车贷款(6个月以下,含6个月)",,"CM0100104","非期供抵押类二手车贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100105",,"非期供抵押类二手车贷款(6个月-1年,含1年)",,"CM0100105","非期供抵押类二手车贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100106",,"个人委托贷款(6个月以下,含6个月)",,"CM0100106","个人委托贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100107",,"个人委托贷款(6个月-1年,含1年)",,"CM0100107","个人委托贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100108",,"期供类个人委托贷款(1-3年,含3年)",,"CM0100108","期供类个人委托贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100109",,"期供类个人委托贷款(3-5年,含5年)",,"CM0100109","期供类个人委托贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100110",,"非期供类个人委托贷款(1-3年,含3年)",,"CM0100110","非期供类个人委托贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100111",,"非期供类个人委托贷款(3-5年,含5年)",,"CM0100111","非期供类个人委托贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100112",,"个人助学财政贴息教育贷款(6个月以下,含6个月)",,"CM0100112","个人助学财政贴息教育贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100113",,"个人助学财政贴息教育贷款(6个月-1年,含1年)",,"CM0100113","个人助学财政贴息教育贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100114",,"个人助学财政贴息教育贷款(1-3年,含3年)",,"CM0100114","个人助学财政贴息教育贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100115",,"个人助学财政贴息教育贷款(3-5年,含5年)",,"CM0100115","个人助学财政贴息教育贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100116",,"个人助学财政贴息教育贷款(5-10年,含10年)",,"CM0100116","个人助学财政贴息教育贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100117",,"个人商业助学贷款(6个月以下,含6个月)",,"CM0100117","个人商业助学贷款(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100118",,"个人商业助学贷款(6个月-1年,含1年)",,"CM0100118","个人商业助学贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100119",,"个人商业助学贷款(1-3年,含3年)",,"CM0100119","个人商业助学贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100120",,"个人商业助学贷款(3-5年,含5年)",,"CM0100120","个人商业助学贷款(3-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100121",,"个人商业助学贷款(5-10年,含10年)",,"CM0100121","个人商业助学贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100122",,"个人商业助学贷款(1-10年,含10年)",,"CM0100122","个人商业助学贷款(1-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100123",,"村民致富贷款(1年以下,含1年)",,"CM0100123","村民致富贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100124",,"村民致富贷款(6个月-1年,含1年)",,"CM0100124","村民致富贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100125",,"期供类村民致富贷款(1-5年,含5年)",,"CM0100125","期供类村民致富贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100126",,"非期供类村民致富贷款(1-5年,含5年)",,"CM0100126","非期供类村民致富贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100127",,"期供保证金类工程设备车辆按揭(6个月以下,含6个月)",,"CM0100127","期供保证金类工程设备车辆按揭(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100128",,"期供保证金类工程设备车辆按揭贷款(6个月-1年,含1年)",,"CM0100128","期供保证金类工程设备车辆按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100129",,"保证金类工程设备车辆按揭贷款(1-3年,含3年)",,"CM0100129","保证金类工程设备车辆按揭贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100130",,"非期供保证金类工程设备车辆按揭(6个月以下,含6个月)",,"CM0100130","非期供保证金类工程设备车辆按揭(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100131",,"非期供保证金类工程设备车辆按揭贷款(6个月-1年,含1年)",,"CM0100131","非期供保证金类工程设备车辆按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100132",,"期供抵押类工程设备车辆按揭(6个月以下,含6个月)",,"CM0100132","期供抵押类工程设备车辆按揭(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100133",,"期供抵押类工程设备车辆按揭贷款(6个月-1年,含1年)",,"CM0100133","期供抵押类工程设备车辆按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100134",,"非期供抵押类工程设备车辆按揭(6个月以下,含6个月)",,"CM0100134","非期供抵押类工程设备车辆按揭(6个月以下,含6个月)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100135",,"非期供抵押类工程设备车辆按揭贷款(6个月-1年,含1年)",,"CM0100135","非期供抵押类工程设备车辆按揭贷款(6个月-1年,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0100136",,"工程设备车辆抵押贷款(1-3年,含3年)",,"CM0100136","工程设备车辆抵押贷款(1-3年,含3年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200010",,"一手楼行内员工按揭贷款(1年以下,含1年)",,"CM0200010","一手楼行内员工按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200011",,"一手楼行内员工按揭贷款(5-10年,含10年)",,"CM0200011","一手楼行内员工按揭贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200012",,"一手楼行内员工按揭贷款(10-30年,含30年)",,"CM0200012","一手楼行内员工按揭贷款(10-30年,含30年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200013",,"二手楼行内员工按揭贷款(1年以下,含1年)",,"CM0200013","二手楼行内员工按揭贷款(1年以下,含1年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200014",,"二手楼行内员工按揭贷款(5-10年,含10年)",,"CM0200014","二手楼行内员工按揭贷款(5-10年,含10年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200015",,"二手楼行内员工按揭贷款(10-15年,含15年)",,"CM0200015","二手楼行内员工按揭贷款(10-15年,含15年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200016",,"一手楼员工按揭贷款(1-5年,含5年)",,"CM0200016","一手楼员工按揭贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200017",,"二手楼员工按揭贷款(1-5年,含5年)",,"CM0200017","二手楼员工按揭贷款(1-5年,含5年)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200018",,"行内员工按揭贷款(1年以下,含1年,正常利率)",,"CM0200018","行内员工按揭贷款(1年以下,含1年,正常利率)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200019",,"行内员工按揭贷款(1-5年,含5年,正常利率)",,"CM0200019","行内员工按揭贷款(1-5年,含5年,正常利率)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200020",,"行内员工按揭贷款(5-30年,含30年,正常利率)",,"CM0200020","行内员工按揭贷款(5-30年,含30年,正常利率)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0200021",,"行内员工按揭贷款(1-30年,含30年,正常利率)",,"CM0200021","行内员工按揭贷款(1-30年,含30年,正常利率)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300010",,"一手楼商铺、写字楼综合授信额度",,"CM0300010","一手楼商铺、写字楼综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300011",,"一手楼工业厂房按揭综合授信额度",,"CM0300011","一手楼工业厂房按揭综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300012",,"二手楼住房按揭综合授信额度",,"CM0300012","二手楼住房按揭综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300013",,"二手楼商铺、写字楼按揭综合授信额度",,"CM0300013","二手楼商铺、写字楼按揭综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300014",,"二手楼工业厂房按揭综合授信额度",,"CM0300014","二手楼工业厂房按揭综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300015",,"普通住房抵押综合授信额度",,"CM0300015","普通住房抵押综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300016",,"存单国债质押综合授信",,"CM0300016","存单国债质押综合授信",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300017",,"保单质押综合授信额度",,"CM0300017","保单质押综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300018",,"个人保证综合授信额度",,"CM0300018","个人保证综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300019",,"专业担保公司担保综合授信额度",,"CM0300019","专业担保公司担保综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300020",,"个人信用综合授信额度",,"CM0300020","个人信用综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300021",,"其他房产抵押综合授信额度",,"CM0300021","其他房产抵押综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM0300022",,"非交易转按揭额度",,"CM0300022","非交易转按揭额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010010",,"流动资金贷款",,"CM1010010","流动资金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010020",,"法人账户透支业务",,"CM1010020","法人账户透支业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010025",,"企业网上自由贷",,"CM1010025","企业网上自由贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010040",,"出口退税帐户托管贷款",,"CM1010040","出口退税帐户托管贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010050",,"外贸专项贷款",,"CM1010050","外贸专项贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010060",,"外贸发展基金贷款",,"CM1010060","外贸发展基金贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010070",,"小额信用贷款",,"CM1010070","小额信用贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010073",,"标准房地产抵押贷款",,"CM1010073","标准房地产抵押贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010077",,"担保公司担保贷款",,"CM1010077","担保公司担保贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010080",,"联保贷款",,"CM1010080","联保贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010090",,"保费贷款",,"CM1010090","保费贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1010100",,"外汇储备委托贷款",,"CM1010100","外汇储备委托贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1020010",,"单位房产按揭",,"CM1020010","单位房产按揭",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1020020",,"单位汽车按揭",,"CM1020020","单位汽车按揭",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1020030",,"单位设备按揭",,"CM1020030","单位设备按揭",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1020040",,"其他法人按揭",,"CM1020040","其他法人按揭",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1025",,"经营性物业抵押贷款",,"CM1025","经营性物业抵押贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1030010010",,"基础设施贷款",,"CM1030010010","基础设施贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1030010020",,"其他固定资产贷款",,"CM1030010020","其他固定资产贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1038010",,"并购贷款",,"CM1038010","并购贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1038020",,"其他类项目贷款",,"CM1038020","其他类项目贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1040010",,"房地产开发贷款",,"CM1040010","房地产开发贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1040020",,"土地储备项目贷款",,"CM1040020","土地储备项目贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1050010",,"直接银团(项目类)",,"CM1050010","直接银团(项目类)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1050015",,"直接银团(非项目类)",,"CM1050015","直接银团(非项目类)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1050020",,"行内银团",,"CM1050020","行内银团",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1050030",,"间接银团",,"CM1050030","间接银团",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1060010",,"短期融资券授信主承销",,"CM1060010","短期融资券授信主承销",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1060020",,"短期融资券授信分销",,"CM1060020","短期融资券授信分销",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1070010",,"联合贷款",,"CM1070010","联合贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1080010",,"外国政府转贷款",,"CM1080010","外国政府转贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM10901",,"垫款业务",,"CM10901","垫款业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190010",,"保函垫款",,"CM1190010","保函垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190020",,"承兑汇票垫款",,"CM1190020","承兑汇票垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190030",,"信用证垫款",,"CM1190030","信用证垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190040",,"保理垫款",,"CM1190040","保理垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190050",,"其他垫款",,"CM1190050","其他垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190060",,"贴现垫款",,"CM1190060","贴现垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190070",,"代付垫款",,"CM1190070","代付垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190080",,"黄金租赁垫款",,"CM1190080","黄金租赁垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190090",,"贵金属期权垫款",,"CM1190090","贵金属期权垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190100",,"贵金属远期垫款",,"CM1190100","贵金属远期垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190110",,"外汇期权垫款",,"CM1190110","外汇期权垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190120",,"利率互换垫款",,"CM1190120","利率互换垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190130",,"外汇垫款",,"CM1190130","外汇垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM1190140",,"同业保函垫款",,"CM1190140","同业保函垫款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM2010010",,"银行承兑汇票贴现",,"CM2010010","银行承兑汇票贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM2010020",,"商业承兑汇票贴现",,"CM2010020","商业承兑汇票贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM2010030",,"商票保贴",,"CM2010030","商票保贴",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010010",,"综合授信额度",,"CM3010010","综合授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010015",,"低风险额度",,"CM3010015","低风险额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010020",,"对公单项授信额度",,"CM3010020","对公单项授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010021",,"对公网银循环贷款额度",,"CM3010021","对公网银循环贷款额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010025010",,"债承额度",,"CM3010025010","债承额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010025020",,"非债承额度",,"CM3010025020","非债承额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010025030",,"交易撮合额度",,"CM3010025030","交易撮合额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010030",,"透支额度",,"CM3010030","透支额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010040",,"法人授信额度",,"CM3010040","法人授信额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010050",,"法人委托额度",,"CM3010050","法人委托额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010056",,"工程类保函额度",,"CM3010056","工程类保函额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010057",,"一贷通额度",,"CM3010057","一贷通额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010060010",,"企业车辆保费贷款额度",,"CM3010060010","企业车辆保费贷款额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3010060020",,"企业财产保费贷款额度",,"CM3010060020","企业财产保费贷款额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020001",,"厂商额度",,"CM3020001","厂商额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020002",,"仓储方",,"CM3020002","仓储方",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020003",,"监管方额度",,"CM3020003","监管方额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020010",,"楼宇按揭贷款额度",,"CM3020010","楼宇按揭贷款额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020020",,"商用车辆按揭额度",,"CM3020020","商用车辆按揭额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020030",,"家用车辆按揭额度",,"CM3020030","家用车辆按揭额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020040",,"员工持股贷款额度",,"CM3020040","员工持股贷款额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020050",,"担保额度",,"CM3020050","担保额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020060",,"其他按揭额度",,"CM3020060","其他按揭额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020070",,"国内买方信贷额度",,"CM3020070","国内买方信贷额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020080",,"商业承兑汇票保贴额度(已停用)",,"CM3020080","商业承兑汇票保贴额度(已停用)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020090",,"助学贷款额度",,"CM3020090","助学贷款额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020095",,"其他他用个人贷款额度",,"CM3020095","其他他用个人贷款额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020096",,"专业担保公司担保额度(零售客户专用\,全程担保)",,"CM3020096","专业担保公司担保额度(零售客户专用\,全程担保)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020098",,"委托贴现委托人额度",,"CM3020098","委托贴现委托人额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3020099",,"委托贷款委托人额度",,"CM3020099","委托贷款委托人额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3040010",,"预支价金——卖方额度",,"CM3040010","预支价金——卖方额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3040020",,"买方额度",,"CM3040020","买方额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3040030",,"保理授信——卖方额度",,"CM3040030","保理授信——卖方额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3050010",,"债劵发行人额度",,"CM3050010","债劵发行人额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM3050020",,"交易对手额度",,"CM3050020","交易对手额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM4010010",,"银行承兑汇票业务",,"CM4010010","银行承兑汇票业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM4010015",,"企业网上自由票",,"CM4010015","企业网上自由票",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM4010020",,"代开银票业务",,"CM4010020","代开银票业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM4010025",,"代同业开银承",,"CM4010025","代同业开银承",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010005",,"商票保贴",,"CM5010005","商票保贴",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010001",,"商票付款保函",,"CM5010010001","商票付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010002",,"电子商票保证",,"CM5010010002","电子商票保证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010003",,"电票自由保证",,"CM5010010003","电票自由保证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010010",,"借款保函",,"CM5010010010","借款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010020",,"租金保付保函",,"CM5010010020","租金保付保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010030",,"海关税费保函",,"CM5010010030","海关税费保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010040",,"预付款保函",,"CM5010010040","预付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010050",,"分期付款保函",,"CM5010010050","分期付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010060",,"投标保函",,"CM5010010060","投标保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010070",,"履约保函",,"CM5010010070","履约保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010080",,"工程承包保函",,"CM5010010080","工程承包保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010090",,"工程维修保函",,"CM5010010090","工程维修保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010100",,"质量保函",,"CM5010010100","质量保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010110",,"付款保函",,"CM5010010110","付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010120",,"财产保全保函",,"CM5010010120","财产保全保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010130",,"透支归还保函",,"CM5010010130","透支归还保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010140",,"补偿贸易保函",,"CM5010010140","补偿贸易保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010150",,"留置金保函",,"CM5010010150","留置金保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010160",,"加工装配业务进口保函",,"CM5010010160","加工装配业务进口保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010170",,"不可撤销支付保函(建设局)",,"CM5010010170","不可撤销支付保函(建设局)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010010180",,"其他类保函",,"CM5010010180","其他类保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010020",,"备用信用证(境内)",,"CM5010020","备用信用证(境内)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010030",,"CDO",,"CM5010030","CDO",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010040010",,"一般债券发行担保",,"CM5010040010","一般债券发行担保",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5010040020",,"可转换债券担保",,"CM5010040020","可转换债券担保",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5020020",,"贷款承诺",,"CM5020020","贷款承诺",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5020030",,"贷款意向书",,"CM5020030","贷款意向书",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM5020040",,"银行信贷证明",,"CM5020040","银行信贷证明",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM6010010",,"委托贷款",,"CM6010010","委托贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM6010020",,"委托贴现",,"CM6010020","委托贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM6010030",,"非标委托贷款",,"CM6010030","非标委托贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7010010",,"一般信用证开证",,"CM7010010","一般信用证开证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7010020",,"背对背信用证",,"CM7010020","背对背信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7010030",,"未来货权质押开证",,"CM7010030","未来货权质押开证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM701004",,"信用证转承兑",,"CM701004","信用证转承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7020010",,"进口信用证押汇",,"CM7020010","进口信用证押汇",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7020020",,"进口代收押汇",,"CM7020020","进口代收押汇",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7020030",,"进口T/T押汇",,"CM7020030","进口T/T押汇",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7030010",,"出口信用证押汇",,"CM7030010","出口信用证押汇",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7030040",,"出口托收押汇",,"CM7030040","出口托收押汇",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7030050",,"出口T/T押汇",,"CM7030050","出口T/T押汇",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7040",,"打包放款",,"CM7040","打包放款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7050010",,"付款保函",,"CM7050010","付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7050020",,"投标保函",,"CM7050020","投标保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7050030",,"工程维修保函",,"CM7050030","工程维修保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7050040",,"预付款保函",,"CM7050040","预付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7050050",,"履约保函",,"CM7050050","履约保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7050060",,"融资保函",,"CM7050060","融资保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7050070",,"其他保函",,"CM7050070","其他保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7050080",,"备用信用证(跨境)",,"CM7050080","备用信用证(跨境)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7050090",,"对外保函",,"CM7050090","对外保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7060",,"福费廷",,"CM7060","福费廷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7070010",,"进口代付业务信用证代付",,"CM7070010","进口代付业务信用证代付",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7070020",,"进口代付业务托收代付",,"CM7070020","进口代付业务托收代付",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7070030",,"进口代付业务汇款代付",,"CM7070030","进口代付业务汇款代付",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7080",,"外币票据贴现",,"CM7080","外币票据贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7085",,"国际保理代付",,"CM7085","国际保理代付",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090010",,"出口商业发票贴现",,"CM7090010","出口商业发票贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010010",,"出口保理预支价金",,"CM7090030010010","出口保理预支价金",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010012",,"后收息出口保理预支价金(线上化)",,"CM7090030010012","后收息出口保理预支价金(线上化)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010013",,"预收息出口保理预支价金(线上化)",,"CM7090030010013","预收息出口保理预支价金(线上化)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010020",,"出口保理贷款",,"CM7090030010020","出口保理贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010030",,"出口保理承兑",,"CM7090030010030","出口保理承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010040",,"出口保理贴现",,"CM7090030010040","出口保理贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010050",,"出口保理开进口信用证",,"CM7090030010050","出口保理开进口信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010060",,"出口保理开出口信用证",,"CM7090030010060","出口保理开出口信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010070",,"出口保理保函",,"CM7090030010070","出口保理保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010080",,"出口保理预付款融资-有追",,"CM7090030010080","出口保理预付款融资-有追",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030010090",,"出口保理预付款融资-无追",,"CM7090030010090","出口保理预付款融资-无追",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090030020",,"买方保理",,"CM7090030020","买方保理",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040010010",,"有追索权预支价金(后收息)",,"CM7090040010010","有追索权预支价金(后收息)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040010020",,"有追索权贷款",,"CM7090040010020","有追索权贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040010030",,"有追索权承兑",,"CM7090040010030","有追索权承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040010040",,"有追索权贴现",,"CM7090040010040","有追索权贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040010050",,"有追索权开进口信用证",,"CM7090040010050","有追索权开进口信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040010060",,"有追索权开出口信用证",,"CM7090040010060","有追索权开出口信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040010070",,"有追索权保函",,"CM7090040010070","有追索权保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040010080",,"有追索权预支价金(预收息)",,"CM7090040010080","有追索权预支价金(预收息)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040020010",,"无追索权预支价金(后收息)",,"CM7090040020010","无追索权预支价金(后收息)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040020020",,"无追索权贷款",,"CM7090040020020","无追索权贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040020030",,"无追索权承兑",,"CM7090040020030","无追索权承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040020040",,"无追索权贴现",,"CM7090040020040","无追索权贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040020050",,"无追索权开进口信用证",,"CM7090040020050","无追索权开进口信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040020060",,"无追索权开出口信用证",,"CM7090040020060","无追索权开出口信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040020070",,"无追索权保函",,"CM7090040020070","无追索权保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7090040020080",,"无追索权预支价金(预收息)",,"CM7090040020080","无追索权预支价金(预收息)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7100010",,"出口应收账款池融资贷款",,"CM7100010","出口应收账款池融资贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7100020",,"出口应收账款池融资承兑",,"CM7100020","出口应收账款池融资承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7100030",,"出口应收账款池融资开证",,"CM7100030","出口应收账款池融资开证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7100040",,"出口应收账款池融资国内保函",,"CM7100040","出口应收账款池融资国内保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7100050",,"出口应收账款池融资对外保函",,"CM7100050","出口应收账款池融资对外保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7110010",,"出口发票池融资贷款",,"CM7110010","出口发票池融资贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7110020",,"出口发票池融资开证",,"CM7110020","出口发票池融资开证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7110030",,"出口发票池融资承兑",,"CM7110030","出口发票池融资承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7110040",,"出口发票池融资国内保函",,"CM7110040","出口发票池融资国内保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7110050",,"出口发票池融资对外保函",,"CM7110050","出口发票池融资对外保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7120",,"提货担保",,"CM7120","提货担保",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7130010",,"出口代付业务信用证代付",,"CM7130010","出口代付业务信用证代付",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7130020",,"出口代付业务托收代付",,"CM7130020","出口代付业务托收代付",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7130030",,"出口代付业务汇款代付",,"CM7130030","出口代付业务汇款代付",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7900010",,"(进口)买方信贷",,"CM7900010","(进口)买方信贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM7900020",,"卖方信贷",,"CM7900020","卖方信贷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8010010",,"开立国内信用证",,"CM8010010","开立国内信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8010020",,"卖方押汇",,"CM8010020","卖方押汇",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8010030",,"买方押汇",,"CM8010030","买方押汇",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8010040",,"国内信用证项下打包放款",,"CM8010040","国内信用证项下打包放款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8010050",,"国内信用证代付",,"CM8010050","国内信用证代付",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8010060",,"国内信用证议付",,"CM8010060","国内信用证议付",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8010070",,"国内信用证项下贴现",,"CM8010070","国内信用证项下贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8010075",,"国内信用证福费廷",,"CM8010075","国内信用证福费廷",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050010010",,"有追索权预支价金(已停用)",,"CM8050010010","有追索权预支价金(已停用)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050010011",,"有追索权预支价金(线上供应链)",,"CM8050010011","有追索权预支价金(线上供应链)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050010012",,"后收息有追索权预支价金(线上化)",,"CM8050010012","后收息有追索权预支价金(线上化)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050010013",,"预收息有追索权预支价金(线上化)",,"CM8050010013","预收息有追索权预支价金(线上化)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050010020",,"有追索权贷款",,"CM8050010020","有追索权贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050010030",,"有追索权承兑",,"CM8050010030","有追索权承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050010040",,"有追索权贴现",,"CM8050010040","有追索权贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050010050",,"有追索权开进口信用证",,"CM8050010050","有追索权开进口信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050010060",,"有追索权开国内信用证",,"CM8050010060","有追索权开国内信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050010070",,"有追索权保函",,"CM8050010070","有追索权保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050020010",,"无追索权预支价金(已停用)",,"CM8050020010","无追索权预支价金(已停用)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050020011",,"无追索权预支价金(线上供应链)",,"CM8050020011","无追索权预支价金(线上供应链)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050020012",,"后收息无追索权预支价金(线上化)",,"CM8050020012","后收息无追索权预支价金(线上化)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050020013",,"预收息无追索权预支价金(线上化)",,"CM8050020013","预收息无追索权预支价金(线上化)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050020020",,"无追索权贷款",,"CM8050020020","无追索权贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050020030",,"无追索权承兑",,"CM8050020030","无追索权承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050020040",,"无追索权贴现",,"CM8050020040","无追索权贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050020050",,"无追索权开进口信用证",,"CM8050020050","无追索权开进口信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050020060",,"无追索权开国内信用证",,"CM8050020060","无追索权开国内信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050020070",,"无追索权保函",,"CM8050020070","无追索权保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8050030",,"国内再保理",,"CM8050030","国内再保理",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8100020",,"国内保理应收账款池融资贷款",,"CM8100020","国内保理应收账款池融资贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8100030",,"国内保理应收账款池融资承兑",,"CM8100030","国内保理应收账款池融资承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8100040",,"国内保理应收账款池融资贴现",,"CM8100040","国内保理应收账款池融资贴现",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8100050",,"国内保理应收账款池融资开进口信用证",,"CM8100050","国内保理应收账款池融资开进口信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8100060",,"国内保理应收账款池融资开国内信用证",,"CM8100060","国内保理应收账款池融资开国内信用证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM8100070",,"国内保理应收账款池融资保函",,"CM8100070","国内保理应收账款池融资保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9020",,"债权减免",,"CM9020","债权减免",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9030",,"不良资产移交",,"CM9030","不良资产移交",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9040",,"不良资产逆移交",,"CM9040","不良资产逆移交",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9060010",,"诉前保全",,"CM9060010","诉前保全",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9060020",,"起诉(诉讼保全)",,"CM9060020","起诉(诉讼保全)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9060030",,"上诉申请",,"CM9060030","上诉申请",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9060040",,"申诉申请",,"CM9060040","申诉申请",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9060050",,"执行申请",,"CM9060050","执行申请",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9060060",,"和解申请",,"CM9060060","和解申请",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9060070",,"撤诉申请",,"CM9060070","撤诉申请",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9060080",,"支付令申请",,"CM9060080","支付令申请",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9060090",,"其他事项申请",,"CM9060090","其他事项申请",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9070",,"抵债资产抵入",,"CM9070","抵债资产抵入",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9085005",,"抵债资产处置",,"CM9085005","抵债资产处置",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9085010",,"抵债资产出租",,"CM9085010","抵债资产出租",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9085025",,"抵债资产退租",,"CM9085025","抵债资产退租",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9090",,"呆帐认定",,"CM9090","呆帐认定",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9120000",,"委托律师台账",,"CM9120000","委托律师台账",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9120010",,"授信类-委托中介",,"CM9120010","授信类-委托中介",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9120020",,"代理其他事项类-委托中介",,"CM9120020","代理其他事项类-委托中介",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9130",,"财产保全保函",,"CM9130","财产保全保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM91400010",,"存放同业",,"CM91400010","存放同业",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM91400020",,"拆放同业",,"CM91400020","拆放同业",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM91400030",,"买入返售证券",,"CM91400030","买入返售证券",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM91400040",,"长期投资",,"CM91400040","长期投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM91400050",,"应收账款",,"CM91400050","应收账款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM91400060",,"垫付款项",,"CM91400060","垫付款项",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9910010",,"同业售出",,"CM9910010","同业售出",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9910020",,"资产管理部售出",,"CM9910020","资产管理部售出",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9910030",,"政府售出",,"CM9910030","政府售出",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9930010",,"贷款担保",,"CM9930010","贷款担保",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9930020",,"有价证券发行担保",,"CM9930020","有价证券发行担保",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CM9930030",,"商业本票担保",,"CM9930030","商业本票担保",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMA010010",,"票据池质押融资贷款",,"CMA010010","票据池质押融资贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMA010020",,"票据池质押融资保函",,"CMA010020","票据池质押融资保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMA010030",,"票据池质押融资承兑",,"CMA010030","票据池质押融资承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMA010040",,"票据池质押融资开证",,"CMA010040","票据池质押融资开证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMA010050",,"票据池质押融资额度占用",,"CMA010050","票据池质押融资额度占用",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMA020010",,"票据池买断融资贷款",,"CMA020010","票据池买断融资贷款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMA020020",,"票据池买断融资承兑",,"CMA020020","票据池买断融资承兑",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMA020030",,"票据池买断融资保函",,"CMA020030","票据池买断融资保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMA020040",,"票据池买断融资开证",,"CMA020040","票据池买断融资开证",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMA030",,"代理业务",,"CMA030","代理业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMB901",,"同业售出",,"CMB901","同业售出",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMB902",,"资产管理部售出",,"CMB902","资产管理部售出",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMB903",,"政府售出",,"CMB903","政府售出",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC01001",,"公开发行债券承销",,"CMC01001","公开发行债券承销",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC01005",,"私募债承销",,"CMC01005","私募债承销",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC01010",,"理财直融工具承销",,"CMC01010","理财直融工具承销",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC02001",,"股票质押式回购",,"CMC02001","股票质押式回购",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC02002",,"CDS式场外股票质押式回购",,"CMC02002","CDS式场外股票质押式回购",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC02005",,"定向增发",,"CMC02005","定向增发",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC02010",,"证券交易配资",,"CMC02010","证券交易配资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC02015",,"股权投融资(含并购)",,"CMC02015","股权投融资(含并购)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC02501",,"银政类结构化融资",,"CMC02501","银政类结构化融资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC02505",,"银企类结构化融资",,"CMC02505","银企类结构化融资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03001",,"公开发行债券投资(本行承销)",,"CMC03001","公开发行债券投资(本行承销)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03002",,"私募债投资(本行承销)",,"CMC03002","私募债投资(本行承销)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03005",,"公开发行债券投资(行外承销)",,"CMC03005","公开发行债券投资(行外承销)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03010",,"私募债投资(行外承销)",,"CMC03010","私募债投资(行外承销)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03011",,"证券化资产投资",,"CMC03011","证券化资产投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03015",,"可交换/转换债投资",,"CMC03015","可交换/转换债投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03025",,"证券公司资产受益权投资",,"CMC03025","证券公司资产受益权投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03030",,"证券公司收益凭证投资",,"CMC03030","证券公司收益凭证投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03501",,"行外非标债权投资",,"CMC03501","行外非标债权投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03502",,"结构化资产买入投资",,"CMC03502","结构化资产买入投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03505",,"委托投资业务",,"CMC03505","委托投资业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03510",,"理财直融工具投资(我行承销)",,"CMC03510","理财直融工具投资(我行承销)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03515",,"理财直融工具投资(他行承销)",,"CMC03515","理财直融工具投资(他行承销)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC03525",,"其他资管业务",,"CMC03525","其他资管业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC040",,"黄金租赁",,"CMC040","黄金租赁",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC050",,"其他投行业务",,"CMC050","其他投行业务",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC060",,"金融衍生品额度",,"CMC060","金融衍生品额度",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC070",,"其他额度占用",,"CMC070","其他额度占用",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC075",,"其他金融衍生品",,"CMC075","其他金融衍生品",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC080",,"结构化融资",,"CMC080","结构化融资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC090",,"产业基金",,"CMC090","产业基金",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC09501",,"同业借款",,"CMC09501","同业借款",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC09505",,"同业账户透支",,"CMC09505","同业账户透支",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC09510",,"基金投资",,"CMC09510","基金投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC09515",,"国债逆回购投资",,"CMC09515","国债逆回购投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC09520",,"保本/非保本理财投资",,"CMC09520","保本/非保本理财投资",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC09525",,"同业代付",,"CMC09525","同业代付",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC100001",,"公开发行债券承销(交易撮合)",,"CMC100001","公开发行债券承销(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC100002",,"私募债承销(交易撮合)",,"CMC100002","私募债承销(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC100003",,"理财直融工具承销(交易撮合)",,"CMC100003","理财直融工具承销(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC100004",,"证券化资产承销(交易撮合)",,"CMC100004","证券化资产承销(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC100005",,"其他标准债券承销(交易撮合)",,"CMC100005","其他标准债券承销(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC100006",,"公开发行债券投资(交易撮合)",,"CMC100006","公开发行债券投资(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC100007",,"私募债投资(交易撮合)",,"CMC100007","私募债投资(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC100008",,"理财直融工具投资(交易撮合)",,"CMC100008","理财直融工具投资(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC100009",,"证券化资产投资(交易撮合)",,"CMC100009","证券化资产投资(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC100010",,"其他标准债券投资(交易撮合)",,"CMC100010","其他标准债券投资(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC120001",,"上市公司定向增发(交易撮合)",,"CMC120001","上市公司定向增发(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC120002",,"已上市股权转让(交易撮合)",,"CMC120002","已上市股权转让(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC120003",,"已上市股权并购融资(交易撮合)",,"CMC120003","已上市股权并购融资(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC120004",,"其他已上市股权类业务(交易撮合)",,"CMC120004","其他已上市股权类业务(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC140001",,"股票质押式回购(交易撮合)",,"CMC140001","股票质押式回购(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC140002",,"银政类结构化债权融资(交易撮合)",,"CMC140002","银政类结构化债权融资(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC140003",,"银企类结构化债权融资(交易撮合)",,"CMC140003","银企类结构化债权融资(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC160001",,"非上市公司增资(交易撮合)",,"CMC160001","非上市公司增资(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC160002",,"非上市股权转让(交易撮合)",,"CMC160002","非上市股权转让(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC160003",,"非上市股权并购融资(交易撮合)",,"CMC160003","非上市股权并购融资(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMC160004",,"其他非上市股权类业务(交易撮合)",,"CMC160004","其他非上市股权类业务(交易撮合)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMJ3060010",,"集团客户授信限额",,"CMJ3060010","集团客户授信限额",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010010",,"同业借款保函",,"CMT010010010","同业借款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010020",,"同业租金保付保函",,"CMT010010020","同业租金保付保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010030",,"同业海关税费保函",,"CMT010010030","同业海关税费保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010040",,"同业预付款保函",,"CMT010010040","同业预付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010050",,"同业分期付款保函",,"CMT010010050","同业分期付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010060",,"同业投标保函",,"CMT010010060","同业投标保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010070",,"同业履约保函",,"CMT010010070","同业履约保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010080",,"同业工程承包保函",,"CMT010010080","同业工程承包保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010090",,"同业工程维修保函",,"CMT010010090","同业工程维修保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010100",,"同业质量保函",,"CMT010010100","同业质量保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010110",,"同业付款保函",,"CMT010010110","同业付款保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010120",,"同业财产保全保函",,"CMT010010120","同业财产保全保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010130",,"同业透支归还保函",,"CMT010010130","同业透支归还保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010140",,"同业补偿贸易保函",,"CMT010010140","同业补偿贸易保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010150",,"同业留置金保函",,"CMT010010150","同业留置金保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010160",,"同业加工装配业务进口保函",,"CMT010010160","同业加工装配业务进口保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010170",,"同业不可撤销支付保函(建设局)",,"CMT010010170","同业不可撤销支付保函(建设局)",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT010010180",,"同业其他类保函",,"CMT010010180","同业其他类保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT030010010010",,"同业有追索权保函",,"CMT030010010010","同业有追索权保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT040010",,"同业出口应收账款池融资国内保函",,"CMT040010","同业出口应收账款池融资国内保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT050010",,"同业出口发票池融资国内保函",,"CMT050010","同业出口发票池融资国内保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT060010",,"同业有追索权",,"CMT060010","同业有追索权",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT060010010",,"同业有追索权保函",,"CMT060010010","同业有追索权保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" +"CMT070010",,"同业国内保理应收账款池融资保函",,"CMT070010","同业国内保理应收账款池融资保函",,,"INPUT","system","2024-07-08 18:22:04.0","system","2024-07-08 18:22:04.0" diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_collateral.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_collateral.csv new file mode 100644 index 00000000..d4b9ee55 --- /dev/null +++ b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_collateral.csv @@ -0,0 +1,187 @@ +"SD_COLLATERAL",,,,,,,,,,,,, +"CODE_","PARENT_CODE_","NAME_","DESCRIPTION_","MAPPING_CODE_","MAPPING_NAME_","MAPPING_DESCRIPTION_","SUPERVISE_NAME_","JPA_VERSION_","DATA_COME_FROM_","CREATOR_","CREATE_DATE_","LAST_MODIFIER_","LAST_MODIFYDATE_" +"代码","父代码","名称","说明","映射代码","映射名称","映射描述","监管名称","JPA乐观锁版本","","创建人","创建日期","最后修改人","最后修改日期" +"VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","INTEGER","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP" +"java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.Integer","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp" +"A",,"房地产",,"A","房地产",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A10","A","居住用房",,"A10","居住用房",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1010","A10","别墅",,"A1010","别墅",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1011","A10","住宅",,"A1011","住宅",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1012","A10","经济适用房",,"A1012","经济适用房",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A11","A","商业/办公用房",,"A11","商业/办公用房",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1110","A11","写字楼/办公用房",,"A1110","写字楼/办公用房",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1111","A11","商务公寓/酒店式公寓/产权酒店/商住两用房",,"A1111","商务公寓/酒店式公寓/产权酒店/商住两用房",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1112","A11","商铺/商场",,"A1112","商铺/商场",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1113","A11","酒店",,"A1113","酒店",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1114","A11","其他商业物业",,"A1114","其他商业物业",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A12","A","工业用房",,"A12","工业用房",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1210","A12","工业厂房",,"A1210","工业厂房",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1211","A12","产业研发用房",,"A1211","产业研发用房",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1212","A12","物流/仓储用房",,"A1212","物流/仓储用房",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A13","A","其他及特殊建/构筑物",,"A13","其他及特殊建/构筑物",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1310","A13","加油站",,"A1310","加油站",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1311","A13","车位/车库",,"A1311","车位/车库",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A1312","A13","其他建/构筑物",,"A1312","其他建/构筑物",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"A14","A","房地产在建工程",,"A14","房地产在建工程",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"B",,"土地使用权",,"B","土地使用权",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"B10","B","住宅用地/商住混合用地",,"B10","住宅用地/商住混合用地",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"B11","B","商业用地",,"B11","商业用地",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"B12","B","办公用地",,"B12","办公用地",,"商用或居住用房地产",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"B13","B","工业用地",,"B13","工业用地",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"B14","B","其他土地使用权",,"B14","其他土地使用权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C",,"现金及其等价物",,"C","现金及其等价物",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C10","C","保证金",,"C10","保证金",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C1010","C10","保证金",,"C1010","保证金",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C11","C","存单",,"C11","存单",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C1110","C11","个人定期存单",,"C1110","个人定期存单",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C1111","C11","单位定期存单",,"C1111","单位定期存单",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C1112","C11","个人大额存单",,"C1112","个人大额存单",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C1113","C11","单位大额存单",,"C1113","单位大额存单",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C1114","C11","同业存单",,"C1114","同业存单",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C12","C","定期存款",,"C12","定期存款",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"C13","C","存款账户",,"C13","存款账户",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"D",,"贵金属",,"D","贵金属",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"D10","D","标准黄金(可在交易所交易)",,"D10","标准黄金(可在交易所交易)",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"D11","D","标准铂金(可在交易所交易)",,"D11","标准铂金(可在交易所交易)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"D12","D","非标准黄金及其他贵金属(如银、钌、铑、钯、锇、铱)",,"D12","非标准黄金及其他贵金属(如银、钌、铑、钯、锇、铱)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"E",,"结构性存款/理财产品/资管计划",,"E","结构性存款/理财产品/资管计划",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"E10","E","结构性存款",,"E10","结构性存款",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"E11","E","理财产品",,"E11","理财产品",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"E12","E","资管计划",,"E12","资管计划",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F",,"有价证券",,"F","有价证券",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F10","F","债券",,"F10","债券",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1010","F10","国债",,"F1010","国债",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1011","F10","央行票据",,"F1011","央行票据",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1012","F10","境内公司债",,"F1012","境内公司债",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1013","F10","境内企业债",,"F1013","境内企业债",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1014","F10","境内商业银行债券",,"F1014","境内商业银行债券",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1015","F10","境内非银行金融债券",,"F1015","境内非银行金融债券",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1016","F10","我国政策性银行债券",,"F1016","我国政策性银行债券",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1017","F10","为收购国有银行而定向发行的债券",,"F1017","为收购国有银行而定向发行的债券",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1018","F10","我国地方政府债券",,"F1018","我国地方政府债券",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1019","F10","资产支持证券",,"F1019","资产支持证券",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1020","F10","公共部门实体债",,"F1020","公共部门实体债",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1021","F10","上市公司可交换/转换债",,"F1021","上市公司可交换/转换债",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1022","F10","其他境内债券",,"F1022","其他境内债券",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1023","F10","境外债券",,"F1023","境外债券",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F11","F","股票/股权",,"F11","股票/股权",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1110","F11","上市公司股票",,"F1110","上市公司股票",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1111","F11","非上市公司股权",,"F1111","非上市公司股权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F12","F","基金",,"F12","基金",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F13","F","票据",,"F13","票据",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1310","F13","银行承兑汇票",,"F1310","银行承兑汇票",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1311","F13","商业承兑汇票",,"F1311","商业承兑汇票",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1312","F13","财务公司承兑汇票",,"F1312","财务公司承兑汇票",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1313","F13","其他",,"F1313","其他",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F14","F","仓单/提单",,"F14","仓单/提单",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1410","F14","标准仓单",,"F1410","标准仓单",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1411","F14","非标准仓单",,"F1411","非标准仓单",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"F1412","F14","提单",,"F1412","提单",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"G",,"保单",,"G","保单",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"G10","G","具有现金价值的寿险保单",,"G10","具有现金价值的寿险保单",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"G11","G","具有现金价值的其他保单",,"G11","具有现金价值的其他保单",,"金融质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"H",,"应收账款/收费(益)权",,"H","应收账款/收费(益)权",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"H10","H","销售或提供服务产生的应收账款",,"H10","销售或提供服务产生的应收账款",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"H11","H","应收租金",,"H11","应收租金",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"H12","H","公路收费权",,"H12","公路收费权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"H13","H","农村电网建设与改造工程电费收费权",,"H13","农村电网建设与改造工程电费收费权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"H14","H","其他收费权",,"H14","其他收费权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"H15","H","其他应收账款/收益权/特许权利",,"H15","其他应收账款/收益权/特许权利",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I",,"现货/存货/货权",,"I","现货/存货/货权",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I10","I","黑色金属",,"I10","黑色金属",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1010","I10","生铁",,"I1010","生铁",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1011","I10","钢材(板材、涂镀、线材、螺纹钢、管材、钢坯、硅钢等)",,"I1011","钢材(板材、涂镀、线材、螺纹钢、管材、钢坯、硅钢等)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1012","I10","铁合金(硅铁锰铁钒铁铬铁钛铁)",,"I1012","铁合金(硅铁锰铁钒铁铬铁钛铁)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1013","I10","符合国家环保和进口标准的废钢",,"I1013","符合国家环保和进口标准的废钢",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1014","I10","其它黑色金属",,"I1014","其它黑色金属",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I11","I","有色金属",,"I11","有色金属",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1110","I11","基本有色金属(铜、铅、铝、锌等)",,"I1110","基本有色金属(铜、铅、铝、锌等)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1111","I11","有色小金属及其合金、型材、废金属(锰、铬等)",,"I1111","有色小金属及其合金、型材、废金属(锰、铬等)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1112","I11","贵金属(黄金、铂金等)",,"I1112","贵金属(黄金、铂金等)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1113","I11","其他有色金属",,"I1113","其他有色金属",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I12","I","矿产品",,"I12","矿产品",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1210","I12","金属矿(铁矿石、铝矿、锌矿、锰矿、铜矿、镍矿、铅矿、铬矿)",,"I1210","金属矿(铁矿石、铝矿、锌矿、锰矿、铜矿、镍矿、铅矿、铬矿)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1211","I12","非金属矿(硫矿、磷矿、硼矿、钾矿)",,"I1211","非金属矿(硫矿、磷矿、硼矿、钾矿)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1212","I12","其他矿产品",,"I1212","其他矿产品",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I13","I","化工原料",,"I13","化工原料",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1310","I13","无机化工原料",,"I1310","无机化工原料",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1311","I13","有机化工原料",,"I1311","有机化工原料",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1312","I13","化肥(钾肥、磷肥、氮肥、复合肥)",,"I1312","化肥(钾肥、磷肥、氮肥、复合肥)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1313","I13","合成树脂及材料(塑料原料、耐高温塑料、塑料合金)",,"I1313","合成树脂及材料(塑料原料、耐高温塑料、塑料合金)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1314","I13","合成纤维",,"I1314","合成纤维",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1315","I13","通用塑料制品(塑料薄膜、管材、建材、回收废旧塑料等)",,"I1315","通用塑料制品(塑料薄膜、管材、建材、回收废旧塑料等)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1316","I13","日化",,"I1316","日化",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1317","I13","其它化工原料",,"I1317","其它化工原料",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I14","I","橡胶及其制品",,"I14","橡胶及其制品",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1410","I14","天然橡胶",,"I1410","天然橡胶",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1411","I14","合成橡胶",,"I1411","合成橡胶",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1412","I14","轮胎",,"I1412","轮胎",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1413","I14","其它橡胶及其制品",,"I1413","其它橡胶及其制品",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I15","I","纸浆、纸、纸板及其制品",,"I15","纸浆、纸、纸板及其制品",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1510","I15","纸浆",,"I1510","纸浆",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1511","I15","纸(印刷、书写、制图等)、纸板及其制品",,"I1511","纸(印刷、书写、制图等)、纸板及其制品",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1512","I15","废纸(混合生活废纸、商业废纸、旧书等)及其制品",,"I1512","废纸(混合生活废纸、商业废纸、旧书等)及其制品",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I16","I","粮油及农副产品",,"I16","粮油及农副产品",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1610","I16","粮食(稻谷、小麦、大麦等)",,"I1610","粮食(稻谷、小麦、大麦等)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1611","I16","糖及糖食(原糖、砂糖、蜂蜜等)",,"I1611","糖及糖食(原糖、砂糖、蜂蜜等)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1612","I16","食用油(豆油、花生油、棕榈油等)",,"I1612","食用油(豆油、花生油、棕榈油等)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1613","I16","饲料(豆粕、DDGS、鱼粉等)",,"I1613","饲料(豆粕、DDGS、鱼粉等)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I17","I","纺织原料及纺织制品",,"I17","纺织原料及纺织制品",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1710","I17","棉花",,"I1710","棉花",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1711","I17","棉纱",,"I1711","棉纱",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1712","I17","纺织制品",,"I1712","纺织制品",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1713","I17","化学纤维",,"I1713","化学纤维",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1714","I17","其他纺织原料",,"I1714","其他纺织原料",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I18","I","基础能源",,"I18","基础能源",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1810","I18","煤炭(褐煤、烟煤、无烟煤、洗精煤)",,"I1810","煤炭(褐煤、烟煤、无烟煤、洗精煤)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1811","I18","煤焦油",,"I1811","煤焦油",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1812","I18","焦炭",,"I1812","焦炭",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1813","I18","油品(原油、汽油、煤油、沥青、润滑油、石蜡油、溶剂油、焦油)",,"I1813","油品(原油、汽油、煤油、沥青、润滑油、石蜡油、溶剂油、焦油)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I19","I","建材",,"I19","建材",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1910","I19","木材及其制品(原木、胶合板、纤维板、刨花板、木地板)",,"I1910","木材及其制品(原木、胶合板、纤维板、刨花板、木地板)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1911","I19","玻璃(普通平板玻璃、钢化玻璃、压花玻璃、夹丝玻璃)",,"I1911","玻璃(普通平板玻璃、钢化玻璃、压花玻璃、夹丝玻璃)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I1912","I19","其他建材",,"I1912","其他建材",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I20","I","交通工具",,"I20","交通工具",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2010","I20","未上牌乘用车",,"I2010","未上牌乘用车",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2011","I20","未上牌商用车载货汽车",,"I2011","未上牌商用车载货汽车",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2012","I20","未上牌商用车载客汽车",,"I2012","未上牌商用车载客汽车",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2013","I20","其它未上牌车辆",,"I2013","其它未上牌车辆",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I21","I","电线电缆",,"I21","电线电缆",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2110","I21","电线电缆(通用)",,"I2110","电线电缆(通用)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I22","I","食品饮料",,"I22","食品饮料",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2210","I22","饮料",,"I2210","饮料",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2211","I22","食品",,"I2211","食品",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I23","I","家电",,"I23","家电",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2310","I23","黑色家电",,"I2310","黑色家电",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2311","I23","白色家电",,"I2311","白色家电",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2312","I23","小家电",,"I2312","小家电",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2313","I23","其它家电产品",,"I2313","其它家电产品",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I24","I","机械设备/机电设备",,"I24","机械设备/机电设备",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2410","I24","通用设备(新)",,"I2410","通用设备(新)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2411","I24","专用设备(新)",,"I2411","专用设备(新)",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2412","I24","其他机械设备",,"I2412","其他机械设备",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I2413","I24","机电设备",,"I2413","机电设备",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"I25","I","其他现货/存货/货权",,"I25","其他现货/存货/货权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"J",,"交通工具",,"J","交通工具",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"J10","J","船舶",,"J10","船舶",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"J11","J","已上牌车辆",,"J11","已上牌车辆",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"J12","J","飞机及配套设备",,"J12","飞机及配套设备",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"K",,"机器设备",,"K","机器设备",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"K10","K","专用机器设备",,"K10","专用机器设备",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"K11","K","通用机器设备",,"K11","通用机器设备",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"L",,"知识产权",,"L","知识产权",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"L10","L","专利权",,"L10","专利权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"L11","L","商标专用权",,"L11","商标专用权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"L12","L","著作权",,"L12","著作权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"M",,"资源资产",,"M","资源资产",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"M10","M","探矿权",,"M10","探矿权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"M11","M","采矿权",,"M11","采矿权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"M12","M","林权",,"M12","林权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"M13","M","海域使用权",,"M13","海域使用权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"M14","M","其他自然资源",,"M14","其他自然资源",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"N",,"其他类",,"N","其他类",,,,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"N10","N","出口退税账户",,"N10","出口退税账户",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"N11","N","碳排放权",,"N11","碳排放权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"N12","N","设施类在建工程",,"N12","设施类在建工程",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"N13","N","农村土地承包经营权",,"N13","农村土地承包经营权",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" +"N14","N","其他抵质押品",,"N14","其他抵质押品",,"其他抵质押品",,"INPUT","system","2024-07-08 19:06:49.0","system","2024-07-08 19:06:49.0" diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_counterparty.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_counterparty.csv similarity index 100% rename from io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_counterparty.csv rename to io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_counterparty.csv diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_country.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_country.csv similarity index 100% rename from io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_country.csv rename to io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_country.csv diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_currency.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_currency.csv similarity index 100% rename from io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_currency.csv rename to io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_currency.csv diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_industry.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_industry.csv similarity index 100% rename from io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_industry.csv rename to io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_industry.csv diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_loan_product.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_loan_product.csv new file mode 100644 index 00000000..0231610a --- /dev/null +++ b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_loan_product.csv @@ -0,0 +1,472 @@ +"SD_LOAN_PRODUCT",,,,,,,,,,,, +"CODE_","PARENT_CODE_","NAME_","DESCRIPTION_","MAPPING_CODE_","MAPPING_NAME_","MAPPING_DESCRIPTION_","JPA_VERSION_","DATA_COME_FROM_","CREATOR_","CREATE_DATE_","LAST_MODIFIER_","LAST_MODIFYDATE_" +"代码","父代码","名称","说明","映射代码","映射名称","映射描述","JPA乐观锁版本","数据来源(INPUT:手工录入,IMPORT:系统自动导入)","创建人","创建日期","最后修改人","最后修改日期" +"VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","INTEGER","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP" +"java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.Integer","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp" +"1008",,"国内保函",,"1008","国内保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001001","1008","国内租金保付保函",,"1008001001","国内租金保付保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001002","1008","国内海关税费保函",,"1008001002","国内海关税费保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001003","1008","国内预付款保函",,"1008001003","国内预付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001004","1008","国内分期付款保函",,"1008001004","国内分期付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001005","1008","国内投标保函",,"1008001005","国内投标保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001006","1008","国内工程承包保函",,"1008001006","国内工程承包保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001007","1008","国内工程维修保函",,"1008001007","国内工程维修保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001008","1008","国内质量保函",,"1008001008","国内质量保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001009","1008","国内付款保函",,"1008001009","国内付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001010","1008","国内财产保全保函",,"1008001010","国内财产保全保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001011","1008","国内履约保函",,"1008001011","国内履约保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001012","1008","国内留置金保函",,"1008001012","国内留置金保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001013","1008","国内补偿贸易保函",,"1008001013","国内补偿贸易保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001014","1008","国内加工装配业务进口保函",,"1008001014","国内加工装配业务进口保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001015","1008","国内不可撤销支付保函(建设局)",,"1008001015","国内不可撤销支付保函(建设局)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1008001016","1008","国内其他类保函",,"1008001016","国内其他类保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010","1","流动资金贷款(大类)",,"1010","流动资金贷款(大类)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010010","1010","流动资金贷款",,"1010010","流动资金贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010020","1010","法人账户透支业务",,"1010020","法人账户透支业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010021","1010","對公客戶帳戶透支貸款",,"1010021","對公客戶帳戶透支貸款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010025","1010","企业网上自由贷",,"1010025","企业网上自由贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010040","1010","出口退税帐户托管贷款",,"1010040","出口退税帐户托管贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010050","1010","外贸专项贷款",,"1010050","外贸专项贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010060","1010","外贸发展基金贷款",,"1010060","外贸发展基金贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010070","1010","小额信用贷款",,"1010070","小额信用贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010080","1010","联保贷款",,"1010080","联保贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010090","1010","保费贷款",,"1010090","保费贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1010100","1010","外汇储备委托贷款",,"1010100","外汇储备委托贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1020","1","单位按揭贷款",,"1020","单位按揭贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1020010","1020","单位房产按揭",,"1020010","单位房产按揭",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1020020","1020","单位汽车按揭",,"1020020","单位汽车按揭",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1020030","1020","单位设备按揭",,"1020030","单位设备按揭",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1020040","1020","其他法人按揭",,"1020040","其他法人按揭",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1025","1","经营性物业抵押贷款",,"1025","经营性物业抵押贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1030","1","固定资产贷款",,"1030","固定资产贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1030010","1030","技术改造贷款",,"1030010","技术改造贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1030010010","1030","基础设施贷款",,"1030010010","基础设施贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1030010020","1030","其他固定资产贷款",,"1030010020","其他固定资产贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1038","1","项目贷款",,"1038","项目贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1038010","1038","并购贷款",,"1038010","并购贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1038020","1038","其他类项目贷款",,"1038020","其他类项目贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1040","1","房地产开发贷款(大类)",,"1040","房地产开发贷款(大类)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1040010","1040","房地产开发贷款",,"1040010","房地产开发贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1040020","1040","土地储备项目贷款",,"1040020","土地储备项目贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1050","1","银团贷款",,"1050","银团贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1050010","1050","直接银团(项目类)",,"1050010","直接银团(项目类)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1050015","1050","直接银团(非项目类)",,"1050015","直接银团(非项目类)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1050030","1050","间接银团",,"1050030","间接银团",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1060","1","短期融资券授信",,"1060","短期融资券授信",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1060010","1060","短期融资券授信主承销",,"1060010","短期融资券授信主承销",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1060020","1060","短期融资券授信分销",,"1060020","短期融资券授信分销",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1070","1","联合贷款(大类)",,"1070","联合贷款(大类)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1070010","1070","联合贷款",,"1070010","联合贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1080","1","外国政府转贷款(大类)",,"1080","外国政府转贷款(大类)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1080010","1080","外国政府转贷款",,"1080010","外国政府转贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"10901","1090","垫款业务",,"10901","垫款业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190","1","垫款业务",,"1190","垫款业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190010","1190","保函垫款",,"1190010","保函垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190020","1190","承兑汇票垫款",,"1190020","承兑汇票垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190030","1190","信用证垫款",,"1190030","信用证垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190040","1190","保理垫款",,"1190040","保理垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190050","1190","其他垫款",,"1190050","其他垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190060","1190","贴现垫款",,"1190060","贴现垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190070","1190","代付垫款",,"1190070","代付垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190080","1190","黄金租赁垫款",,"1190080","黄金租赁垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190090","1190","贵金属期权垫款",,"1190090","贵金属期权垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190100","1190","贵金属远期垫款",,"1190100","贵金属远期垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190110","1190","外汇期权垫款",,"1190110","外汇期权垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190120","1190","利率互换垫款",,"1190120","利率互换垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190130","1190","外汇垫款",,"1190130","外汇垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190140","1190","同业保函垫款",,"1190140","同业保函垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190150","1190","福费廷二手买卖垫款",,"1190150","福费廷二手买卖垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"1190160","1190","保理风参买卖垫款",,"1190160","保理风参买卖垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"2010",,"承兑汇票贴现",,"2010","承兑汇票贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"2010010","2010","银行承兑汇票贴现",,"2010010","银行承兑汇票贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"2010020","2010","商业承兑汇票贴现",,"2010020","商业承兑汇票贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"2010040","2010","无追银行承兑汇票贴现",,"2010040","无追银行承兑汇票贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"2010050","2010","无追商业承兑汇票贴现",,"2010050","无追商业承兑汇票贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"2210","2","综合授信额度",,"2210","综合授信额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"2210100","2210","综合授信额度",,"2210100","综合授信额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3",,"授信额度",,"3","授信额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010","3","自用额度",,"3010","自用额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010010","3010","综合授信额度",,"3010010","综合授信额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010015","3010","低风险额度",,"3010015","低风险额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010020","3010","对公单项授信额度",,"3010020","对公单项授信额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010021","3010","对公网银循环贷款额度",,"3010021","对公网银循环贷款额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010025","3010","投行/资管额度",,"3010025","投行/资管额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010025010","3010","债承额度",,"3010025010","债承额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010025020","3010","非债承额度",,"3010025020","非债承额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010025030","3010","交易撮合额度",,"3010025030","交易撮合额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010030","3010","透支额度",,"3010030","透支额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010040","3010","法人授信额度",,"3010040","法人授信额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010050","3010","法人委托额度",,"3010050","法人委托额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010056","3010","工程类保函额度",,"3010056","工程类保函额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010057","3010","一贷通额度",,"3010057","一贷通额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010060","3010","保费贷款额度",,"3010060","保费贷款额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010060010","3010","企业车辆保费贷款额度",,"3010060010","企业车辆保费贷款额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3010060020","3010","企业财产保费贷款额度",,"3010060020","企业财产保费贷款额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3040","3","保理额度",,"3040","保理额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3040010","3040","预支价金——卖方额度",,"3040010","预支价金——卖方额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3040020","3040","买方额度",,"3040020","买方额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3040030","3040","保理授信——卖方额度",,"3040030","保理授信——卖方额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3050","3","同业授信额度",,"3050","同业授信额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3050010","3050","债劵发行人额度",,"3050010","债劵发行人额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3050020","3050","交易对手额度",,"3050020","交易对手额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3060010","3060","银票极速贴限额",,"3060010","银票极速贴限额",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110","3","贷款",,"3110","贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110010","3110","流动资金贷款",,"3110010","流动资金贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110020","3110","法人房产按揭贷款",,"3110020","法人房产按揭贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110030","3110","车辆按揭贷款",,"3110030","车辆按揭贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110040","3110","设备按揭贷款",,"3110040","设备按揭贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110050","3110","其他按揭贷款",,"3110050","其他按揭贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110060","3110","基础设施贷款",,"3110060","基础设施贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110070","3110","技术改造贷款",,"3110070","技术改造贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110080","3110","其他固定资产贷款",,"3110080","其他固定资产贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110090","3110","联合贷款",,"3110090","联合贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3110100","3110","其他贷款",,"3110100","其他贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3120","3","委托贷款",,"3120","委托贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3120010","3120","委托贷款",,"3120010","委托贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3130","3","垫款",,"3130","垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3130010","3130","承兑垫款",,"3130010","承兑垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3130020","3130","贴现垫款",,"3130020","贴现垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3130030","3130","担保垫款",,"3130030","担保垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3130040","3130","保函垫款",,"3130040","保函垫款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3140","3","贴现",,"3140","贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3140010","3140","小微银行承兑汇票贴现",,"3140010","小微银行承兑汇票贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3140020","3140","小微商业承兑汇票贴现",,"3140020","小微商业承兑汇票贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3150","3","承兑",,"3150","承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3150010","3150","银行承兑汇票",,"3150010","银行承兑汇票",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160","3","担保类",,"3160","担保类",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160010","3160","非融资性保函",,"3160010","非融资性保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160010010","3160","投标保函",,"3160010010","投标保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160010020","3160","履约保函",,"3160010020","履约保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160010030","3160","预付款保函",,"3160010030","预付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160010040","3160","质量与维修保函",,"3160010040","质量与维修保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160010050","3160","延期付款保函",,"3160010050","延期付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160010060","3160","其他非融资性保函",,"3160010060","其他非融资性保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160010070","3160","债务保函",,"3160010070","债务保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160020","3160","融资性保函",,"3160020","融资性保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160020010","3160","借款保函",,"3160020010","借款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160020020","3160","融资租赁保函",,"3160020020","融资租赁保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160020030","3160","透支保函",,"3160020030","透支保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160020040","3160","银行授信额度保函",,"3160020040","银行授信额度保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3160020050","3160","其他融资性保函",,"3160020050","其他融资性保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3170","3","承诺类",,"3170","承诺类",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3170010","3170","可撤销贷款承诺",,"3170010","可撤销贷款承诺",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3170020","3170","不可撤销贷款承诺",,"3170020","不可撤销贷款承诺",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"3170030","3170","商票保贴",,"3170030","商票保贴",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"4",,"承兑",,"4","承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"4010","4","银行承兑汇票业务(大类)",,"4010","银行承兑汇票业务(大类)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"4010010","4010","银行承兑汇票业务",,"4010010","银行承兑汇票业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"4010015","4010","企业网上自由票",,"4010015","企业网上自由票",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"4010020","4010","代开银票业务",,"4010020","代开银票业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"4010025","4010","代同业开银承",,"4010025","代同业开银承",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5",,"担保承诺类",,"5","担保承诺类",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010","5","担保类",,"5010","担保类",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010005","5010","商票保贴",,"5010005","商票保贴",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010","5010","保函业务",,"5010010","保函业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010001","5010","商票付款保函",,"5010010001","商票付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010002","5010","电子商票保证",,"5010010002","电子商票保证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010003","5010","电票自由保证",,"5010010003","电票自由保证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010010","5010","借款保函",,"5010010010","借款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010020","5010","租金保付保函",,"5010010020","租金保付保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010030","5010","海关税费保函",,"5010010030","海关税费保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010040","5010","预付款保函",,"5010010040","预付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010050","5010","分期付款保函",,"5010010050","分期付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010060","5010","投标保函",,"5010010060","投标保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010070","5010","履约保函",,"5010010070","履约保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010080","5010","工程承包保函",,"5010010080","工程承包保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010090","5010","工程维修保函",,"5010010090","工程维修保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010100","5010","质量保函",,"5010010100","质量保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010110","5010","付款保函",,"5010010110","付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010120","5010","财产保全保函",,"5010010120","财产保全保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010130","5010","透支归还保函",,"5010010130","透支归还保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010140","5010","补偿贸易保函",,"5010010140","补偿贸易保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010150","5010","留置金保函",,"5010010150","留置金保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010160","5010","加工装配业务进口保函",,"5010010160","加工装配业务进口保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010170","5010","不可撤销支付保函(建设局)",,"5010010170","不可撤销支付保函(建设局)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010010180","5010","其他类保函",,"5010010180","其他类保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010020","5010","备用信用证(境内)",,"5010020","备用信用证(境内)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010030","5010","CDO",,"5010030","CDO",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010040","5010","债券发行担保",,"5010040","债券发行担保",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010040010","5010","一般债券发行担保",,"5010040010","一般债券发行担保",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5010040020","5010","可转换债券担保",,"5010040020","可转换债券担保",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5020","5","承诺类",,"5020","承诺类",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5020020","5020","贷款承诺",,"5020020","贷款承诺",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5020030","5020","贷款意向书",,"5020030","贷款意向书",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"5020040","5020","银行信贷证明",,"5020040","银行信贷证明",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7",,"国际贸易融资",,"7","国际贸易融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7010","7","国际信用证",,"7010","国际信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7010010","7010","一般信用证开证",,"7010010","一般信用证开证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7010020","7010","背对背信用证",,"7010020","背对背信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7010030","7010","未来货权质押开证",,"7010030","未来货权质押开证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7010050","7010","代开信用证",,"7010050","代开信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7020","7","进口押汇",,"7020","进口押汇",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7020010","7020","进口信用证押汇",,"7020010","进口信用证押汇",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7020020","7020","进口代收押汇",,"7020020","进口代收押汇",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7020030","7020","进口T/T押汇",,"7020030","进口T/T押汇",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7030","7","出口押汇",,"7030","出口押汇",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7030010","7030","出口信用证押汇",,"7030010","出口信用证押汇",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7030040","7030","出口托收押汇",,"7030040","出口托收押汇",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7030050","7030","出口T/T押汇",,"7030050","出口T/T押汇",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7040","7","打包放款",,"7040","打包放款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050","7","外币保函",,"7050","外币保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050010","7050","付款保函",,"7050010","付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050020","7050","投标保函",,"7050020","投标保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050030","7050","工程维修保函",,"7050030","工程维修保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050040","7050","预付款保函",,"7050040","预付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050050","7050","履约保函",,"7050050","履约保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050060","7050","融资保函",,"7050060","融资保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050070","7050","其他保函",,"7050070","其他保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050080","7050","备用信用证(跨境)",,"7050080","备用信用证(跨境)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050090","7050","对外保函",,"7050090","对外保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050100","7050","代开融资保函",,"7050100","代开融资保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7050110","7050","代开备用信用证(跨境)",,"7050110","代开备用信用证(跨境)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7060","7","福费廷",,"7060","福费廷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7070","7","进口代付业务",,"7070","进口代付业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7070010","7070","进口代付业务信用证代付",,"7070010","进口代付业务信用证代付",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7070020","7070","进口代付业务托收代付",,"7070020","进口代付业务托收代付",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7070030","7070","进口代付业务汇款代付",,"7070030","进口代付业务汇款代付",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7080","7","外币票据贴现",,"7080","外币票据贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090","7","国际保理",,"7090","国际保理",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090010","7090","出口商业发票贴现",,"7090010","出口商业发票贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030","7090","双保理",,"7090030","双保理",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010","7090","出口保理",,"7090030010","出口保理",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010012","7090","后收息出口保理预支价金(线上化)",,"7090030010012","后收息出口保理预支价金(线上化)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010013","7090","预收息出口保理预支价金(线上化)",,"7090030010013","预收息出口保理预支价金(线上化)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010020","7090","出口保理贷款",,"7090030010020","出口保理贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010030","7090","出口保理承兑",,"7090030010030","出口保理承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010040","7090","出口保理贴现",,"7090030010040","出口保理贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010050","7090","出口保理开进口信用证",,"7090030010050","出口保理开进口信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010060","7090","出口保理开出口信用证",,"7090030010060","出口保理开出口信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010070","7090","出口保理保函",,"7090030010070","出口保理保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010080","7090","出口保理预付款融资-有追",,"7090030010080","出口保理预付款融资-有追",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030010090","7090","出口保理预付款融资-无追",,"7090030010090","出口保理预付款融资-无追",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090030020","7090","买方保理",,"7090030020","买方保理",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040","7090","单保理",,"7090040","单保理",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040010","7090","有追索权",,"7090040010","有追索权",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040010010","7090","有追索权预支价金(后收息)",,"7090040010010","有追索权预支价金(后收息)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040010020","7090","有追索权贷款",,"7090040010020","有追索权贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040010030","7090","有追索权承兑",,"7090040010030","有追索权承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040010040","7090","有追索权贴现",,"7090040010040","有追索权贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040010050","7090","有追索权开进口信用证",,"7090040010050","有追索权开进口信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040010060","7090","有追索权开出口信用证",,"7090040010060","有追索权开出口信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040010070","7090","有追索权保函",,"7090040010070","有追索权保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040010080","7090","有追索权预支价金(预收息)",,"7090040010080","有追索权预支价金(预收息)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040020","7090","无追索权",,"7090040020","无追索权",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040020010","7090","无追索权预支价金(后收息)",,"7090040020010","无追索权预支价金(后收息)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040020020","7090","无追索权贷款",,"7090040020020","无追索权贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040020030","7090","无追索权承兑",,"7090040020030","无追索权承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040020040","7090","无追索权贴现",,"7090040020040","无追索权贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040020050","7090","无追索权开进口信用证",,"7090040020050","无追索权开进口信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040020060","7090","无追索权开出口信用证",,"7090040020060","无追索权开出口信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040020070","7090","无追索权保函",,"7090040020070","无追索权保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7090040020080","7090","无追索权预支价金(预收息)",,"7090040020080","无追索权预支价金(预收息)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7100","7","出口应收账款池融资",,"7100","出口应收账款池融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7100010","7100","出口应收账款池融资贷款",,"7100010","出口应收账款池融资贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7100020","7100","出口应收账款池融资承兑",,"7100020","出口应收账款池融资承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7100030","7100","出口应收账款池融资开证",,"7100030","出口应收账款池融资开证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7100040","7100","出口应收账款池融资国内保函",,"7100040","出口应收账款池融资国内保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7100050","7100","出口应收账款池融资对外保函",,"7100050","出口应收账款池融资对外保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7110","7","出口发票池融资",,"7110","出口发票池融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7110010","7110","出口发票池融资贷款",,"7110010","出口发票池融资贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7110020","7110","出口发票池融资开证",,"7110020","出口发票池融资开证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7110030","7110","出口发票池融资承兑",,"7110030","出口发票池融资承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7110040","7110","出口发票池融资国内保函",,"7110040","出口发票池融资国内保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7110050","7110","出口发票池融资对外保函",,"7110050","出口发票池融资对外保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7120","7","提货担保",,"7120","提货担保",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7130","7","出口代付业务",,"7130","出口代付业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7130010","7130","出口代付业务信用证代付",,"7130010","出口代付业务信用证代付",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7130020","7130","出口代付业务托收代付",,"7130020","出口代付业务托收代付",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"7130030","7130","出口代付业务汇款代付",,"7130030","出口代付业务汇款代付",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8",,"国内贸易融资",,"8","国内贸易融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8010","8","国内信用证",,"8010","国内信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100001","8010","速商贷(黄金)",,"80100001","速商贷(黄金)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100001PJ","8010","80100001PJ",,"80100001PJ","80100001PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100002","8010","医药E贷(企业主)",,"80100002","医药E贷(企业主)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100003","8010","医药E贷(企业)",,"80100003","医药E贷(企业)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100003PJ","8010","80100003PJ",,"80100003PJ","80100003PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100004","8010","车E贷",,"80100004","车E贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100004PJ","8010","80100004PJ",,"80100004PJ","80100004PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100005","8010","装修E贷(企业)",,"80100005","装修E贷(企业)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100006","8010","速运E贷(货有友)",,"80100006","速运E贷(货有友)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100006PJ","8010","80100006PJ",,"80100006PJ","80100006PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100007","8010","蒙牛经销商融资",,"80100007","蒙牛经销商融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100008","8010","平安狮桥贷",,"80100008","平安狮桥贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100008PJ","8010","80100008PJ",,"80100008PJ","80100008PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100009","8010","出口保贷",,"80100009","出口保贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100010","8010","出口E贷",,"80100010","出口E贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100010PJ","8010","80100010PJ",,"80100010PJ","80100010PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80100011","8010","农E贷(自然人)",,"80100011","农E贷(自然人)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8010010","8010","开立国内信用证",,"8010010","开立国内信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8010020","8010","卖方押汇",,"8010020","卖方押汇",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8010030","8010","买方押汇",,"8010030","买方押汇",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8010040","8010","国内信用证项下打包放款",,"8010040","国内信用证项下打包放款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8010050","8010","国内信用证代付",,"8010050","国内信用证代付",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8010060","8010","国内信用证议付",,"8010060","国内信用证议付",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8010070","8010","国内信用证项下贴现",,"8010070","国内信用证项下贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8010075","8010","国内信用证福费廷",,"8010075","国内信用证福费廷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8010090","8010","代开国内信用证",,"8010090","代开国内信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200001","8020","速微贷",,"80200001","速微贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200001PJ","8020","80200001PJ",,"80200001PJ","80200001PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200002","8020","海康威视经销商融资",,"80200002","海康威视经销商融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200002PJ","8020","80200002PJ",,"80200002PJ","80200002PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200003","8020","华为经销商融资",,"80200003","华为经销商融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200003PJ","8020","80200003PJ",,"80200003PJ","80200003PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200005","8020","平安订货贷",,"80200005","平安订货贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200005PJ","8020","80200005PJ",,"80200005PJ","80200005PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200006","8020","平安银行数字贷",,"80200006","平安银行数字贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200006PJ","8020","80200006PJ",,"80200006PJ","80200006PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200007","8020","数字贷",,"80200007","数字贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200007PJ","8020","80200007PJ",,"80200007PJ","80200007PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200008","8020","数字贷(税金)",,"80200008","数字贷(税金)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200008PJ","8020","80200008PJ",,"80200008PJ","80200008PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200009","8020","平台数字贷-买家数字融资",,"80200009","平台数字贷-买家数字融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200009PJ","8020","80200009PJ",,"80200009PJ","80200009PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200010","8020","平台数字贷-卖家数字融资",,"80200010","平台数字贷-卖家数字融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200011","8020","政采E贷",,"80200011","政采E贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200011PJ","8020","80200011PJ",,"80200011PJ","80200011PJ",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200012","8020","汽车经销商线上融资",,"80200012","汽车经销商线上融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200015","8020","钢贸订单贷",,"80200015","钢贸订单贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200016","8020","平安递E贷",,"80200016","平安递E贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200018","8020","数字贷(供应商)",,"80200018","数字贷(供应商)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200019","8020","新兴产业贷(专利版)",,"80200019","新兴产业贷(专利版)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200020","8020","平台数字贷-广告商融资",,"80200020","平台数字贷-广告商融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200021","8020","平台数字贷-网络货运平台间接融资",,"80200021","平台数字贷-网络货运平台间接融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200022","8020","二手车商贷",,"80200022","二手车商贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200023","8020","数字贷",,"80200023","数字贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200024","8020","平台数字贷-急速e收(企业主)",,"80200024","平台数字贷-急速e收(企业主)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200025","8020","平台数字贷-急速e收(自然人)",,"80200025","平台数字贷-急速e收(自然人)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200027","8020","数字贷(经销商)",,"80200027","数字贷(经销商)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200028","8020","平台数字贷-医药互联网平台融资(药店)",,"80200028","平台数字贷-医药互联网平台融资(药店)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200029","8020","政采E贷(企业主版)",,"80200029","政采E贷(企业主版)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200030","8020","数字贷(租赁)",,"80200030","数字贷(租赁)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80200034","8020","数字贷",,"80200034","数字贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80300001","8030","设备E贷",,"80300001","设备E贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80300002","8030","平安三一贷",,"80300002","平安三一贷",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80400001","8040","票据E贷(贴现)",,"80400001","票据E贷(贴现)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050","8","国内保理",,"8050","国内保理",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"80500001","8050","E保函(企业)",,"80500001","E保函(企业)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050010","8050","有追索权",,"8050010","有追索权",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050010011","8050","有追索权预支价金(线上供应链)",,"8050010011","有追索权预支价金(线上供应链)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050010012","8050","后收息有追索权预支价金(线上化)",,"8050010012","后收息有追索权预支价金(线上化)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050010013","8050","预收息有追索权预支价金(线上化)",,"8050010013","预收息有追索权预支价金(线上化)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050010020","8050","有追索权贷款",,"8050010020","有追索权贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050010030","8050","有追索权承兑",,"8050010030","有追索权承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050010040","8050","有追索权贴现",,"8050010040","有追索权贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050010050","8050","有追索权开进口信用证",,"8050010050","有追索权开进口信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050010060","8050","有追索权开国内信用证",,"8050010060","有追索权开国内信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050010070","8050","有追索权保函",,"8050010070","有追索权保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050020","8050","无追索权",,"8050020","无追索权",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050020011","8050","无追索权预支价金(线上供应链)",,"8050020011","无追索权预支价金(线上供应链)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050020012","8050","后收息无追索权预支价金(线上化)",,"8050020012","后收息无追索权预支价金(线上化)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050020013","8050","预收息无追索权预支价金(线上化)",,"8050020013","预收息无追索权预支价金(线上化)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050020020","8050","无追索权贷款",,"8050020020","无追索权贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050020030","8050","无追索权承兑",,"8050020030","无追索权承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050020040","8050","无追索权贴现",,"8050020040","无追索权贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050020050","8050","无追索权开进口信用证",,"8050020050","无追索权开进口信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050020060","8050","无追索权开国内信用证",,"8050020060","无追索权开国内信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050020070","8050","无追索权保函",,"8050020070","无追索权保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8050030","8050","国内再保理",,"8050030","国内再保理",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8100","8","国内保理应收账款池融资",,"8100","国内保理应收账款池融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8100020","8100","国内保理应收账款池融资贷款",,"8100020","国内保理应收账款池融资贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8100030","8100","国内保理应收账款池融资承兑",,"8100030","国内保理应收账款池融资承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8100040","8100","国内保理应收账款池融资贴现",,"8100040","国内保理应收账款池融资贴现",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8100050","8100","国内保理应收账款池融资开进口信用证",,"8100050","国内保理应收账款池融资开进口信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8100060","8100","国内保理应收账款池融资开国内信用证",,"8100060","国内保理应收账款池融资开国内信用证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8100070","8100","国内保理应收账款池融资保函",,"8100070","国内保理应收账款池融资保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8140","8","国内保理代付",,"8140","国内保理代付",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8200","8","风参买入(预收息)",,"8200","风参买入(预收息)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"8201","8","风参买入(后收息)",,"8201","风参买入(后收息)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A",,"资产池融资",,"A","资产池融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A010","A","资产池出账",,"A010","资产池出账",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A010010","A010","票据池质押融资贷款",,"A010010","票据池质押融资贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A010020","A010","票据池质押融资保函",,"A010020","票据池质押融资保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A010030","A010","票据池质押融资承兑",,"A010030","票据池质押融资承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A010040","A010","票据池质押融资开证",,"A010040","票据池质押融资开证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A020","A","票据池买断融资",,"A020","票据池买断融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A020010","A020","票据池买断融资贷款",,"A020010","票据池买断融资贷款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A020020","A020","票据池买断融资承兑",,"A020020","票据池买断融资承兑",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A020030","A020","票据池买断融资保函",,"A020030","票据池买断融资保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A020040","A020","票据池买断融资开证",,"A020040","票据池买断融资开证",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"A030","A","代理业务",,"A030","代理业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"B",,"售出业务",,"B","售出业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"B901","B","同业售出",,"B901","同业售出",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"B902","B","资产管理部售出",,"B902","资产管理部售出",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"B903","B","政府售出",,"B903","政府售出",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C",,"非传统业务",,"C","非传统业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C010","C","债承业务",,"C010","债承业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C01001","C010","标准化债权承销",,"C01001","标准化债权承销",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C01005","C010","债权融资计划承销",,"C01005","债权融资计划承销",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C01006","C010","证券化资产承销",,"C01006","证券化资产承销",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C01010","C010","理财直融工具承销",,"C01010","理财直融工具承销",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C020","C","资本市场业务",,"C020","资本市场业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C02001","C020","股票质押式回购",,"C02001","股票质押式回购",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C02002","C020","CDS式场外股票质押式回购",,"C02002","CDS式场外股票质押式回购",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C02005","C020","定向增发",,"C02005","定向增发",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C02010","C020","证券交易配资",,"C02010","证券交易配资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C02015","C020","股权投融资(含并购)",,"C02015","股权投融资(含并购)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C025","C","结构化融资业务",,"C025","结构化融资业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C02501","C025","银政类结构化融资",,"C02501","银政类结构化融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C02505","C025","结构化融资",,"C02505","结构化融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C030","C","债务融资工具投资",,"C030","债务融资工具投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03001","C030","标准化债权投资",,"C03001","标准化债权投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03002","C030","债权融资计划投资",,"C03002","债权融资计划投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03003","C030","结构融资",,"C03003","结构融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03005","C030","公开发行债券投资(行外承销)",,"C03005","公开发行债券投资(行外承销)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03006","C030","债券投资",,"C03006","债券投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03010","C030","私募债投资(行外承销)",,"C03010","私募债投资(行外承销)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03011","C030","证券化资产投资",,"C03011","证券化资产投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03015","C030","可交换/转换债投资",,"C03015","可交换/转换债投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03025","C030","证券公司资产受益权投资",,"C03025","证券公司资产受益权投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03030","C030","证券公司收益凭证投资",,"C03030","证券公司收益凭证投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C035","C","其他业务",,"C035","其他业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03501","C035","行外非标债权投资",,"C03501","行外非标债权投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03502","C035","结构化资产买入投资",,"C03502","结构化资产买入投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03505","C035","委托投资业务",,"C03505","委托投资业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03510","C035","理财直融工具投资(我行承销)",,"C03510","理财直融工具投资(我行承销)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C03515","C035","理财直融工具投资(他行承销)",,"C03515","理财直融工具投资(他行承销)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C040","C","黄金租赁",,"C040","黄金租赁",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C060","C","金融衍生品额度",,"C060","金融衍生品额度",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C075","C","其他金融衍生品",,"C075","其他金融衍生品",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C095","C","同业业务",,"C095","同业业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C09501","C095","同业借款",,"C09501","同业借款",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C09505","C095","同业账户透支",,"C09505","同业账户透支",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C09510","C095","基金投资",,"C09510","基金投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C09515","C095","国债逆回购投资",,"C09515","国债逆回购投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C09520","C095","保本/非保本理财投资",,"C09520","保本/非保本理财投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C09525","C095","同业代付",,"C09525","同业代付",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C09530","C095","净值型信托投资",,"C09530","净值型信托投资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C09535","C095","净值型资管计划",,"C09535","净值型资管计划",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"C09540","C095","非保本理财净值型",,"C09540","非保本理财净值型",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T",,"同业保函类业务",,"T","同业保函类业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010","T","同业担保类",,"T010","同业担保类",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010","T010","同业保函业务",,"T010010","同业保函业务",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010010","T010","同业借款保函",,"T010010010","同业借款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010020","T010","同业租金保付保函",,"T010010020","同业租金保付保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010030","T010","同业海关税费保函",,"T010010030","同业海关税费保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010040","T010","同业预付款保函",,"T010010040","同业预付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010050","T010","同业分期付款保函",,"T010010050","同业分期付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010060","T010","同业投标保函",,"T010010060","同业投标保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010070","T010","同业履约保函",,"T010010070","同业履约保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010080","T010","同业工程承包保函",,"T010010080","同业工程承包保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010090","T010","同业工程维修保函",,"T010010090","同业工程维修保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010100","T010","同业质量保函",,"T010010100","同业质量保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010110","T010","同业付款保函",,"T010010110","同业付款保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010120","T010","同业财产保全保函",,"T010010120","同业财产保全保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010130","T010","同业透支归还保函",,"T010010130","同业透支归还保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010140","T010","同业补偿贸易保函",,"T010010140","同业补偿贸易保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010150","T010","同业留置金保函",,"T010010150","同业留置金保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010160","T010","同业加工装配业务进口保函",,"T010010160","同业加工装配业务进口保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010170","T010","同业不可撤销支付保函(建设局)",,"T010010170","同业不可撤销支付保函(建设局)",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T010010180","T010","同业其他类保函",,"T010010180","同业其他类保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T030","T","同业国际保理",,"T030","同业国际保理",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T030010","T030","同业单保理",,"T030010","同业单保理",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T030010010","T030","同业有追索权",,"T030010010","同业有追索权",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T030010010010","T030","同业有追索权保函",,"T030010010010","同业有追索权保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T040","T","同业出口应收账款池融资",,"T040","同业出口应收账款池融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T040010","T040","同业出口应收账款池融资国内保函",,"T040010","同业出口应收账款池融资国内保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T050","T","同业出口发票池融资",,"T050","同业出口发票池融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T050010","T050","同业出口发票池融资国内保函",,"T050010","同业出口发票池融资国内保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T060","T","同业国内保理",,"T060","同业国内保理",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T060010","T060","同业有追索权",,"T060010","同业有追索权",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T060010010","T060","同业有追索权保函",,"T060010010","同业有追索权保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T070","T","同业国内保理应收账款池融资",,"T070","同业国内保理应收账款池融资",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" +"T070010","T070","同业国内保理应收账款池融资保函",,"T070010","同业国内保理应收账款池融资保函",,,"INPUT","system","2024-07-08 18:18:41.0","system","2024-07-08 18:18:41.0" diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_performance_status.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_performance_status.csv similarity index 100% rename from io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/st_performance_status.csv rename to io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_performance_status.csv diff --git a/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_tf_product.csv b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_tf_product.csv new file mode 100644 index 00000000..8f5bb9cf --- /dev/null +++ b/io.sc.standard/src/main/resources/io/sc/standard/liquibase/data/sd_tf_product.csv @@ -0,0 +1,261 @@ +"SD_TF_PRODUCT",,,,,,,,,,,, +"CODE_","PARENT_CODE_","NAME_","DESCRIPTION_","MAPPING_CODE_","MAPPING_NAME_","MAPPING_DESCRIPTION_","JPA_VERSION_","DATA_COME_FROM_","CREATOR_","CREATE_DATE_","LAST_MODIFIER_","LAST_MODIFYDATE_" +"代码","父代码","名称","说明","映射代码","映射名称","映射描述","JPA乐观锁版本","数据来源(INPUT:手工录入,IMPORT:系统自动导入)","创建人","创建日期","最后修改人","最后修改日期" +"VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","VARCHAR","INTEGER","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP" +"java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.Integer","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp" +"010100",,"先票后货标准模式",,"010100","先票后货标准模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"010200",,"担保提货",,"010200","担保提货",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"010300",,"未来货权质押开证",,"010300","未来货权质押开证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"010400",,"进口代收项下货押",,"010400","进口代收项下货押",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"010501",,"开立国内信用证",,"010501","开立国内信用证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"010502",,"国内信用证下买方押汇",,"010502","国内信用证下买方押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"010503",,"国内信用证买方代付",,"010503","国内信用证买方代付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"010600",,"法人客户按揭",,"010600","法人客户按揭",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"010700",,"其他预付类",,"010700","其他预付类",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"020100",,"标准仓单质押",,"020100","标准仓单质押",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"020200",,"非标仓单质押",,"020200","非标仓单质押",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"020300",,"现货静态",,"020300","现货静态",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"020400",,"现货动态",,"020400","现货动态",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"020500",,"提单质押",,"020500","提单质押",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"030100",,"订单融资",,"030100","订单融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"030200",,"国内保理",,"030200","国内保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"030300",,"国内保理应收账款池融资",,"030300","国内保理应收账款池融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"030400",,"信用险项下国内保理",,"030400","信用险项下国内保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"030500",,"融资租赁保理",,"030500","融资租赁保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"030600",,"货代保理",,"030600","货代保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"030700",,"应收账款商票贴现",,"030700","应收账款商票贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"030800",,"出口应收账款池融资",,"030800","出口应收账款池融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"030900",,"出口发票池融资",,"030900","出口发票池融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031000",,"出口信用险下授信",,"031000","出口信用险下授信",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031100",,"出口退税(池)融资",,"031100","出口退税(池)融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031200",,"出口双保理",,"031200","出口双保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031300",,"进口双保理",,"031300","进口双保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031400",,"商业发票贴现",,"031400","商业发票贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031501",,"国内信用证下打包放款",,"031501","国内信用证下打包放款",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031502",,"国内信用证下卖方押汇",,"031502","国内信用证下卖方押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031503",,"国内信用证议付",,"031503","国内信用证议付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031504",,"国内信用证项下贴现",,"031504","国内信用证项下贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031505",,"国内信用证卖方代付",,"031505","国内信用证卖方代付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"031600",,"其他应收类产品",,"031600","其他应收类产品",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"040100",,"进口开证",,"040100","进口开证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"040200",,"信用证项下进口押汇",,"040200","信用证项下进口押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"040300",,"进口代收押汇",,"040300","进口代收押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"040400",,"提货担保",,"040400","提货担保",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"040500",,"进口T/T(汇款)融资",,"040500","进口T/T(汇款)融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"040600",,"进口代付(不含离岸)",,"040600","进口代付(不含离岸)",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"040700",,"打包放款",,"040700","打包放款",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"040800",,"信用证项下出口押汇",,"040800","信用证项下出口押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"040900",,"出口托收押汇",,"040900","出口托收押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"041000",,"外币票据贴现和买入外币票据",,"041000","外币票据贴现和买入外币票据",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"041100",,"福费廷",,"041100","福费廷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"041200",,"出口T/T(汇款)融资",,"041200","出口T/T(汇款)融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"041300",,"其他国际贸易融资业务",,"041300","其他国际贸易融资业务",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"050100",,"信用证项下承兑电贴现",,"050100","信用证项下承兑电贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"050200",,"D/A托收项下贴现",,"050200","D/A托收项下贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"050300",,"信用证项下福费廷",,"050300","信用证项下福费廷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"050400",,"D/A托收项下福费廷",,"050400","D/A托收项下福费廷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"050500",,"离岸无不符点出口押汇",,"050500","离岸无不符点出口押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"050600",,"离岸代付",,"050600","离岸代付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"050700",,"系统内离岸背对背信用证",,"050700","系统内离岸背对背信用证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"050800",,"系统外离岸背对背信用证",,"050800","系统外离岸背对背信用证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"050900",,"出口双保理离在岸联动模式",,"050900","出口双保理离在岸联动模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"051000",,"离岸开证",,"051000","离岸开证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"051100",,"其他离岸贸易融资业务",,"051100","其他离岸贸易融资业务",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"060100",,"汽车经销商建店融资",,"060100","汽车经销商建店融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"060200",,"贸易融资银承贴现",,"060200","贸易融资银承贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"08",,"手机银行",,"08","手机银行",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"09",,"代收代付业务",,"09","代收代付业务",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"10",,"第三方存管",,"10","第三方存管",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"11",,"金卫士",,"11","金卫士",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"12",,"电话银行",,"12","电话银行",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"13",,"信用卡",,"13","信用卡",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"14",,"保管箱",,"14","保管箱",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"15",,"保险产品",,"15","保险产品",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"16",,"理财产品",,"16","理财产品",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"17",,"其他",,"17","其他",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0101",,"先票后货标准模式",,"B0101","先票后货标准模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0102",,"担保提货",,"B0102","担保提货",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0103",,"未来货权质押开证",,"B0103","未来货权质押开证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0104",,"进口代收项下货押",,"B0104","进口代收项下货押",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B010501",,"开立国内信用证",,"B010501","开立国内信用证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B010502",,"国内信用证下买方押汇",,"B010502","国内信用证下买方押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B010503",,"国内信用证买方代付",,"B010503","国内信用证买方代付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0106",,"法人客户按揭",,"B0106","法人客户按揭",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0107",,"其他预付类",,"B0107","其他预付类",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0201",,"标准仓单质押",,"B0201","标准仓单质押",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0202",,"非标仓单质押",,"B0202","非标仓单质押",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0203",,"现货静态",,"B0203","现货静态",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0204",,"现货动态",,"B0204","现货动态",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0205",,"提单质押",,"B0205","提单质押",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0300",,"付融通",,"B0300","付融通",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0301",,"订单融资",,"B0301","订单融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0302",,"国内保理",,"B0302","国内保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0303",,"国内保理应收账款池融资",,"B0303","国内保理应收账款池融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0304",,"信用险项下国内保理",,"B0304","信用险项下国内保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0305",,"融资租赁保理",,"B0305","融资租赁保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0306",,"货代保理",,"B0306","货代保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0307",,"应收账款商票贴现",,"B0307","应收账款商票贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0308",,"出口应收账款池融资",,"B0308","出口应收账款池融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0309",,"出口发票池融资",,"B0309","出口发票池融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0310",,"出口信用险下授信",,"B0310","出口信用险下授信",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0311",,"出口退税(池)融资",,"B0311","出口退税(池)融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0312",,"出口双保理",,"B0312","出口双保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0313",,"进口双保理",,"B0313","进口双保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0314",,"商业发票贴现",,"B0314","商业发票贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B031501",,"国内信用证下打包放款",,"B031501","国内信用证下打包放款",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B031502",,"国内信用证下卖方押汇",,"B031502","国内信用证下卖方押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B031503",,"国内信用证议付",,"B031503","国内信用证议付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B031504",,"国内信用证项下贴现",,"B031504","国内信用证项下贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B031505",,"国内信用证卖方代付",,"B031505","国内信用证卖方代付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0316",,"其他应收类产品",,"B0316","其他应收类产品",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0401",,"进口开证",,"B0401","进口开证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0402",,"信用证项下进口押汇",,"B0402","信用证项下进口押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0403",,"进口代收押汇",,"B0403","进口代收押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0404",,"提货担保",,"B0404","提货担保",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0405",,"进口T/T(汇款)融资",,"B0405","进口T/T(汇款)融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0406",,"进口代付(他行资金)",,"B0406","进口代付(他行资金)",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0407",,"打包放款",,"B0407","打包放款",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0408",,"信用证项下出口押汇",,"B0408","信用证项下出口押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0409",,"出口托收押汇",,"B0409","出口托收押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0410",,"外币票据贴现和买入外币票据",,"B0410","外币票据贴现和买入外币票据",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0411",,"福费廷",,"B0411","福费廷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0412",,"出口T/T(汇款)融资",,"B0412","出口T/T(汇款)融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0413",,"其他国际贸易融资业务",,"B0413","其他国际贸易融资业务",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0501",,"信用证项下承兑电贴现",,"B0501","信用证项下承兑电贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0502",,"D/A托收项下贴现",,"B0502","D/A托收项下贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0503",,"信用证项下福费廷",,"B0503","信用证项下福费廷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0504",,"D/A托收项下福费廷",,"B0504","D/A托收项下福费廷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0505",,"离岸无不符点出口押汇",,"B0505","离岸无不符点出口押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0506",,"离岸代付(我行离岸资金)",,"B0506","离岸代付(我行离岸资金)",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0507",,"系统内离岸背对背信用证",,"B0507","系统内离岸背对背信用证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0508",,"系统外离岸背对背信用证",,"B0508","系统外离岸背对背信用证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0509",,"出口双保理离在岸联动模式",,"B0509","出口双保理离在岸联动模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0510",,"离岸开证",,"B0510","离岸开证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0511",,"其他离岸贸易融资业务",,"B0511","其他离岸贸易融资业务",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0601",,"建店融资",,"B0601","建店融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"B0602",,"贸易融资银承贴现",,"B0602","贸易融资银承贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010010",,"先票后货标准模式",,"D010010010","先票后货标准模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010020",,"担保提货(保兑仓)",,"D010010020","担保提货(保兑仓)",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010030",,"标准仓单质押-拟交割仓单",,"D010010030","标准仓单质押-拟交割仓单",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010040",,"国内贸易贷款短期信用险融资(保付贷)",,"D010010040","国内贸易贷款短期信用险融资(保付贷)",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010050",,"反向采购融资",,"D010010050","反向采购融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010051",,"卖方担保模式",,"D010010051","卖方担保模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010052",,"差额回购模式",,"D010010052","差额回购模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010053",,"共赢池模式",,"D010010053","共赢池模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010054",,"先票后货保购模式",,"D010010054","先票后货保购模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010055",,"提货权调剂销售模式",,"D010010055","提货权调剂销售模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010056",,"提货权控证模式",,"D010010056","提货权控证模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010057",,"订单预付融资模式",,"D010010057","订单预付融资模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010060",,"其它预付类产品",,"D010010060","其它预付类产品",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010065",,"代理远期开信用证(国内)",,"D010010065","代理远期开信用证(国内)",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010010066",,"代理远期信用证承兑(国内)",,"D010010066","代理远期信用证承兑(国内)",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020010",,"标准仓单质押-现单",,"D010020010","标准仓单质押-现单",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020020",,"非标仓单质押",,"D010020020","非标仓单质押",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020030010",,"现货静态-普通模式",,"D010020030010","现货静态-普通模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020030020",,"现货静态-全程物流模式",,"D010020030020","现货静态-全程物流模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020040010",,"现货动态-普通模式",,"D010020040010","现货动态-普通模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020040020",,"现货动态-全程物流模式",,"D010020040020","现货动态-全程物流模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020045010",,"商品套期保值融资-标单",,"D010020045010","商品套期保值融资-标单",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020045020",,"商品套期保值融资-准标单",,"D010020045020","商品套期保值融资-准标单",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020045030",,"商品套期保值融资-动产",,"D010020045030","商品套期保值融资-动产",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020050",,"提单质押",,"D010020050","提单质押",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010020060",,"其它存货类产品",,"D010020060","其它存货类产品",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010010",,"国内保理-普通模式",,"D010030010010","国内保理-普通模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010015",,"国内保理-应收账款池融资",,"D010030010015","国内保理-应收账款池融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010020",,"信用险项下国内保理",,"D010030010020","信用险项下国内保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010025",,"反向保理",,"D010030010025","反向保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010030",,"融资租赁保理",,"D010030010030","融资租赁保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010035",,"货代保理",,"D010030010035","货代保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010040",,"工程保理",,"D010030010040","工程保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010045010",,"付融通-普通模式",,"D010030010045010","付融通-普通模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010045020",,"付融通-售后回租",,"D010030010045020","付融通-售后回租",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010045030",,"付融通+付款保函模式",,"D010030010045030","付融通+付款保函模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010045040",,"付融通-好链",,"D010030010045040","付融通-好链",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010050010",,"国内双保理-买方保理",,"D010030010050010","国内双保理-买方保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030010050020",,"国内双保理-卖方保理",,"D010030010050020","国内双保理-卖方保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030020010",,"应收类商票授信—贴现模式",,"D010030020010","应收类商票授信—贴现模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030020020",,"应收类商票授信—保贴模式",,"D010030020020","应收类商票授信—保贴模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030030",,"应收账款质押授信",,"D010030030","应收账款质押授信",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030040010",,"经销商分期销售融资",,"D010030040010","经销商分期销售融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030040020",,"订单融资",,"D010030040020","订单融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030040030",,"再保理",,"D010030040030","再保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030040040",,"商业保理公司融资",,"D010030040040","商业保理公司融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010030040050",,"其它应收类产品",,"D010030040050","其它应收类产品",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040010",,"客车按揭融资",,"D010040010","客车按揭融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040020",,"机器设备融资",,"D010040020","机器设备融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040030",,"汽车经销商建店融资",,"D010040030","汽车经销商建店融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040040",,"ERP监管融资",,"D010040040","ERP监管融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040050",,"贸易融资银承贴现",,"D010040050","贸易融资银承贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040060",,"其他商票贴现",,"D010040060","其他商票贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040070010",,"开立国内信用证",,"D010040070010","开立国内信用证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040070020",,"国内信用证下买方押汇",,"D010040070020","国内信用证下买方押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040070030",,"国内信用证买方代付",,"D010040070030","国内信用证买方代付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040070040",,"国内信用证下打包放款",,"D010040070040","国内信用证下打包放款",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040070050",,"国内信用证下卖方押汇",,"D010040070050","国内信用证下卖方押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040070060",,"国内信用证议付",,"D010040070060","国内信用证议付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040070070",,"国内信用证项下贴现",,"D010040070070","国内信用证项下贴现",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040070080",,"国内信用证卖方代付",,"D010040070080","国内信用证卖方代付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040070090",,"国内信用证项下福费廷",,"D010040070090","国内信用证项下福费廷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040070110",,"国内信用证承兑电质押授信",,"D010040070110","国内信用证承兑电质押授信",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040080",,"其他贸易融资业务",,"D010040080","其他贸易融资业务",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010040090",,"买付通",,"D010040090","买付通",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010050010",,"国内对公人民币非融资类保函",,"D010050010","国内对公人民币非融资类保函",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D010050020",,"国内对公人民币融资类保函",,"D010050020","国内对公人民币融资类保函",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010010010",,"未来货权质押开证",,"D020010010010","未来货权质押开证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010010020",,"其他进口开证",,"D020010010020","其他进口开证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010020",,"信用证项下进口押汇",,"D020010020","信用证项下进口押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010030",,"进口代收押汇",,"D020010030","进口代收押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010040",,"提货担保",,"D020010040","提货担保",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010050",,"进口代收项下货权质押授信",,"D020010050","进口代收项下货权质押授信",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010060",,"进口T/T(汇款)融资",,"D020010060","进口T/T(汇款)融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010070",,"进口代付",,"D020010070","进口代付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010080010",,"进口双保理—普通模式",,"D020010080010","进口双保理—普通模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010080020",,"进口双保理—售后回租模式",,"D020010080020","进口双保理—售后回租模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010090",,"进口单保理",,"D020010090","进口单保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010095",,"进口买方信贷",,"D020010095","进口买方信贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010100010",,"代理远期开信用证",,"D020010100010","代理远期开信用证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020010100020",,"代理远期信用证承兑",,"D020010100020","代理远期信用证承兑",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020010",,"打包放款",,"D020020010","打包放款",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020015",,"信用证项下出口押汇",,"D020020015","信用证项下出口押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020020",,"出口托收押汇",,"D020020020","出口托收押汇",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020025",,"外币票据贴现和买入外币票据",,"D020020025","外币票据贴现和买入外币票据",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020030",,"福费廷",,"D020020030","福费廷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020035",,"出口T/T(汇款)融资",,"D020020035","出口T/T(汇款)融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020040",,"出口代付",,"D020020040","出口代付",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020045",,"出口应收账款池融资",,"D020020045","出口应收账款池融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020050",,"出口发票池融资",,"D020020050","出口发票池融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020055",,"出口信用险下授信",,"D020020055","出口信用险下授信",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020060",,"出口退税(池)融资",,"D020020060","出口退税(池)融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020065010",,"出口双保理—普通模式",,"D020020065010","出口双保理—普通模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020065020",,"出口双保理—离在岸联动模式",,"D020020065020","出口双保理—离在岸联动模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020065030",,"出口双保理—售后回租模式",,"D020020065030","出口双保理—售后回租模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020065040",,"出口双保理—预付款融资模式",,"D020020065040","出口双保理—预付款融资模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020070010",,"出口单保理—普通模式",,"D020020070010","出口单保理—普通模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020070020",,"出口单保理—预付款融资模式",,"D020020070020","出口单保理—预付款融资模式",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020075",,"信用险项下出口保理",,"D020020075","信用险项下出口保理",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020080",,"卖方信贷",,"D020020080","卖方信贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020090",,"代理开立备用信用证(跨境)",,"D020020090","代理开立备用信用证(跨境)",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020020091",,"代理开立外币融资性保函",,"D020020091","代理开立外币融资性保函",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020030010",,"对外保函",,"D020030010","对外保函",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020030020",,"保付加签",,"D020030020","保付加签",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020030030",,"备用信用证",,"D020030030","备用信用证",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020030035",,"外汇储备委托贷款",,"D020030035","外汇储备委托贷款",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"D020030040",,"其他国际贸易融资业务",,"D020030040","其他国际贸易融资业务",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010010",,"行业发票贷",,"E010010","行业发票贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010015",,"发票贷",,"E010015","发票贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010020",,"园区税金贷",,"E010020","园区税金贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010025",,"税金贷",,"E010025","税金贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010030",,"出口退税贷",,"E010030","出口退税贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010035",,"电商数据贷",,"E010035","电商数据贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010040",,"企业保费贷",,"E010040","企业保费贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010045",,"外贸数据贷",,"E010045","外贸数据贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010050",,"中标贷",,"E010050","中标贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010055",,"投标贷",,"E010055","投标贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010065",,"物流数据贷",,"E010065","物流数据贷",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E010070",,"其他标准化融资产品",,"E010070","其他标准化融资产品",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E020010",,"产业链经销商融资",,"E020010","产业链经销商融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E020015",,"产业链供应商融资",,"E020015","产业链供应商融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E020020",,"品牌经销商融资",,"E020020","品牌经销商融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E020025",,"核心企业赊销池融资",,"E020025","核心企业赊销池融资",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"E020030",,"其他产业链融资产品",,"E020030","其他产业链融资产品",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" +"F010",,"票据池质押融资产品",,"F010","票据池质押融资产品",,,"INPUT","system","2024-07-08 18:19:12.0","system","2024-07-08 18:19:12.0" diff --git a/io.sc.standard/src/main/resources/liquibase/io.sc.standard_1.0.0_20221020__Standard Data.xml b/io.sc.standard/src/main/resources/liquibase/io.sc.standard_1.0.0_20221020__Standard Data.xml index 69a67985..87f08fdb 100644 --- a/io.sc.standard/src/main/resources/liquibase/io.sc.standard_1.0.0_20221020__Standard Data.xml +++ b/io.sc.standard/src/main/resources/liquibase/io.sc.standard_1.0.0_20221020__Standard Data.xml @@ -18,32 +18,57 @@ - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/io.sc.standard/src/main/resources/liquibase/io.sc.standard_1.0.0_20221020__Standard Schema DDL.xml b/io.sc.standard/src/main/resources/liquibase/io.sc.standard_1.0.0_20221020__Standard Schema DDL.xml index 42572c15..13f09c95 100644 --- a/io.sc.standard/src/main/resources/liquibase/io.sc.standard_1.0.0_20221020__Standard Schema DDL.xml +++ b/io.sc.standard/src/main/resources/liquibase/io.sc.standard_1.0.0_20221020__Standard Schema DDL.xml @@ -13,15 +13,15 @@ - + - - - - - - + + + + + + @@ -36,15 +36,15 @@ - + - - - - - - + + + + + + @@ -59,14 +59,14 @@ - + - - - - - + + + + + @@ -81,14 +81,14 @@ - + - - - - - + + + + + @@ -103,22 +103,22 @@ - + - - - - - - - - - - - + + + + + + + + + + + - + @@ -133,13 +133,13 @@ - + - - - - + + + + @@ -151,6 +151,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings.gradle b/settings.gradle index 9641c7a9..6d4bb396 100755 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,4 @@ +include ':app.engine.rule' include ':app.platform' include ':app.platform.scheduler.executor' include ':app.platform.scheduler.manager' @@ -9,11 +10,13 @@ include ':erm.api' include ':erm.frontend' include ':io.sc.algorithm.weka' include ':io.sc.engine.mv' +include ':io.sc.engine.mv.doc' include ':io.sc.engine.mv.frontend' include ':io.sc.engine.mv.sample' include ':io.sc.engine.rule.client' include ':io.sc.engine.rule.client.spring' include ':io.sc.engine.rule.core' +include ':io.sc.engine.rule.doc' include ':io.sc.engine.rule.frontend' include ':io.sc.engine.rule.sample' include ':io.sc.engine.rule.server'