Browse Source

基础框架发布: 8.2.45

1) 修复模型验证模块中的 bug

前端核心框架发布: 8.2.140
main
wangshaoping 4 weeks ago
parent
commit
c666f29b09
  1. 0
      .zed/settings.json
  2. 0
      app.platformnull/platform/schema/liquibase.xml
  3. 2
      build.gradle
  4. 2
      gradle.properties
  5. BIN
      gradle/wrapper/gradle-wrapper.jar
  6. 2
      gradle/wrapper/gradle-wrapper.properties
  7. 9
      gradlew
  8. 4
      gradlew.bat
  9. 1
      io.sc.engine.mv.frontend/src/i18n/messages_tw_CN.json
  10. 2
      io.sc.engine.mv.frontend/src/i18n/messages_zh_CN.json
  11. 14
      io.sc.engine.mv.frontend/src/views/config/model.vue
  12. 4
      io.sc.engine.mv/src/main/java/io/sc/engine/mv/configure/service/impl/CfgScaleServiceImpl.java
  13. 7
      io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScCapExecutor.java
  14. 2
      io.sc.engine.rule.frontend/src/views/resources/Resources.vue
  15. 2
      io.sc.platform.core.frontend/.npmrc
  16. 9
      io.sc.platform.core.frontend/.vscode/extensions.json
  17. 22
      io.sc.platform.developer.doc/asciidoc/9999-appendix/java/java.adoc
  18. 5
      io.sc.platform.help/build.gradle
  19. 68
      io.sc.platform.help/src/main/java/io/sc/platform/help/plugins/PluginManager.java
  20. 12
      io.sc.platform.help/src/main/java/io/sc/platform/help/plugins/PluginSpiServiceImpl.java
  21. 33
      io.sc.platform.help/src/main/java/io/sc/platform/help/plugins/item/Help.java
  22. 3
      io.sc.platform.springcloud.openfeign/src/main/java/io/sc/platform/springcloud/openfeign/example/Sample.java
  23. 29
      io.sc.platform.util/src/main/java/io/sc/platform/util/ManifestUtil.java
  24. 5
      io.sc.platform.util/src/main/java/io/sc/platform/util/MapUtil.java
  25. 1
      settings.gradle

0
.zed/settings.json

0
app.platformnull/platform/schema/liquibase.xml

2
build.gradle

@ -920,6 +920,8 @@ idea {
task clean {
doFirst{
delete 'out'
delete 'bin'
delete '.settings'
}
}

2
gradle.properties

@ -6,7 +6,7 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
org.gradle.configureondemand=true
systemProp.org.gradle.internal.publish.checksums.insecure=true
org.gradle.parallel=true
org.gradle.workers.max=1
org.gradle.workers.max=2
###########################################################
# Maven private repository configuration

BIN
gradle/wrapper/gradle-wrapper.jar

Binary file not shown.

2
gradle/wrapper/gradle-wrapper.properties

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=http\://nexus.sc.io\:8000/repository/maven-releases/gradle/gradle/8.10.1/gradle-8.10.1-bin.zip
distributionUrl=http\://nexus.sc.io\:8000/repository/maven-releases/gradle/gradle/8.14.3/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

9
gradlew

@ -86,8 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@ -115,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@ -206,7 +205,7 @@ fi
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
@ -214,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.

4
gradlew.bat

@ -70,11 +70,11 @@ goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
set CLASSPATH=
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell

1
io.sc.engine.mv.frontend/src/i18n/messages_tw_CN.json

@ -54,6 +54,7 @@
"io.sc.engine.mv.config.model.grid.entity.type": "模型創建類型",
"io.sc.engine.mv.config.model.grid.entity.modelId": "模型標識",
"io.sc.engine.mv.config.model.grid.entity.modelName": "模型名稱",
"io.sc.engine.mv.config.model.grid.action.importFromScoreRecord": "您確定要從評分記錄表中導入模型?",
"io.sc.engine.mv.config.distribution.grid.title": "咨詢建模時樣本分佈情況配置列表",
"io.sc.engine.mv.config.distribution.grid.entity.modelId": "模型標示",

2
io.sc.engine.mv.frontend/src/i18n/messages_zh_CN.json

@ -54,6 +54,7 @@
"io.sc.engine.mv.config.model.grid.entity.type": "模型创建类型",
"io.sc.engine.mv.config.model.grid.entity.modelId": "模型标识",
"io.sc.engine.mv.config.model.grid.entity.modelName": "模型名称",
"io.sc.engine.mv.config.model.grid.action.importFromScoreRecord": "您确定要从评级记录表中导入模型?",
"io.sc.engine.mv.config.distribution.grid.title": "咨询建模时样本分布情况配置列表",
"io.sc.engine.mv.config.distribution.grid.entity.modelId": "模型标识",
@ -101,7 +102,6 @@
"io.sc.engine.mv.sample.sample.grid.entity.endDate": "评分结束日期",
"io.sc.engine.mv.sample.sample.grid.entity.defaultConfirmDate": "违约确定日期",
"io.sc.engine.mv.sample.scoreRecord.grid.title": "评分记录列表",
"io.sc.engine.mv.sample.scoreRecord.grid.entity.customId": "客户标识",
"io.sc.engine.mv.sample.scoreRecord.grid.entity.customName": "客户名称",

14
io.sc.engine.mv.frontend/src/views/config/model.vue

@ -1,5 +1,6 @@
<template>
<w-grid
ref="gridRef"
:title="$t('io.sc.engine.mv.config.model.grid.title')"
hide-bottom
:config-button="true"
@ -20,7 +21,13 @@
name: 'importFromScoreRecordTable',
label: $t('io.sc.engine.mv.config.model.grid.toolbar.importFromScoreRecordTable'),
icon: 'bi-arrow-right-circle',
click: () => {},
click: () => {
DialogManager.confirm($t('io.sc.engine.mv.config.model.grid.action.importFromScoreRecord'), () => {
axios.post(Environment.apiContextPath('/api/mv/configure/model/importFromScoreRecord')).then((response) => {
gridRef.refresh();
});
});
},
},
'separator',
'view',
@ -63,7 +70,10 @@
</template>
<script setup lang="ts">
import 'tailwindcss/utilities.css';
import { Environment, EnumTools, Formater } from 'platform-core';
import { ref } from 'vue';
import { axios, Environment, EnumTools, Formater, DialogManager } from 'platform-core';
const gridRef = ref();
const ModelTypeEnum = await EnumTools.fetch('io.sc.engine.mv.enums.ModelType');
</script>

4
io.sc.engine.mv/src/main/java/io/sc/engine/mv/configure/service/impl/CfgScaleServiceImpl.java

@ -4,6 +4,7 @@ import io.sc.engine.mv.configure.jpa.entity.CfgScale;
import io.sc.engine.mv.configure.jpa.repository.CfgScaleRepository;
import io.sc.engine.mv.configure.service.CfgScaleService;
import io.sc.platform.orm.service.impl.DaoServiceImpl;
import io.sc.platform.util.StringUtil;
import org.springframework.stereotype.Service;
@Service("io.sc.engine.mv.configure.service.impl.CfgScaleServiceImpl")
@ -15,6 +16,9 @@ public class CfgScaleServiceImpl extends DaoServiceImpl<CfgScale, String, CfgSca
@Override
public CfgScale findByUniqueKey(CfgScale entity) {
if(StringUtil.hasText(entity.getId())) {
return findById(entity.getId());
}
return null;
}
}

7
io.sc.engine.mv/src/main/java/io/sc/engine/mv/validator/executor/impl/ScCapExecutor.java

@ -253,7 +253,12 @@ public class ScCapExecutor extends AbstractExecutor {
slope =(double)defaultCount/(double)allCount;
}
//计算 AR 值
double ar =(area-0.5)/((1-slope+1)/2-0.5);
double ar =0;
double numerator =area-0.5; //分子
double denominator =(1 - slope + 1) / 2 - 0.5; //分母
if(numerator!=0 && denominator!=0) {
ar = numerator / denominator;
}
//更新模型验证结果表
int updated =jdbcTemplate.update("update MV_GENERAL_RESULT set " + variable.getKpiFieldName() + "=? where FD_MODEL_ID=?", ar,modelId);

2
io.sc.engine.rule.frontend/src/views/resources/Resources.vue

@ -37,9 +37,7 @@
extend: 'addTop',
label: $t('re.resources.grid.toolbar.addTop'),
afterClick: (args: any) => {
console.log('>>>>>>1', args.grid.getEditorForm());
args.grid.getEditorForm().setFieldValue('type', 'FOLDER');
console.log('>>>>>>2');
},
},
{

2
io.sc.platform.core.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

9
io.sc.platform.core.frontend/.vscode/extensions.json

@ -1,9 +0,0 @@
{
"recommendations": [
"Vue.volar",
"Vue.vscode-typescript-vue-plugin",
"bradlc.vscode-tailwindcss",
"christian-kohler.path-intellisense",
// "esbenp.prettier-vscode"
]
}

22
io.sc.platform.developer.doc/asciidoc/9999-appendix/java/java.adoc

@ -1,6 +1,28 @@
[appendix]
= JAVA
== 常用技巧
=== JDK 版本管理工具 sdkman
SDKMAN!(Software Development Kit Manager)是类
Unix 系统(Linux、macOS、Windows WSL 等)上的开源命令行 SDK 版本管理工具,
原名 GVM(Groovy enVironment Manager),主打 JVM 生态工具管理,
能一键安装、切换、卸载多版本 SDK 并自动配置环境变量,轻量且免费开源。
[source, bash]
----
# 设置环境变量, 避免因为网络原因无法正常安装 sdkman
export SDKMAN_CANDIDATES_REPO="https://mirrors.tuna.tsinghua.edu.cn/Adoptium"
# 开始安装 sdkman
curl -s "https://get.sdkman.io" | bash
# 初始化 sdkman
source "$HOME/.sdkman/bin/sdkman-init.sh"
# 测试 sdkman
sdk version
----
=== 日志输出模式
在日志输出时,在拼接字符串时,请使用字符串模版方式。
[source,java]

5
io.sc.platform.help/build.gradle

@ -0,0 +1,5 @@
dependencies {
api(
project(":io.sc.platform.mvc"),
)
}

68
io.sc.platform.help/src/main/java/io/sc/platform/help/plugins/PluginManager.java

@ -0,0 +1,68 @@
package io.sc.platform.help.plugins;
import com.fasterxml.jackson.core.type.TypeReference;
import io.sc.platform.core.plugins.Plugin;
import io.sc.platform.core.plugins.PluginParser;
import io.sc.platform.help.plugins.item.Help;
import java.util.ArrayList;
import java.util.List;
/**
* 帮助文档处理插件
*/
public class PluginManager {
private static final String HELP_LOCATION ="META-INF/platform/plugins/helps.json";
//系统参数插件
private List<Plugin<List<Help>>> helpPlugins;
private List<Help> helps; //按优先级合并后的列表
/**
* 获取单例模式实例
* @return 实例
*/
public static PluginManager getInstance(){
return PluginManagerHolder.instance;
}
private static class PluginManagerHolder{
private static PluginManager instance =new PluginManager();
}
private PluginManager(){
PluginParser parser =new PluginParser();
loadHelpPlugins(parser);
}
public List<Plugin<List<Help>>> getHelpPlugins() {
return helpPlugins;
}
public void setHelpPlugins(List<Plugin<List<Help>>> helpPlugins) {
this.helpPlugins = helpPlugins;
}
public List<Help> getHelps() {
return helps;
}
public void setHelps(List<Help> helps) {
this.helps = helps;
}
private void loadHelpPlugins(PluginParser parser) {
helpPlugins =parser.parse(HELP_LOCATION,new TypeReference<List<Help>>(){});
//处理未按优先级合并的贡献项列表
if(helpPlugins!=null && !helpPlugins.isEmpty()){
List<Help> items =new ArrayList<>();
for(Plugin<List<Help>> plugin : helpPlugins){
List<Help> innerHelps =plugin.getValue();
if(innerHelps!=null && !innerHelps.isEmpty()){
for(Help entity : innerHelps){
entity.setConfigurationFileUrl(plugin.getFileUrl());
}
items.addAll(innerHelps);
}
}
this.helps =items;
}
}
}

12
io.sc.platform.help/src/main/java/io/sc/platform/help/plugins/PluginSpiServiceImpl.java

@ -0,0 +1,12 @@
package io.sc.platform.help.plugins;
import io.sc.platform.core.spi.PluginSpiService;
/**
* 该类为 java SPI(Service Provider Interface) 模式的实现类, 用于加载插件
*/
public class PluginSpiServiceImpl implements PluginSpiService {
public PluginSpiServiceImpl(){
PluginManager.getInstance();
}
}

33
io.sc.platform.help/src/main/java/io/sc/platform/help/plugins/item/Help.java

@ -0,0 +1,33 @@
package io.sc.platform.help.plugins.item;
public class Help {
protected String id;
protected String url;
//附加属性
private String configurationFileUrl; //帮助贡献项配置文件位置
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getConfigurationFileUrl() {
return configurationFileUrl;
}
public void setConfigurationFileUrl(String configurationFileUrl) {
this.configurationFileUrl = configurationFileUrl;
}
}

3
io.sc.platform.springcloud.openfeign/src/main/java/io/sc/platform/springcloud/openfeign/example/Sample.java

@ -1,6 +1,5 @@
package io.sc.platform.springcloud.openfeign.example;
import org.bouncycastle.util.Store;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@ -10,5 +9,5 @@ import java.util.List;
@FeignClient("openfeignSample")
public interface Sample {
@RequestMapping(name = "user", value = "/api/system/user", method = RequestMethod.GET)
public List<Store> getUsers();
public List<String> getUsers();
}

29
io.sc.platform.util/src/main/java/io/sc/platform/util/ManifestUtil.java

@ -14,9 +14,38 @@ import java.util.jar.Manifest;
*/
public class ManifestUtil {
private ManifestUtil(){}
/**
* 获取 MANIFEST.MF 文件中 Main-Class 属性值
* @return Main-Class 属性值
*/
public static String getMainClass(){
return getMainClass(null);
}
/**
* 获取 MANIFEST.MF 文件中 Main-Class 属性值
* @param classLoader 类加载器
* @return Main-Class 属性值
*/
public static String getMainClass(ClassLoader classLoader){
Attributes attrs = getMainAttributes(classLoader);
return attrs.getValue(Attributes.Name.MAIN_CLASS);
}
/**
* 获取 MANIFEST.MF 文件中所有属性
* @return 所有属性
*/
public static Attributes getMainAttributes(){
return getMainAttributes(null);
}
/**
* 获取 MANIFEST.MF 文件中所有属性
* @param classLoader 类加载器
* @return 所有属性
*/
public static Attributes getMainAttributes(ClassLoader classLoader){
Resource rs = new DefaultResourceLoader(classLoader).getResource("classpath:/META-INF/MANIFEST.MF");
if(rs.exists()){

5
io.sc.platform.util/src/main/java/io/sc/platform/util/MapUtil.java

@ -7,6 +7,11 @@ import java.util.HashMap;
import java.util.Map;
public class MapUtil {
/**
* 创建一个不可变的 Map包含指定的键值对
* @param kvs 键值对数组
* @return 不可变的 Map
*/
public static<K,V> Map<K,V> of(KV<K,V>... kvs){
if(kvs==null || kvs.length==0){
return Collections.emptyMap();

1
settings.gradle

@ -39,6 +39,7 @@ include ':io.sc.platform.developer.doc'
include ':io.sc.platform.developer.frontend'
include ':io.sc.platform.flowable'
include ':io.sc.platform.groovy'
include ':io.sc.platform.help'
include ':io.sc.platform.installer'
include ':io.sc.platform.jdbc'
include ':io.sc.platform.jdbc.driver'

Loading…
Cancel
Save