Browse Source

update

main
wangshaoping 10 months ago
parent
commit
7e74d7c42d
  1. 37
      io.sc.algorithm.weka/src/main/java/io/sc/algorithm/weka/initializer/WekaInitializer.java
  2. 125
      io.sc.engine.st.frontend/src/views/TestCase/TestResult.vue
  3. 20
      io.sc.engine.st/src/main/java/io/sc/engine/st/controller/TestScenarioWebController.java
  4. 47
      io.sc.engine.st/src/main/java/io/sc/engine/st/enums/ValueType.java
  5. 107
      io.sc.engine.st/src/main/java/io/sc/engine/st/jpa/entity/TestScenarioEntity.java
  6. 10
      io.sc.engine.st/src/main/java/io/sc/engine/st/jpa/repository/TestScenarioRepository.java
  7. 8
      io.sc.engine.st/src/main/java/io/sc/engine/st/service/TestScenarioService.java
  8. 12
      io.sc.engine.st/src/main/java/io/sc/engine/st/service/impl/TestScenarioServiceImpl.java
  9. 70
      io.sc.engine.st/src/main/java/io/sc/engine/st/vo/TestScenarioVo.java
  10. 2
      io.sc.platform.core.frontend/src/platform/components/echarts/WEcharts.vue
  11. 29
      io.sc.platform.core.frontend/template-project/util-components-generator.cjs
  12. 29
      io.sc.platform.core.frontend/util-components-generator.cjs
  13. 1
      io.sc.platform.core/src/main/java/io/sc/platform/core/response/ValidateException.java
  14. 3
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties
  15. 3
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties
  16. 3
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties
  17. 5
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/validator/ValidatorMessage.java
  18. 8
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/validator/ValidatorRegExp.java
  19. 1
      io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/validator.properties
  20. 1
      io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/validator_tw_CN.properties
  21. 1
      io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/validator_zh_CN.properties

37
io.sc.algorithm.weka/src/main/java/io/sc/algorithm/weka/initializer/WekaInitializer.java

@ -0,0 +1,37 @@
package io.sc.algorithm.weka.initializer;
import io.sc.platform.core.initializer.ApplicationInitializer;
import io.sc.platform.core.initializer.ApplicationInitializerExecuteException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import weka.core.WekaPackageManager;
public class WekaInitializer implements ApplicationInitializer {
private static final Logger log = LoggerFactory.getLogger(WekaInitializer.class);
private Boolean isInitialized =null;
@Override
public void init(ApplicationContext applicationContext) {
}
@Override
public int getOrder() {
return 1400;
}
@Override
public synchronized boolean isInitialized() {
if(isInitialized!=null) {
return isInitialized;
}
isInitialized =false;
return isInitialized;
}
@Override
public void execute() throws ApplicationInitializerExecuteException {
//WekaPackageManager.loadPackages(true);
isInitialized =true;
}
}

125
io.sc.engine.st.frontend/src/views/TestCase/TestResult.vue

@ -0,0 +1,125 @@
<template>
<div style="height: 100%">
<w-grid
ref="gridRef"
:title="$t('engine.st.testResult.grid.title')"
dense
:checkbox-selection="false"
:fetch-data-url="Environment.apiContextPath('/api/st/testResult?testCase=' + factorDefine.id)"
:pageable="false"
:sort-by="['year', 'quarter', 'month']"
:query-form-cols-num="4"
:query-form-fields="[]"
:toolbar-actions="['refresh', 'separator', 'view', 'separator', 'export']"
:columns="[
{ width: 60, name: 'year', label: t('year'), align: 'right' },
{ width: 60, name: 'quarter', label: t('quarter'), align: 'right' },
{ width: 60, name: 'month', label: t('month'), align: 'right' },
{ width: 100, name: 'valueLow', label: t('engine.st.scenario.scenarioFactor.grid.entity.valueLow') },
{ width: 100, name: 'valueMid', label: t('engine.st.scenario.scenarioFactor.grid.entity.valueMid') },
{ width: 100, name: 'valueHigh', label: t('engine.st.scenario.scenarioFactor.grid.entity.valueHigh') },
]"
:viewer="{
panel: {
columnNum: 1,
fields: [
{ name: 'id', label: $t('id') },
{ name: 'testCase', label: $t('engine.st.indepFactorDefine.grid.entity.factorDefine') },
{ name: 'year', label: $t('year') },
{ name: 'quarter', label: $t('quarter') },
{ name: 'month', label: $t('month') },
{ name: 'value', label: $t('value') },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
}"
@after-request-data="
() => {
const rows = gridRef.getRows();
const xAxisData = [];
const seriesData = [];
for (const row of rows) {
xAxisData.push(row.year + (row.month ? '-' + row.month : ''));
seriesData.push(row.valueLow);
}
echartsOptionRef = {
title: {
text: factorDefine.name,
left: 'center',
},
xAxis: {
type: 'category',
name: $t('period'),
data: xAxisData,
},
yAxis: {
type: 'value',
name: $t('value'),
},
series: [
{
data: seriesData,
type: 'line',
smooth: true,
},
],
};
}
"
></w-grid>
</div>
</template>
<script setup lang="ts">
import { ref, computed, onUpdated } from 'vue';
import { useI18n } from 'vue-i18n';
import { axios, Environment, Formater } from 'platform-core';
const props = defineProps({
factorDefine: {
type: Object,
default: () => {
return {};
},
},
});
const { t } = useI18n();
const gridRef = ref();
const echartsOptionRef = ref();
const dialogRef = ref();
const getFactorColumns = computed(() => {
let result = [{ width: 60, name: 'year', label: t('year'), align: 'right' }];
result.push({ width: 60, name: 'month', label: t('month'), align: 'right' });
result.push({ width: 100, name: 'valueLow', label: t('engine.st.scenario.scenarioFactor.grid.entity.valueLow') });
result.push({ width: 100, name: 'valueMid', label: t('engine.st.scenario.scenarioFactor.grid.entity.valueMid') });
result.push({ width: 100, name: 'valueHigh', label: t('engine.st.scenario.scenarioFactor.grid.entity.valueHigh') });
return result;
});
const fillWithPercentile = (settings) => {
axios
.post(Environment.apiContextPath('/api/st/scenarioFactor/fillWithPercentile?scenarioFactorId=' + gridRef.value.getSelectedRow().id), settings)
.then(() => {
refresh();
dialogRef.value.close();
});
};
const refresh = () => {
gridRef.value.refresh();
};
onUpdated(() => {
gridRef.value.refresh();
});
defineExpose({
refresh,
});
</script>

20
io.sc.engine.st/src/main/java/io/sc/engine/st/controller/TestScenarioWebController.java

@ -1,20 +0,0 @@
package io.sc.engine.st.controller;
import io.sc.engine.st.jpa.entity.TestScenarioEntity;
import io.sc.engine.st.jpa.repository.TestScenarioRepository;
import io.sc.engine.st.service.TestScenarioService;
import io.sc.engine.st.vo.TestScenarioVo;
import io.sc.platform.mvc.controller.support.RestCrudController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Locale;
@RestController("io.sc.engine.st.controller.TestScenarioWebController")
@RequestMapping("/api/st/testScenario")
public class TestScenarioWebController extends RestCrudController<TestScenarioVo, TestScenarioEntity,String, TestScenarioRepository, TestScenarioService> {
}

47
io.sc.engine.st/src/main/java/io/sc/engine/st/enums/ValueType.java

@ -1,10 +1,55 @@
package io.sc.engine.st.enums; package io.sc.engine.st.enums;
import io.sc.platform.core.util.DateUtil;
import org.springframework.util.StringUtils;
import java.text.ParseException;
import java.util.Date;
/** /**
* 值类型枚举 * 值类型枚举
*/ */
public enum ValueType { public enum ValueType {
NUMBER, //数字 NUMERIC, //数字
STRING, //字符串 STRING, //字符串
DATE; //日期 DATE; //日期
/**
* 获取值类型对应的 Java
* @return 值类型对应的 Java
*/
public Class<?> getJavaType(){
switch (this){
case NUMERIC:
return Double.class;
case STRING:
return String.class;
case DATE:
return Date.class;
default:
return null;
}
}
/**
* 获取值
* @param value 值的字符串
* @return 值对象
* @throws ParseException 解析错误
*/
public Object getValue(String value) throws ParseException {
if(!StringUtils.hasText(value)){
return null;
}
switch (this){
case NUMERIC:
return Double.parseDouble(value);
case STRING:
return value;
case DATE:
return DateUtil.tryParseDate(value);
default:
return null;
}
}
} }

107
io.sc.engine.st/src/main/java/io/sc/engine/st/jpa/entity/TestScenarioEntity.java

@ -1,107 +0,0 @@
package io.sc.engine.st.jpa.entity;
import io.sc.engine.st.enums.StatisticalPeriodType;
import io.sc.engine.st.vo.TestScenarioVo;
import io.sc.platform.orm.entity.CorporationAuditorEntity;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
@Entity(name="io.sc.engine.st.jpa.entity.TestScenarioEntity")
@Table(name="ST_TEST_SCENARIO")
public class TestScenarioEntity extends CorporationAuditorEntity<TestScenarioVo> {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
@Column(name="ID_", length=36)
@Size(max=36)
protected String id;
@Column(name="INDICATOR_", length=255)
@NotBlank
@Size(max=255)
protected String indicator;
@Column(name="LOW_GRADE_")
protected Double lowGrade;
@Column(name="MID_GRADE_")
protected Double midGrade;
@Column(name="HIGH_GRADE_")
protected Double highGrade;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="TEST_CASE_ID_")
protected TestCaseEntity testCase;
@Override
public TestScenarioVo toVo() {
TestScenarioVo vo =new TestScenarioVo();
super.toVo(vo);
vo.setId(this.getId());
vo.setIndicator(this.getIndicator());
vo.setLowGrade(this.getLowGrade());
vo.setMidGrade(this.getMidGrade());
vo.setHighGrade(this.getHighGrade());
vo.setTestCase(this.getTestCase()==null?null:this.getTestCase().getId());
return vo;
}
public TestScenarioEntity(){}
public TestScenarioEntity(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getIndicator() {
return indicator;
}
public void setIndicator(String indicator) {
this.indicator = indicator;
}
public Double getLowGrade() {
return lowGrade;
}
public void setLowGrade(Double lowGrade) {
this.lowGrade = lowGrade;
}
public Double getMidGrade() {
return midGrade;
}
public void setMidGrade(Double midGrade) {
this.midGrade = midGrade;
}
public Double getHighGrade() {
return highGrade;
}
public void setHighGrade(Double highGrade) {
this.highGrade = highGrade;
}
public TestCaseEntity getTestCase() {
return testCase;
}
public void setTestCase(TestCaseEntity testCase) {
this.testCase = testCase;
}
}

10
io.sc.engine.st/src/main/java/io/sc/engine/st/jpa/repository/TestScenarioRepository.java

@ -1,10 +0,0 @@
package io.sc.engine.st.jpa.repository;
import io.sc.engine.st.jpa.entity.TestScenarioEntity;
import io.sc.platform.orm.repository.DaoRepository;
import org.springframework.stereotype.Service;
@Service("io.sc.engine.st.jpa.repository.TestScenarioRepository")
public interface TestScenarioRepository extends DaoRepository<TestScenarioEntity,String>{
}

8
io.sc.engine.st/src/main/java/io/sc/engine/st/service/TestScenarioService.java

@ -1,8 +0,0 @@
package io.sc.engine.st.service;
import io.sc.engine.st.jpa.entity.TestScenarioEntity;
import io.sc.engine.st.jpa.repository.TestScenarioRepository;
import io.sc.platform.orm.service.DaoService;
public interface TestScenarioService extends DaoService<TestScenarioEntity, String, TestScenarioRepository>{
}

12
io.sc.engine.st/src/main/java/io/sc/engine/st/service/impl/TestScenarioServiceImpl.java

@ -1,12 +0,0 @@
package io.sc.engine.st.service.impl;
import io.sc.engine.st.jpa.entity.TestScenarioEntity;
import io.sc.engine.st.jpa.repository.TestScenarioRepository;
import io.sc.engine.st.service.TestScenarioService;
import io.sc.platform.orm.service.impl.DaoServiceImpl;
import org.springframework.stereotype.Service;
@Service("io.sc.engine.st.service.impl.TestScenarioServiceImpl")
public class TestScenarioServiceImpl extends DaoServiceImpl<TestScenarioEntity, String, TestScenarioRepository> implements TestScenarioService {
}

70
io.sc.engine.st/src/main/java/io/sc/engine/st/vo/TestScenarioVo.java

@ -1,70 +0,0 @@
package io.sc.engine.st.vo;
import io.sc.engine.st.enums.StatisticalPeriodType;
import io.sc.engine.st.jpa.entity.TestScenarioEntity;
import io.sc.platform.orm.api.vo.CorporationAuditorVo;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
public class TestScenarioVo extends CorporationAuditorVo {
protected String id;
protected String indicator;
protected Double lowGrade;
protected Double midGrade;
protected Double highGrade;
protected String testCase;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getIndicator() {
return indicator;
}
public void setIndicator(String indicator) {
this.indicator = indicator;
}
public Double getLowGrade() {
return lowGrade;
}
public void setLowGrade(Double lowGrade) {
this.lowGrade = lowGrade;
}
public Double getMidGrade() {
return midGrade;
}
public void setMidGrade(Double midGrade) {
this.midGrade = midGrade;
}
public Double getHighGrade() {
return highGrade;
}
public void setHighGrade(Double highGrade) {
this.highGrade = highGrade;
}
public String getTestCase() {
return testCase;
}
public void setTestCase(String testCase) {
this.testCase = testCase;
}
}

2
io.sc.platform.core.frontend/src/platform/components/echarts/WEcharts.vue

@ -77,7 +77,7 @@ onUpdated(() => {
if (props.optionUrl) { if (props.optionUrl) {
setOptionFromUrl(); setOptionFromUrl();
} else { } else {
setOption(echartsOption); setOption(props.option);
} }
}); });

29
io.sc.platform.core.frontend/template-project/util-components-generator.cjs

@ -13,16 +13,13 @@ content +='/**\n';
content +=' * 此文件为自动生成文件,请勿修改\n'; content +=' * 此文件为自动生成文件,请勿修改\n';
content +=' */\n\n'; content +=' */\n\n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.replaceAll('.','_'); generateImportComonents(route);
const componentPath =route.componentPath;
content +=`import ${componentName} from '${componentPath}';\n`;
} }
content +='\n'; content +='\n';
content +='const localComponents = { \n'; content +='const localComponents = { \n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.replaceAll('.','_'); generateComonents(route);
content +=`'${route.component}': ${componentName},\n`;
} }
content +='}\n\n'; content +='}\n\n';
content +='export default localComponents;\n'; content +='export default localComponents;\n';
@ -30,3 +27,25 @@ content +='export default localComponents;\n';
fs.writeFileSync('./src/components/index.ts', content); fs.writeFileSync('./src/components/index.ts', content);
console.info('components generated!'); console.info('components generated!');
function generateImportComonents(route){
const componentName =route.component.replaceAll('.','_');
const componentPath =route.componentPath;
content +=`import ${componentName} from '${componentPath}';\n`;
if(route.children && route.children.length){
for(const child of route.children){
generateImportComonents(child);
}
}
}
function generateComonents(route){
const componentName =route.component.replaceAll('.','_');
content +=`'${route.component}': ${componentName},\n`;
if(route.children && route.children.length){
for(const child of route.children){
generateComonents(child);
}
}
}

29
io.sc.platform.core.frontend/util-components-generator.cjs

@ -13,16 +13,13 @@ content +='/**\n';
content +=' * 此文件为自动生成文件,请勿修改\n'; content +=' * 此文件为自动生成文件,请勿修改\n';
content +=' */\n\n'; content +=' */\n\n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.replaceAll('.','_'); generateImportComonents(route);
const componentPath =route.componentPath;
content +=`import ${componentName} from '${componentPath}';\n`;
} }
content +='\n'; content +='\n';
content +='const localComponents = { \n'; content +='const localComponents = { \n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.replaceAll('.','_'); generateComonents(route);
content +=`'${route.component}': ${componentName},\n`;
} }
content +='}\n\n'; content +='}\n\n';
content +='export default localComponents;\n'; content +='export default localComponents;\n';
@ -30,3 +27,25 @@ content +='export default localComponents;\n';
fs.writeFileSync('./src/components/index.ts', content); fs.writeFileSync('./src/components/index.ts', content);
console.info('components generated!'); console.info('components generated!');
function generateImportComonents(route){
const componentName =route.component.replaceAll('.','_');
const componentPath =route.componentPath;
content +=`import ${componentName} from '${componentPath}';\n`;
if(route.children && route.children.length){
for(const child of route.children){
generateImportComonents(child);
}
}
}
function generateComonents(route){
const componentName =route.component.replaceAll('.','_');
content +=`'${route.component}': ${componentName},\n`;
if(route.children && route.children.length){
for(const child of route.children){
generateComonents(child);
}
}
}

1
io.sc.platform.core/src/main/java/io/sc/platform/core/response/ValidateException.java

@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ValidateException extends RuntimeException{ public class ValidateException extends RuntimeException{
private static final long serialVersionUID = -3426523003097063425L;
private List<ValidationError> errors =new ArrayList<ValidationError>(); private List<ValidationError> errors =new ArrayList<ValidationError>();
public ValidateException(List<ValidationError> errors){ public ValidateException(List<ValidationError> errors){

3
io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties

@ -216,3 +216,6 @@ application=Application
quarter=Quarter quarter=Quarter
endDate=End Date endDate=End Date
period=Period period=Period
algorithm=Algorithm
data=Data
synchronize=Synchronize

3
io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties

@ -216,3 +216,6 @@ application=\u61C9\u7528
quarter=\u5B63 quarter=\u5B63
endDate=\u7D50\u675F\u65E5\u671F endDate=\u7D50\u675F\u65E5\u671F
period=\u9031\u671F period=\u9031\u671F
algorithm=\u7B97\u6CD5
data=\u6578\u64DA
synchronize=\u540C\u6B65

3
io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties

@ -216,3 +216,6 @@ application=\u5E94\u7528
quarter=\u5B63 quarter=\u5B63
endDate=\u7ED3\u675F\u65E5\u671F endDate=\u7ED3\u675F\u65E5\u671F
period=\u5468\u671F period=\u5468\u671F
algorithm=\u7B97\u6CD5
data=\u6570\u636E
synchronize=\u540C\u6B65

5
io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/validator/ValidatorMessage.java

@ -0,0 +1,5 @@
package io.sc.platform.orm.api.validator;
public class ValidatorMessage {
public static final String ID ="{io.sc.platform.orm.api.validator.ValidatorMessage.ID}";
}

8
io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/validator/ValidatorRegExp.java

@ -0,0 +1,8 @@
package io.sc.platform.orm.api.validator;
public class ValidatorRegExp {
/**
* 合法 ID 正则表达式
*/
public static final String ID ="^[a-zA-Z][a-zA-Z0-9_]*";
}

1
io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/validator.properties

@ -0,0 +1 @@
io.sc.platform.orm.api.validator.ValidatorMessage.ID=It can only consist of letters, numbers, or underscores, and must begin with a letter!

1
io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/validator_tw_CN.properties

@ -0,0 +1 @@
io.sc.platform.orm.api.validator.ValidatorMessage.ID=\u53EA\u80FD\u7531\u5B57\u6BCD\u3001\u6578\u5B57\u6216\u4E0B\u5283\u7DDA\u7D44\u6210,\u4E14\u5FC5\u9808\u4EE5\u5B57\u6BCD\u958B\u982D!

1
io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/validator_zh_CN.properties

@ -0,0 +1 @@
io.sc.platform.orm.api.validator.ValidatorMessage.ID=\u53EA\u80FD\u7531\u5B57\u6BCD\u3001\u6570\u5B57\u6216\u4E0B\u5212\u7EBF\u7EC4\u6210,\u4E14\u5FC5\u987B\u4EE5\u5B57\u6BCD\u5F00\u5934!
Loading…
Cancel
Save