129 changed files with 2025 additions and 3472 deletions
@ -0,0 +1,64 @@ |
|||||
|
package io.sc.engine.rule.core.code.impl.support.processor; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
||||
|
import io.sc.engine.rule.core.enums.ProcessorType; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@JsonIgnoreProperties(ignoreUnknown=true) |
||||
|
public class ScoreCardItem { |
||||
|
private String code; |
||||
|
private String name; |
||||
|
private Double weight; |
||||
|
private ProcessorType type; |
||||
|
private List<ConditionRange> conditionRange; |
||||
|
private List<NumberRange> numberRange; |
||||
|
|
||||
|
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 Double getWeight() { |
||||
|
return weight; |
||||
|
} |
||||
|
|
||||
|
public void setWeight(Double weight) { |
||||
|
this.weight = weight; |
||||
|
} |
||||
|
|
||||
|
public ProcessorType getType() { |
||||
|
return type; |
||||
|
} |
||||
|
|
||||
|
public void setType(ProcessorType type) { |
||||
|
this.type = type; |
||||
|
} |
||||
|
|
||||
|
public List<ConditionRange> getConditionRange() { |
||||
|
return conditionRange; |
||||
|
} |
||||
|
|
||||
|
public void setConditionRange(List<ConditionRange> conditionRange) { |
||||
|
this.conditionRange = conditionRange; |
||||
|
} |
||||
|
|
||||
|
public List<NumberRange> getNumberRange() { |
||||
|
return numberRange; |
||||
|
} |
||||
|
|
||||
|
public void setNumberRange(List<NumberRange> numberRange) { |
||||
|
this.numberRange = numberRange; |
||||
|
} |
||||
|
} |
@ -0,0 +1,25 @@ |
|||||
|
package io.sc.engine.rule.core.po.model.processor; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
||||
|
import com.fasterxml.jackson.annotation.JsonTypeName; |
||||
|
import io.sc.engine.rule.core.enums.ProcessorType; |
||||
|
import io.sc.engine.rule.core.po.model.ParameterProcessor; |
||||
|
|
||||
|
@JsonTypeName("SCORE_CARD") |
||||
|
@JsonIgnoreProperties(ignoreUnknown=true) |
||||
|
public class ScoreCardParameterProcessor extends ParameterProcessor { |
||||
|
private String scoreCard; |
||||
|
|
||||
|
public String getScoreCard() { |
||||
|
return scoreCard; |
||||
|
} |
||||
|
|
||||
|
public void setScoreCard(String scoreCard) { |
||||
|
this.scoreCard = scoreCard; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public ProcessorType getType() { |
||||
|
return ProcessorType.SCORE_CARD; |
||||
|
} |
||||
|
} |
@ -1,29 +0,0 @@ |
|||||
package io.sc.engine.rule.core.po.resource; |
|
||||
|
|
||||
import java.util.ArrayList; |
|
||||
import java.util.List; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ResourceType; |
|
||||
import io.sc.engine.rule.core.po.scorecard.ScoreCardVar; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
|
|
||||
@JsonTypeName("SCORE_CARD") |
|
||||
@JsonIgnoreProperties(ignoreUnknown=true) |
|
||||
public class ScoreCardResource extends ReleasableResource { |
|
||||
protected List<ScoreCardVar> scoreCardVars =new ArrayList<ScoreCardVar>(); |
|
||||
|
|
||||
public List<ScoreCardVar> getScoreCardVars() { |
|
||||
return scoreCardVars; |
|
||||
} |
|
||||
|
|
||||
public void setScoreCardVars(List<ScoreCardVar> scoreCardVars) { |
|
||||
this.scoreCardVars = scoreCardVars; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public ResourceType getType() { |
|
||||
return ResourceType.SCORE_CARD; |
|
||||
} |
|
||||
} |
|
@ -1,29 +0,0 @@ |
|||||
package io.sc.engine.rule.core.po.scorecard; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(数值分段) |
|
||||
* @author wangshaoping |
|
||||
* |
|
||||
*/ |
|
||||
@JsonTypeName("INDICATOR_NUMBER_RANGE") |
|
||||
@JsonIgnoreProperties(ignoreUnknown=true) |
|
||||
public class NumberRangeScoreCardIndicatorVar extends ScoreCardIndicatorVar { |
|
||||
private String numberRange;//数值分段
|
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.INDICATOR_NUMBER_RANGE; |
|
||||
} |
|
||||
|
|
||||
public String getNumberRange() { |
|
||||
return numberRange; |
|
||||
} |
|
||||
public void setNumberRange(String numberRange) { |
|
||||
this.numberRange = numberRange; |
|
||||
} |
|
||||
} |
|
@ -1,29 +0,0 @@ |
|||||
package io.sc.engine.rule.core.po.scorecard; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(数值分段) |
|
||||
* @author wangshaoping |
|
||||
* |
|
||||
*/ |
|
||||
@JsonTypeName("NUMBER_RANGE") |
|
||||
@JsonIgnoreProperties(ignoreUnknown=true) |
|
||||
public class NumberRangeScoreCardVar extends ScoreCardVar { |
|
||||
private String numberRange;//数值分段
|
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.NUMBER_RANGE; |
|
||||
} |
|
||||
|
|
||||
public String getNumberRange() { |
|
||||
return numberRange; |
|
||||
} |
|
||||
public void setNumberRange(String numberRange) { |
|
||||
this.numberRange = numberRange; |
|
||||
} |
|
||||
} |
|
@ -1,29 +0,0 @@ |
|||||
package io.sc.engine.rule.core.po.scorecard; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(选项) |
|
||||
* @author wangshaoping |
|
||||
* |
|
||||
*/ |
|
||||
@JsonTypeName("INDICATOR_OPTION") |
|
||||
@JsonIgnoreProperties(ignoreUnknown=true) |
|
||||
public class OptionScoreCardIndicatorVar extends ScoreCardIndicatorVar { |
|
||||
private String option;//选项
|
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.INDICATOR_OPTION; |
|
||||
} |
|
||||
|
|
||||
public String getOption() { |
|
||||
return option; |
|
||||
} |
|
||||
public void setOption(String option) { |
|
||||
this.option = option; |
|
||||
} |
|
||||
} |
|
@ -1,29 +0,0 @@ |
|||||
package io.sc.engine.rule.core.po.scorecard; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(选项) |
|
||||
* @author wangshaoping |
|
||||
* |
|
||||
*/ |
|
||||
@JsonTypeName("OPTION") |
|
||||
@JsonIgnoreProperties(ignoreUnknown=true) |
|
||||
public class OptionScoreCardVar extends ScoreCardVar { |
|
||||
private String option;//选项
|
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.OPTION; |
|
||||
} |
|
||||
|
|
||||
public String getOption() { |
|
||||
return option; |
|
||||
} |
|
||||
public void setOption(String option) { |
|
||||
this.option = option; |
|
||||
} |
|
||||
} |
|
@ -1,21 +0,0 @@ |
|||||
package io.sc.engine.rule.core.po.scorecard; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(指标值) |
|
||||
* @author wangshaoping |
|
||||
* |
|
||||
*/ |
|
||||
@JsonTypeName("INDICATOR_VALUE") |
|
||||
@JsonIgnoreProperties(ignoreUnknown=true) |
|
||||
public class ScoreCardIndicatorValueVar extends ScoreCardIndicatorVar { |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.INDICATOR_VALUE; |
|
||||
} |
|
||||
} |
|
@ -1,36 +0,0 @@ |
|||||
package io.sc.engine.rule.core.po.scorecard; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(指标) |
|
||||
* @author wangshaoping |
|
||||
* |
|
||||
*/ |
|
||||
public abstract class ScoreCardIndicatorVar extends ScoreCardVar{ |
|
||||
protected String libCode;//库代码
|
|
||||
protected Integer libVersion;//库版本
|
|
||||
protected String indicatorCode;//指标代码
|
|
||||
|
|
||||
public String getLibCode() { |
|
||||
return libCode; |
|
||||
} |
|
||||
|
|
||||
public void setLibCode(String libCode) { |
|
||||
this.libCode = libCode; |
|
||||
} |
|
||||
|
|
||||
public Integer getLibVersion() { |
|
||||
return libVersion; |
|
||||
} |
|
||||
|
|
||||
public void setLibVersion(Integer libVersion) { |
|
||||
this.libVersion = libVersion; |
|
||||
} |
|
||||
|
|
||||
public String getIndicatorCode() { |
|
||||
return indicatorCode; |
|
||||
} |
|
||||
|
|
||||
public void setIndicatorCode(String indicatorCode) { |
|
||||
this.indicatorCode = indicatorCode; |
|
||||
} |
|
||||
} |
|
@ -1,53 +0,0 @@ |
|||||
package io.sc.engine.rule.core.po.scorecard; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonSubTypes; |
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量 |
|
||||
* @author wangshaoping |
|
||||
* |
|
||||
*/ |
|
||||
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type",defaultImpl=OptionScoreCardVar.class) |
|
||||
@JsonSubTypes({ |
|
||||
@JsonSubTypes.Type(value=NumberRangeScoreCardVar.class), //数值分段
|
|
||||
@JsonSubTypes.Type(value=OptionScoreCardVar.class), //选项
|
|
||||
@JsonSubTypes.Type(value=NumberRangeScoreCardIndicatorVar.class), //数值分段(指标)
|
|
||||
@JsonSubTypes.Type(value=OptionScoreCardIndicatorVar.class), //选项(指标)
|
|
||||
@JsonSubTypes.Type(value=ScoreCardIndicatorValueVar.class) //指标值
|
|
||||
}) |
|
||||
public abstract class ScoreCardVar { |
|
||||
protected String id;//ID,主键
|
|
||||
protected String code;//代码
|
|
||||
protected String name;//名称
|
|
||||
protected Integer order;//排序
|
|
||||
|
|
||||
public abstract ScoreCardVarType getType(); |
|
||||
|
|
||||
public String getId() { |
|
||||
return id; |
|
||||
} |
|
||||
public void setId(String id) { |
|
||||
this.id = id; |
|
||||
} |
|
||||
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 Integer getOrder() { |
|
||||
return order; |
|
||||
} |
|
||||
public void setOrder(Integer order) { |
|
||||
this.order = order; |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,30 @@ |
|||||
|
class ValueTypeUtil { |
||||
|
/** |
||||
|
* 是否是基本类型 |
||||
|
* @param valueType 值类型 |
||||
|
* @returns 是否是基本类型 |
||||
|
*/ |
||||
|
public static isBase(valueType: string) { |
||||
|
return ( |
||||
|
valueType == 'java.lang.Boolean' || |
||||
|
valueType == 'Boolean' || |
||||
|
valueType == 'java.lang.Long' || |
||||
|
valueType == 'Long' || |
||||
|
valueType == 'java.lang.Float' || |
||||
|
valueType == 'Float' || |
||||
|
valueType == 'java.math.BigDecimal' || |
||||
|
valueType == 'java.lang.String' || |
||||
|
valueType == 'String' || |
||||
|
valueType == 'java.util.Date' || |
||||
|
valueType == 'java.util.List' || |
||||
|
valueType == 'List' || |
||||
|
valueType == 'java.util.Map' || |
||||
|
valueType == 'Map' || |
||||
|
valueType == 'io.sc.engine.rule.core.classes.ResourceAbstract' || |
||||
|
valueType == 'io.sc.engine.rule.core.classes.RuleResult' || |
||||
|
valueType == 'io.sc.engine.rule.core.classes.SingleRuleResult' |
||||
|
); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
export { ValueTypeUtil }; |
@ -0,0 +1,80 @@ |
|||||
|
import { axios, Environment } from 'platform-core'; |
||||
|
import { AutoCompletionManager } from '@/views/shared/AutoCompletionManager'; |
||||
|
import { UserDefinedFunctionsManager } from '@/views/shared/UserDefinedFunctionsManager'; |
||||
|
|
||||
|
/** |
||||
|
* 处理器接口 |
||||
|
*/ |
||||
|
abstract class Processor { |
||||
|
public static PARAMETER: string = 'parameter'; |
||||
|
public static INDICATOR: string = 'indicator'; |
||||
|
public static SCORE_CARD: string = 'scoreCard'; |
||||
|
|
||||
|
targetType: string; |
||||
|
autoCompletionManager: any; |
||||
|
userDefinedFunctionsManager: any; |
||||
|
|
||||
|
constructor(targetType: string) { |
||||
|
this.targetType = targetType; |
||||
|
this.autoCompletionManager = new AutoCompletionManager(); |
||||
|
this.userDefinedFunctionsManager = new UserDefinedFunctionsManager(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取工具栏按钮对象 |
||||
|
* @param target 目标对象 |
||||
|
*/ |
||||
|
abstract getToolbarAction(target: any): any; |
||||
|
|
||||
|
/** |
||||
|
* 表格字段显示内容 |
||||
|
* @param row 表格行数据 |
||||
|
*/ |
||||
|
abstract format(row: any): any; |
||||
|
|
||||
|
/** |
||||
|
* 获取编辑器对话框字段列表 |
||||
|
* @param context 上下文对象 |
||||
|
*/ |
||||
|
abstract getEditorFields(context?: any): any; |
||||
|
|
||||
|
/** |
||||
|
* 获取用于显示查看信息的字段列表 |
||||
|
* @param context 上下文对象 |
||||
|
*/ |
||||
|
abstract getViewerFields(context?: any): any; |
||||
|
|
||||
|
/** |
||||
|
* 表单提交前的操作 |
||||
|
* @param args 参数对象 |
||||
|
*/ |
||||
|
abstract beforeEditorDataSubmit(args: any): void; |
||||
|
|
||||
|
/** |
||||
|
* 编辑表单打开后的操作 |
||||
|
* @param args 参数对象 |
||||
|
*/ |
||||
|
abstract afterEditorOpen(args: any): void; |
||||
|
|
||||
|
/** |
||||
|
* 初始化 code-mirror 代码提示自动完成管理器 |
||||
|
* @param args 参数对象 |
||||
|
*/ |
||||
|
initAutoCompletionManager(args: any) { |
||||
|
if (this.targetType === Processor.PARAMETER) { |
||||
|
this.autoCompletionManager.load(Environment.apiContextPath('/api/re/common/listParameterAndValueTypeByParameterId/' + args.target.id)); |
||||
|
} else if (this.targetType === Processor.INDICATOR) { |
||||
|
this.autoCompletionManager.load(Environment.apiContextPath('/api/re/common/listParameterAndValueTypeByIndicatorId/' + args.target.id)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 初始化用户自定义函数管理器 |
||||
|
* @param args 参数对象 |
||||
|
*/ |
||||
|
initUserDefinedFunctionsManager(args: any) { |
||||
|
this.userDefinedFunctionsManager.load(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
export { Processor }; |
@ -0,0 +1,154 @@ |
|||||
|
import { Processor } from './Processor'; |
||||
|
import { |
||||
|
Arithmetic, |
||||
|
ConditionRange, |
||||
|
DecisionTable, |
||||
|
DecisionTable2C, |
||||
|
DecisionTree, |
||||
|
ExecutionFlow, |
||||
|
GroovyScript, |
||||
|
MathFormula, |
||||
|
NumberRange, |
||||
|
ObjectProperties, |
||||
|
OptionValue, |
||||
|
Pmml, |
||||
|
Rule, |
||||
|
ScoreCard, |
||||
|
SingleRule, |
||||
|
Sql, |
||||
|
Ternary, |
||||
|
WhenThen, |
||||
|
} from './processors'; |
||||
|
|
||||
|
class ProcessorManager { |
||||
|
static PROCESSOR_TYPES_PARAMETER: string[] = [ |
||||
|
'OBJECT_PROPERTIES', |
||||
|
'OPTION_VALUE', |
||||
|
'MATH_FORMULA', |
||||
|
'ARITHMETIC', |
||||
|
'TERNARY', |
||||
|
'WHEN_THEN', |
||||
|
'NUMBER_RANGE', |
||||
|
'CONDITION_RANGE', |
||||
|
'SCORE_CARD', |
||||
|
'DECISION_TABLE_2C', |
||||
|
'DECISION_TABLE', |
||||
|
'DECISION_TREE', |
||||
|
'EXECUTION_FLOW', |
||||
|
'PMML', |
||||
|
'GROOVY_SCRIPT', |
||||
|
'SQL', |
||||
|
'RULE', |
||||
|
'SINGLE_RULE', |
||||
|
]; |
||||
|
static PROCESSOR_TYPES_INDICATOR = [ |
||||
|
'OBJECT_PROPERTIES', |
||||
|
'MATH_FORMULA', |
||||
|
'ARITHMETIC', |
||||
|
'TERNARY', |
||||
|
'WHEN_THEN', |
||||
|
'NUMBER_RANGE', |
||||
|
'CONDITION_RANGE', |
||||
|
'GROOVY_SCRIPT', |
||||
|
'SQL', |
||||
|
]; |
||||
|
targetType: string; |
||||
|
processors: any; |
||||
|
|
||||
|
constructor(targetType: string) { |
||||
|
this.targetType = targetType; |
||||
|
this.processors = {}; |
||||
|
this.processors.ARITHMETIC = new Arithmetic(this.targetType); |
||||
|
this.processors.CONDITION_RANGE = new ConditionRange(this.targetType); |
||||
|
this.processors.DECISION_TABLE = new DecisionTable(this.targetType); |
||||
|
this.processors.DECISION_TABLE_2C = new DecisionTable2C(this.targetType); |
||||
|
this.processors.DECISION_TREE = new DecisionTree(this.targetType); |
||||
|
this.processors.EXECUTION_FLOW = new ExecutionFlow(this.targetType); |
||||
|
this.processors.GROOVY_SCRIPT = new GroovyScript(this.targetType); |
||||
|
this.processors.MATH_FORMULA = new MathFormula(this.targetType); |
||||
|
this.processors.NUMBER_RANGE = new NumberRange(this.targetType); |
||||
|
this.processors.OBJECT_PROPERTIES = new ObjectProperties(this.targetType); |
||||
|
this.processors.OPTION_VALUE = new OptionValue(this.targetType); |
||||
|
this.processors.PMML = new Pmml(this.targetType); |
||||
|
this.processors.RULE = new Rule(this.targetType); |
||||
|
this.processors.SCORE_CARD = new ScoreCard(this.targetType); |
||||
|
this.processors.SINGLE_RULE = new SingleRule(this.targetType); |
||||
|
this.processors.SQL = new Sql(this.targetType); |
||||
|
this.processors.TERNARY = new Ternary(this.targetType); |
||||
|
this.processors.WHEN_THEN = new WhenThen(this.targetType); |
||||
|
} |
||||
|
|
||||
|
public getToolbarAction(target: any): any { |
||||
|
const result: any = []; |
||||
|
switch (this.targetType) { |
||||
|
case Processor.PARAMETER: |
||||
|
ProcessorManager.PROCESSOR_TYPES_PARAMETER.forEach((name) => { |
||||
|
result.push(this.processors[name].getToolbarAction(target)); |
||||
|
}); |
||||
|
break; |
||||
|
case Processor.INDICATOR: |
||||
|
ProcessorManager.PROCESSOR_TYPES_INDICATOR.forEach((name) => { |
||||
|
result.push(this.processors[name].getToolbarAction(target)); |
||||
|
}); |
||||
|
break; |
||||
|
} |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
public format(value: any, row: any): any { |
||||
|
if (this.processors[row.type]) { |
||||
|
return this.processors[row.type].format(row); |
||||
|
} |
||||
|
return value; |
||||
|
} |
||||
|
|
||||
|
public getEditorFields(context?: any): any { |
||||
|
const result: any = []; |
||||
|
switch (this.targetType) { |
||||
|
case Processor.PARAMETER: |
||||
|
ProcessorManager.PROCESSOR_TYPES_PARAMETER.forEach((name) => { |
||||
|
result.push(...this.processors[name].getEditorFields(context)); |
||||
|
}); |
||||
|
break; |
||||
|
case Processor.INDICATOR: |
||||
|
ProcessorManager.PROCESSOR_TYPES_INDICATOR.forEach((name) => { |
||||
|
result.push(...this.processors[name].getEditorFields(context)); |
||||
|
}); |
||||
|
break; |
||||
|
} |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
public getViewerFields(context?: any): any { |
||||
|
const result: any = []; |
||||
|
switch (this.targetType) { |
||||
|
case Processor.PARAMETER: |
||||
|
ProcessorManager.PROCESSOR_TYPES_PARAMETER.forEach((name) => { |
||||
|
result.push(...this.processors[name].getViewerFields(context)); |
||||
|
}); |
||||
|
break; |
||||
|
case Processor.INDICATOR: |
||||
|
ProcessorManager.PROCESSOR_TYPES_INDICATOR.forEach((name) => { |
||||
|
result.push(...this.processors[name].getViewerFields(context)); |
||||
|
}); |
||||
|
break; |
||||
|
} |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
public beforeEditorDataSubmit(args: any): void { |
||||
|
if (this.processors[args.data.type]) { |
||||
|
this.processors[args.data.type].beforeEditorDataSubmit(args); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public afterEditorOpen(args: any): void { |
||||
|
//const type = args.grid.getEditorForm().getFieldValue('type');
|
||||
|
const type = 'OPTION_VALUE'; |
||||
|
if (this.processors[type]) { |
||||
|
this.processors[type].afterEditorOpen(args); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
export { ProcessorManager }; |
@ -0,0 +1,230 @@ |
|||||
|
import { ref, toRaw } from 'vue'; |
||||
|
import { $t, axios, Environment, Tools } from 'platform-core'; |
||||
|
import { Processor } from '../Processor'; |
||||
|
import { ConditionRange } from './ConditionRange'; |
||||
|
import { NumberRange } from './NumberRange'; |
||||
|
|
||||
|
const parameterOptionsRef = ref(<any>[]); |
||||
|
const varProcessorTypeOptionsRef = ref(<any>[]); |
||||
|
const conditionRange = new ConditionRange(Processor.SCORE_CARD); |
||||
|
const numberRange = new NumberRange(Processor.SCORE_CARD); |
||||
|
|
||||
|
class ScoreCard extends Processor { |
||||
|
public getToolbarAction(target: any): any { |
||||
|
return { |
||||
|
extend: 'add', |
||||
|
name: 'scoreCard', |
||||
|
label: $t('io.sc.engine.rule.core.enums.ProcessorType.SCORE_CARD'), |
||||
|
icon: 'bi-credit-card-2-front', |
||||
|
enableIf: (args) => { |
||||
|
return target.type !== 'RULE_RESULT' && target.type !== 'SINGLE_RULE_RESULT'; |
||||
|
}, |
||||
|
afterClick: (args: any) => { |
||||
|
args.grid.getEditorForm().setFieldValue('type', 'SCORE_CARD'); |
||||
|
}, |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
public format(row: any): any { |
||||
|
const objs = Tools.json2Object(row.scoreCard); |
||||
|
if (objs) { |
||||
|
let str = `<div class='border border-b-0'>`; |
||||
|
str += `<table width='100%' height='100%'>`; |
||||
|
objs.forEach((obj: any) => { |
||||
|
str += '<tr>'; |
||||
|
str += ' <td>' + $t('io.sc.engine.rule.core.enums.ProcessorType.' + obj.type) + '</td>'; |
||||
|
str += ' <td>' + obj.name + '</td>'; |
||||
|
if (obj.type === 'CONDITION_RANGE') { |
||||
|
str += ' <td style="pading:0px">' + conditionRange.format({ conditionRange: Tools.object2Json(obj.conditionRange) }) + '</td>'; |
||||
|
} else if (obj.type === 'NUMBER_RANGE') { |
||||
|
str += ' <td>' + numberRange.format({ numberRange: Tools.object2Json(obj.numberRange) }) + '</td>'; |
||||
|
} |
||||
|
str += '</tr>'; |
||||
|
}); |
||||
|
str += '</table>'; |
||||
|
str += `</div>`; |
||||
|
return str; |
||||
|
} |
||||
|
return ''; |
||||
|
} |
||||
|
|
||||
|
public getEditorFields(context?: any): any { |
||||
|
return [ |
||||
|
{ |
||||
|
colSpan: 5, |
||||
|
name: 'scoreCard', |
||||
|
label: $t('re.resources.designer.processor.grid.entity.scoreCard'), |
||||
|
type: 'w-grid', |
||||
|
showIf: (args: any) => { |
||||
|
return 'SCORE_CARD' === args.form.getFieldValue('type'); |
||||
|
}, |
||||
|
height: 600, |
||||
|
dbClickOperation: 'edit', |
||||
|
autoFetchData: false, |
||||
|
denseBody: true, |
||||
|
draggable: 'local', |
||||
|
pageable: false, |
||||
|
configButton: false, |
||||
|
toolbarConfigure: { noIcon: false }, |
||||
|
toolbarActions: [ |
||||
|
[ |
||||
|
{ |
||||
|
extend: 'add', |
||||
|
click: undefined, |
||||
|
}, |
||||
|
conditionRange.getToolbarAction({}), |
||||
|
numberRange.getToolbarAction({}), |
||||
|
], |
||||
|
'clone', |
||||
|
'edit', |
||||
|
{ |
||||
|
extend: 'remove', |
||||
|
click: (args: any) => { |
||||
|
const grid = args.grid.getEditorForm().getFieldComponent('scoreCard'); |
||||
|
grid.removeLocalData(args.selecteds); |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
primaryKey: 'uuid', |
||||
|
columns: [ |
||||
|
{ width: 200, name: 'uuid', label: 'uuid', hidden: true }, |
||||
|
{ |
||||
|
width: 120, |
||||
|
name: 'code', |
||||
|
label: $t('code'), |
||||
|
sortable: false, |
||||
|
}, |
||||
|
{ |
||||
|
width: 120, |
||||
|
name: 'name', |
||||
|
label: $t('name'), |
||||
|
sortable: false, |
||||
|
}, |
||||
|
{ |
||||
|
width: 80, |
||||
|
name: 'weight', |
||||
|
label: $t('weight'), |
||||
|
sortable: false, |
||||
|
}, |
||||
|
{ |
||||
|
width: 100, |
||||
|
name: 'type', |
||||
|
label: $t('type'), |
||||
|
sortable: false, |
||||
|
format: (value, row: any) => { |
||||
|
return $t('io.sc.engine.rule.core.enums.ProcessorType.' + row.type); |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
width: '100%', |
||||
|
name: 'content', |
||||
|
label: $t('content'), |
||||
|
sortable: false, |
||||
|
format: (value, row: any) => { |
||||
|
const data = JSON.parse(JSON.stringify(row)); |
||||
|
data.conditionRange = Tools.object2Json(data.conditionRange); |
||||
|
data.numberRange = Tools.object2Json(data.numberRange); |
||||
|
switch (data.type) { |
||||
|
case 'CONDITION_RANGE': |
||||
|
return conditionRange.format(data); |
||||
|
case 'NUMBER_RANGE': |
||||
|
return numberRange.format(data); |
||||
|
} |
||||
|
return ''; |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
editor: { |
||||
|
dialog: { |
||||
|
width: '800px', |
||||
|
}, |
||||
|
form: { |
||||
|
colsNum: 5, |
||||
|
fields: [ |
||||
|
{ name: 'uuid', label: 'uuid', showIf: false, colSpan: 4 }, |
||||
|
{ colSpan: 3, name: 'name', label: $t('name'), type: 'w-select', options: parameterOptionsRef.value }, |
||||
|
{ colSpan: 2, name: 'weight', label: $t('weight'), type: 'w-number', precision: 6 }, |
||||
|
{ name: 'type', label: $t('type'), type: 'w-text', showIf: false }, |
||||
|
...conditionRange.getEditorFields(), |
||||
|
...numberRange.getEditorFields(), |
||||
|
], |
||||
|
}, |
||||
|
}, |
||||
|
// 评分卡变量对话框
|
||||
|
onBeforeEditorDataSubmit: (args: any) => { |
||||
|
switch (args.data.type) { |
||||
|
case 'CONDITION_RANGE': |
||||
|
// args.data.conditionRange = Tools.object2Json(args.data.conditionRange);
|
||||
|
return conditionRange.beforeEditorDataSubmit(data); |
||||
|
case 'NUMBER_RANGE': |
||||
|
//args.data.numberRange = Tools.object2Json(args.data.numberRange);
|
||||
|
return numberRange.beforeEditorDataSubmit(data); |
||||
|
} |
||||
|
}, |
||||
|
onAfterEditorOpen: (args: any) => { |
||||
|
// const args: any = {};
|
||||
|
// args.grid = _args.grid;
|
||||
|
// args.data = Tools.deepClone(toValue(_args.data));
|
||||
|
// args.data.conditionRange = Tools.object2Json(args.data.conditionRange);
|
||||
|
// args.data.numberRange = Tools.object2Json(args.data.numberRange);
|
||||
|
|
||||
|
// const data = Tools.deepClone(toValue(args.data));
|
||||
|
// data.conditionRange = Tools.object2Json(data.conditionRange);
|
||||
|
// data.numberRange = Tools.object2Json(data.numberRange);
|
||||
|
// args.data = data;
|
||||
|
const newArgs: any = {}; |
||||
|
newArgs.grid = args.grid; |
||||
|
newArgs.data = { |
||||
|
conditionRange: Tools.object2Json(JSON.parse(JSON.stringify(args.data.conditionRange))), |
||||
|
numberRange: Tools.object2Json(JSON.parse(JSON.stringify(args.data.numberRange))), |
||||
|
}; |
||||
|
|
||||
|
switch (args.grid.getEditorForm().getFieldValue('type')) { |
||||
|
case 'CONDITION_RANGE': |
||||
|
//args.data.conditionRange = Tools.object2Json(JSON.parse(JSON.stringify(args.data.conditionRange)));
|
||||
|
return conditionRange.afterEditorOpen(newArgs); |
||||
|
case 'NUMBER_RANGE': |
||||
|
//args.data.numberRange = Tools.object2Json(JSON.parse(JSON.stringify(args.data.numberRange)));
|
||||
|
return numberRange.afterEditorOpen(newArgs); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
]; |
||||
|
} |
||||
|
|
||||
|
public getViewerFields(context?: any): any { |
||||
|
return [{ name: 'scoreCard', label: $t('re.resources.designer.processor.grid.entity.scoreCard') }]; |
||||
|
} |
||||
|
|
||||
|
public beforeEditorDataSubmit(args: any): void { |
||||
|
console.log(args); |
||||
|
} |
||||
|
|
||||
|
public afterEditorOpen(args: any): void { |
||||
|
varProcessorTypeOptionsRef.value = [ |
||||
|
{ label: $t('io.sc.engine.rule.core.enums.ProcessorType.CONDITION_RANGE'), value: 'CONDITION_RANGE' }, |
||||
|
{ label: $t('io.sc.engine.rule.core.enums.ProcessorType.NUMBER_RANGE'), value: 'NUMBER_RANGE' }, |
||||
|
]; |
||||
|
|
||||
|
axios.get(Environment.apiContextPath('/api/re/model/parameter/listParemtersByParameterId/' + args.target.id)).then((response) => { |
||||
|
const data: any[] = response.data; |
||||
|
const options: any[] = []; |
||||
|
if (data && data.length > 0) { |
||||
|
data.forEach((item) => { |
||||
|
options.push({ |
||||
|
label: item.name, |
||||
|
value: item.code, |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
parameterOptionsRef.value = options; |
||||
|
}); |
||||
|
|
||||
|
const grid = args.grid.getEditorForm().getFieldComponent('scoreCard'); |
||||
|
const row = args.data; |
||||
|
const rows = Tools.json2Object(row.scoreCard); |
||||
|
grid.setLocalData(rows); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
export { ScoreCard }; |
@ -1,96 +0,0 @@ |
|||||
package io.sc.engine.rule.server.jpa.listener.handler; |
|
||||
|
|
||||
import java.util.ArrayList; |
|
||||
import java.util.Date; |
|
||||
import java.util.HashMap; |
|
||||
import java.util.List; |
|
||||
import java.util.Map; |
|
||||
|
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
|
||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; |
|
||||
import org.springframework.stereotype.Service; |
|
||||
import io.sc.engine.rule.server.resource.entity.ResourceEntity; |
|
||||
import io.sc.engine.rule.server.resource.service.ResourceService; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardVarEntity; |
|
||||
import io.sc.engine.rule.server.testcase.entity.ResourceTestCaseEntity; |
|
||||
import io.sc.engine.rule.server.testcase.entity.TestCaseEntity; |
|
||||
import io.sc.platform.orm.entity.support.AbstractJpaEntityPersistentEventHandler; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量实体持久化事件处理器 |
|
||||
*/ |
|
||||
@Service("io.sc.engine.rule.server.jpa.listener.handler.ScoreCardVarEntityEventHandler") |
|
||||
public class ScoreCardVarEntityEventHandler extends AbstractJpaEntityPersistentEventHandler<ScoreCardVarEntity>{ |
|
||||
@Autowired private ResourceService resourceService; |
|
||||
@Autowired private NamedParameterJdbcTemplate namedParameterJdbcTemplate; |
|
||||
|
|
||||
@Override |
|
||||
protected void afterAdd(ScoreCardVarEntity newEntity) { |
|
||||
updateResourceEntityLastModifyDate(newEntity); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
protected void beforeUpdate(ScoreCardVarEntity oldEntity, ScoreCardVarEntity newEntity) { |
|
||||
updateTestCaseParameterCode(oldEntity,newEntity);//更新测试用例参数代码
|
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
protected void beforeDelete(ScoreCardVarEntity oldEntity) { |
|
||||
updateResourceEntityLastModifyDate(oldEntity); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
protected void beforeDelete(Iterable<ScoreCardVarEntity> iterable) { |
|
||||
updateResourceEntityLastModifyDate(iterable.iterator().next()); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 更新评分卡变量所属资源的最后更新日期 |
|
||||
* @param entity 评分卡变量实体 |
|
||||
*/ |
|
||||
private void updateResourceEntityLastModifyDate(ScoreCardVarEntity entity) { |
|
||||
if(entity!=null) { |
|
||||
ResourceEntity resourceEntity =entity.getResource(); |
|
||||
if(resourceEntity!=null) { |
|
||||
resourceEntity =resourceService.findById(resourceEntity.getId()); |
|
||||
} |
|
||||
if(resourceEntity!=null) { |
|
||||
resourceEntity.setLastModifyDate(new Date()); |
|
||||
resourceService.getRepository().save(resourceEntity); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 更新测试用例参数代码 |
|
||||
* 当评分卡变量代码发生改变后,那么生成的测试用例参数也需要更新。 |
|
||||
* 目的: 保持一致性 |
|
||||
* @param oldEntity 原对象 |
|
||||
* @param newEntity 新对象 |
|
||||
*/ |
|
||||
private void updateTestCaseParameterCode(ScoreCardVarEntity oldEntity,ScoreCardVarEntity newEntity) { |
|
||||
if(oldEntity!=null && newEntity!=null && !oldEntity.getCode().equals(newEntity.getCode())) { |
|
||||
ResourceEntity resourceEntity =oldEntity.getResource(); |
|
||||
if(resourceEntity!=null) { |
|
||||
List<ResourceTestCaseEntity> testCaseEntities =resourceEntity.getTestCases(); |
|
||||
if(testCaseEntities!=null && testCaseEntities.size()>0) { |
|
||||
List<String> testCaseIds =new ArrayList<String>(testCaseEntities.size()); |
|
||||
for(TestCaseEntity testCaseEntity : testCaseEntities) { |
|
||||
testCaseIds.add(testCaseEntity.getId()); |
|
||||
} |
|
||||
|
|
||||
String sql ="update RE_TEST_CASE_PARAMETER set" |
|
||||
+ " CODE_=:newCode" |
|
||||
+ " where CODE_=:oldCode and TEST_CASE_ID_ in (:testCaseIds)"; |
|
||||
|
|
||||
Map<String, Object> params = new HashMap<String, Object>(); |
|
||||
params.put("newCode", newEntity.getCode()); |
|
||||
params.put("oldCode", oldEntity.getCode()); |
|
||||
params.put("testCaseIds", testCaseIds); |
|
||||
|
|
||||
namedParameterJdbcTemplate.update(sql, params); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,97 @@ |
|||||
|
package io.sc.engine.rule.server.model.entity.processor; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonTypeName; |
||||
|
import com.fasterxml.jackson.core.type.TypeReference; |
||||
|
import io.sc.engine.rule.core.code.impl.support.processor.ConditionRange; |
||||
|
import io.sc.engine.rule.core.code.impl.support.processor.NumberRange; |
||||
|
import io.sc.engine.rule.core.code.impl.support.processor.ScoreCardItem; |
||||
|
import io.sc.engine.rule.core.enums.ProcessorType; |
||||
|
import io.sc.engine.rule.core.util.ExpressionReplacer; |
||||
|
import io.sc.engine.rule.core.util.JacksonObjectMapper; |
||||
|
import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; |
||||
|
import io.sc.engine.rule.server.model.vo.processor.ScoreCardParameterProcessorVo; |
||||
|
import io.sc.platform.core.util.ObjectMapper4Json; |
||||
|
import org.springframework.util.StringUtils; |
||||
|
|
||||
|
import javax.persistence.Column; |
||||
|
import javax.persistence.DiscriminatorValue; |
||||
|
import javax.persistence.Entity; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* 模型参数处理器(算数运算操作)实体类 |
||||
|
*/ |
||||
|
@Entity |
||||
|
@DiscriminatorValue("SCORE_CARD") |
||||
|
@JsonTypeName("SCORE_CARD") |
||||
|
public class ScoreCardParameterProcessorEntity extends ParameterProcessorEntity { |
||||
|
//算数表达式
|
||||
|
@Column(name="SCORE_CARD_") |
||||
|
private String scoreCard; |
||||
|
|
||||
|
@Override |
||||
|
public ScoreCardParameterProcessorVo toVo() { |
||||
|
ScoreCardParameterProcessorVo vo =new ScoreCardParameterProcessorVo(); |
||||
|
super.toVo(vo); |
||||
|
vo.setScoreCard(this.getScoreCard()); |
||||
|
return vo; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public ProcessorType getType() { |
||||
|
return ProcessorType.SCORE_CARD; |
||||
|
} |
||||
|
|
||||
|
public String getScoreCard() { |
||||
|
return scoreCard; |
||||
|
} |
||||
|
|
||||
|
public void setScoreCard(String scoreCard) { |
||||
|
this.scoreCard = scoreCard; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public boolean replace(Map<String, String> mapping) { |
||||
|
List<ScoreCardItem> scoreCardItems =new ArrayList<>(); |
||||
|
try { |
||||
|
if(StringUtils.hasText(this.scoreCard)) { |
||||
|
scoreCardItems = ObjectMapper4Json.getMapper().readValue(this.scoreCard, new TypeReference<List<ScoreCardItem>>() {}); |
||||
|
} |
||||
|
}catch (Exception e){ |
||||
|
|
||||
|
} |
||||
|
if(scoreCardItems!=null && !scoreCardItems.isEmpty()){ |
||||
|
for(ScoreCardItem scoreCardItem : scoreCardItems){ |
||||
|
scoreCardItem.setName(ExpressionReplacer.replace(scoreCardItem.getCode(), mapping)); |
||||
|
List<ConditionRange> conditionRanges =scoreCardItem.getConditionRange(); |
||||
|
if(conditionRanges!=null && !conditionRanges.isEmpty()){ |
||||
|
for(ConditionRange conditionRange : conditionRanges){ |
||||
|
conditionRange.setCondition(ExpressionReplacer.replace(conditionRange.getCondition(), mapping)); |
||||
|
conditionRange.setValue(ExpressionReplacer.replace(conditionRange.getValue(), mapping)); |
||||
|
} |
||||
|
} |
||||
|
List<NumberRange> numberRanges =scoreCardItem.getNumberRange(); |
||||
|
if(numberRanges!=null && !numberRanges.isEmpty()){ |
||||
|
for(NumberRange numberRange : numberRanges){ |
||||
|
numberRange.setValue(ExpressionReplacer.replace(numberRange.getValue(), mapping)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
String replaced =""; |
||||
|
try { |
||||
|
replaced = ObjectMapper4Json.getMapper().writeValueAsString(scoreCardItems); |
||||
|
}catch (Exception e){ |
||||
|
|
||||
|
} |
||||
|
replaced =(replaced==null?"":replaced); |
||||
|
boolean result =false; |
||||
|
if(!replaced.equals(this.scoreCard)) { |
||||
|
result =true; |
||||
|
} |
||||
|
this.scoreCard =replaced; |
||||
|
return result; |
||||
|
} |
||||
|
} |
@ -0,0 +1,26 @@ |
|||||
|
package io.sc.engine.rule.server.model.vo.processor; |
||||
|
|
||||
|
import io.sc.engine.rule.core.enums.ProcessorType; |
||||
|
import io.sc.engine.rule.server.model.vo.ParameterProcessorVo; |
||||
|
|
||||
|
/** |
||||
|
* 模型参数处理器(评分卡操作)Vo 类 |
||||
|
*/ |
||||
|
public class ScoreCardParameterProcessorVo extends ParameterProcessorVo { |
||||
|
|
||||
|
//评分卡配置
|
||||
|
private String scoreCard; |
||||
|
|
||||
|
@Override |
||||
|
public ProcessorType getType() { |
||||
|
return ProcessorType.SCORE_CARD; |
||||
|
} |
||||
|
|
||||
|
public String getScoreCard() { |
||||
|
return scoreCard; |
||||
|
} |
||||
|
|
||||
|
public void setScoreCard(String scoreCard) { |
||||
|
this.scoreCard = scoreCard; |
||||
|
} |
||||
|
} |
@ -1,120 +0,0 @@ |
|||||
package io.sc.engine.rule.server.resource.entity; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
import io.sc.engine.rule.core.enums.ResourceType; |
|
||||
import io.sc.engine.rule.server.resource.vo.ScoreCardResourceVo; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardVarEntity; |
|
||||
import io.sc.engine.rule.server.testcase.entity.ResourceTestCaseEntity; |
|
||||
import org.springframework.beans.BeanUtils; |
|
||||
|
|
||||
import javax.persistence.*; |
|
||||
import java.util.ArrayList; |
|
||||
import java.util.List; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡资源实体类 |
|
||||
*/ |
|
||||
@Entity |
|
||||
@DiscriminatorValue("SCORE_CARD") |
|
||||
@JsonTypeName("SCORE_CARD") |
|
||||
public class ScoreCardResourceEntity extends ReleasableResourceEntity { |
|
||||
//模型包含的评分卡变量
|
|
||||
@OneToMany(mappedBy="resource",cascade= {CascadeType.PERSIST}) |
|
||||
@OrderBy("order") |
|
||||
protected List<ScoreCardVarEntity> scoreCardVars =new ArrayList<ScoreCardVarEntity>(); |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardResourceVo toVo() { |
|
||||
ScoreCardResourceVo vo =new ScoreCardResourceVo(); |
|
||||
super.toVo(vo); |
|
||||
vo.setType(this.getType()); |
|
||||
return vo; |
|
||||
} |
|
||||
|
|
||||
public ScoreCardResourceEntity() {} |
|
||||
public ScoreCardResourceEntity(String id) { |
|
||||
this.id =id; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public ResourceType getType() { |
|
||||
return ResourceType.SCORE_CARD; |
|
||||
} |
|
||||
|
|
||||
public List<ScoreCardVarEntity> getScoreCardVars() { |
|
||||
return scoreCardVars; |
|
||||
} |
|
||||
|
|
||||
public void setScoreCardVars(List<ScoreCardVarEntity> scoreCardVars) { |
|
||||
this.scoreCardVars = scoreCardVars; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public Object deepClone() throws Exception { |
|
||||
ScoreCardResourceEntity entity =new ScoreCardResourceEntity(); |
|
||||
BeanUtils.copyProperties(this, entity, "children","testCases","scoreCardVars","roles"); |
|
||||
//children
|
|
||||
List<ResourceEntity> children =this.getChildren(); |
|
||||
if(children!=null && children.size()>0) { |
|
||||
for(ResourceEntity child : children) { |
|
||||
ResourceEntity clone =(ResourceEntity)child.deepClone(); |
|
||||
clone.setParent(entity); |
|
||||
entity.getChildren().add(clone); |
|
||||
} |
|
||||
} |
|
||||
//testCases
|
|
||||
List<ResourceTestCaseEntity> testCases =this.getTestCases(); |
|
||||
if(testCases!=null && testCases.size()>0) { |
|
||||
for(ResourceTestCaseEntity testCase : testCases) { |
|
||||
ResourceTestCaseEntity clone =(ResourceTestCaseEntity)testCase.deepClone(); |
|
||||
clone.setOwner(entity); |
|
||||
entity.getTestCases().add(clone); |
|
||||
} |
|
||||
} |
|
||||
//scoreCardVars
|
|
||||
List<ScoreCardVarEntity> vars =this.getScoreCardVars(); |
|
||||
if(vars!=null && vars.size()>0) { |
|
||||
for(ScoreCardVarEntity var : vars) { |
|
||||
ScoreCardVarEntity clone =(ScoreCardVarEntity)var.deepClone(); |
|
||||
clone.setResource(entity); |
|
||||
entity.getScoreCardVars().add(clone); |
|
||||
} |
|
||||
} |
|
||||
return entity; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public void clearId() { |
|
||||
super.clearId(); |
|
||||
|
|
||||
//scoreCardVars
|
|
||||
List<ScoreCardVarEntity> scoreCardVars =this.getScoreCardVars(); |
|
||||
if(scoreCardVars!=null && scoreCardVars.size()>0) { |
|
||||
for(ScoreCardVarEntity scoreCardVar : scoreCardVars) { |
|
||||
scoreCardVar.clearId(); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public String toString() { |
|
||||
return "ScoreCardResourceEntity [" |
|
||||
+ " type=" + type |
|
||||
+ " id=" + id |
|
||||
+ ", code=" + code |
|
||||
+ ", name=" + name |
|
||||
+ ", description=" + description |
|
||||
+ ", order=" + order |
|
||||
|
|
||||
+ ", status=" + status |
|
||||
+ ", version=" + version |
|
||||
+ ", effectiveDate=" + effectiveDate |
|
||||
+ ", imports=" + imports |
|
||||
|
|
||||
+ ", creator=" + creator |
|
||||
+ ", createDate=" + createDate |
|
||||
+ ", lastModifier=" + lastModifier |
|
||||
+ ", lastModifyDate=" + lastModifyDate |
|
||||
+ "]"; |
|
||||
} |
|
||||
} |
|
@ -1,16 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.controller; |
|
||||
|
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.repository.ScoreCardVarRepository; |
|
||||
import io.sc.engine.rule.server.scorecard.service.ScoreCardVarService; |
|
||||
import io.sc.engine.rule.server.scorecard.vo.ScoreCardVarVo; |
|
||||
import io.sc.platform.mvc.controller.support.RestCrudController; |
|
||||
import org.springframework.stereotype.Controller; |
|
||||
import org.springframework.web.bind.annotation.RequestMapping; |
|
||||
import org.springframework.web.bind.annotation.RestController; |
|
||||
|
|
||||
@RestController("io.sc.engine.rule.server.scorecard.controller.ScoreCardVarWebController") |
|
||||
@RequestMapping("/api/re/scoreCardVar") |
|
||||
public class ScoreCardVarWebController extends RestCrudController<ScoreCardVarVo,ScoreCardVarEntity,String,ScoreCardVarRepository,ScoreCardVarService> { |
|
||||
|
|
||||
} |
|
@ -1,171 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.converter; |
|
||||
|
|
||||
import java.util.ArrayList; |
|
||||
import java.util.List; |
|
||||
|
|
||||
import io.sc.engine.rule.core.po.scorecard.NumberRangeScoreCardIndicatorVar; |
|
||||
import io.sc.engine.rule.core.po.scorecard.NumberRangeScoreCardVar; |
|
||||
import io.sc.engine.rule.core.po.scorecard.OptionScoreCardIndicatorVar; |
|
||||
import io.sc.engine.rule.core.po.scorecard.OptionScoreCardVar; |
|
||||
import io.sc.engine.rule.core.po.scorecard.ScoreCardIndicatorValueVar; |
|
||||
import io.sc.engine.rule.core.po.scorecard.ScoreCardIndicatorVar; |
|
||||
import io.sc.engine.rule.core.po.scorecard.ScoreCardVar; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.NumberRangeScoreCardIndicatorVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.NumberRangeScoreCardVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.OptionScoreCardIndicatorVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.OptionScoreCardVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardIndicatorValueVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardIndicatorVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardVarEntity; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量实体转换器 |
|
||||
* @author wangshaoping |
|
||||
* |
|
||||
*/ |
|
||||
public class ScoreCardVarEntityConverter { |
|
||||
/** |
|
||||
* 将实体转换成 PO 对象 |
|
||||
* @param entity 实体对象 |
|
||||
* @return PO 对象 |
|
||||
*/ |
|
||||
public static ScoreCardVar toPo(ScoreCardVarEntity entity) { |
|
||||
if(entity!=null) { |
|
||||
ScoreCardVar po =null; |
|
||||
if(entity instanceof NumberRangeScoreCardVarEntity) { |
|
||||
NumberRangeScoreCardVarEntity _entity =(NumberRangeScoreCardVarEntity)entity; |
|
||||
NumberRangeScoreCardVar _po =new NumberRangeScoreCardVar(); |
|
||||
_po.setNumberRange(_entity.getNumberRange()); |
|
||||
po =_po; |
|
||||
}else if(entity instanceof NumberRangeScoreCardIndicatorVarEntity) { |
|
||||
NumberRangeScoreCardIndicatorVarEntity _entity =(NumberRangeScoreCardIndicatorVarEntity)entity; |
|
||||
NumberRangeScoreCardIndicatorVar _po =new NumberRangeScoreCardIndicatorVar(); |
|
||||
_po.setNumberRange(_entity.getNumberRange()); |
|
||||
po =_po; |
|
||||
}else if(entity instanceof OptionScoreCardVarEntity) { |
|
||||
OptionScoreCardVarEntity _entity =(OptionScoreCardVarEntity)entity; |
|
||||
OptionScoreCardVar _po =new OptionScoreCardVar(); |
|
||||
_po.setOption(_entity.getOption()); |
|
||||
po =_po; |
|
||||
}else if(entity instanceof OptionScoreCardIndicatorVarEntity) { |
|
||||
OptionScoreCardIndicatorVarEntity _entity =(OptionScoreCardIndicatorVarEntity)entity; |
|
||||
OptionScoreCardIndicatorVar _po =new OptionScoreCardIndicatorVar(); |
|
||||
_po.setOption(_entity.getOption()); |
|
||||
po =_po; |
|
||||
}else if(entity instanceof ScoreCardIndicatorValueVarEntity) { |
|
||||
po =new ScoreCardIndicatorValueVar(); |
|
||||
}else { |
|
||||
OptionScoreCardVarEntity _entity =(OptionScoreCardVarEntity)entity; |
|
||||
OptionScoreCardVar _po =new OptionScoreCardVar(); |
|
||||
_po.setOption(_entity.getOption()); |
|
||||
po =_po; |
|
||||
} |
|
||||
|
|
||||
if(entity instanceof ScoreCardIndicatorVarEntity) { |
|
||||
ScoreCardIndicatorVarEntity _entity =(ScoreCardIndicatorVarEntity)entity; |
|
||||
((ScoreCardIndicatorVar)po).setLibCode(_entity.getLibCode()); |
|
||||
((ScoreCardIndicatorVar)po).setLibVersion(_entity.getLibVersion()); |
|
||||
((ScoreCardIndicatorVar)po).setIndicatorCode(_entity.getIndicatorCode()); |
|
||||
} |
|
||||
|
|
||||
po.setId(entity.getId()); |
|
||||
po.setCode(entity.getCode()); |
|
||||
po.setName(entity.getName()); |
|
||||
po.setOrder(entity.getOrder()); |
|
||||
return po; |
|
||||
} |
|
||||
return null; |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 将实体集合转换成 PO 对象集合 |
|
||||
* @param entities 实体集合 |
|
||||
* @return PO 对象集合 |
|
||||
*/ |
|
||||
public static List<ScoreCardVar> toPo(List<ScoreCardVarEntity> entities){ |
|
||||
if(entities!=null && entities.size()>0) { |
|
||||
List<ScoreCardVar> pos =new ArrayList<ScoreCardVar>(entities.size()); |
|
||||
for(ScoreCardVarEntity entity : entities) { |
|
||||
pos.add(toPo(entity)); |
|
||||
} |
|
||||
return pos; |
|
||||
} |
|
||||
return null; |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 将 PO 对象转换成实体对象 |
|
||||
* @param po PO 对象 |
|
||||
* @return 实体对象 |
|
||||
*/ |
|
||||
public static ScoreCardVarEntity fromPo(ScoreCardVar po) { |
|
||||
if(po!=null) { |
|
||||
ScoreCardVarEntity entity =null; |
|
||||
if(po instanceof NumberRangeScoreCardVar) { |
|
||||
NumberRangeScoreCardVar _po =(NumberRangeScoreCardVar)po; |
|
||||
NumberRangeScoreCardVarEntity _entity =new NumberRangeScoreCardVarEntity(); |
|
||||
_entity.setNumberRange(_po.getNumberRange()); |
|
||||
entity =_entity; |
|
||||
}else if(po instanceof NumberRangeScoreCardIndicatorVar) { |
|
||||
NumberRangeScoreCardIndicatorVar _po =(NumberRangeScoreCardIndicatorVar)po; |
|
||||
NumberRangeScoreCardIndicatorVarEntity _entity =new NumberRangeScoreCardIndicatorVarEntity(); |
|
||||
_entity.setNumberRange(_po.getNumberRange()); |
|
||||
entity =_entity; |
|
||||
}else if(po instanceof OptionScoreCardVar) { |
|
||||
OptionScoreCardVar _po =(OptionScoreCardVar)po; |
|
||||
OptionScoreCardVarEntity _entity =new OptionScoreCardVarEntity(); |
|
||||
_entity.setOption(_po.getOption()); |
|
||||
entity =_entity; |
|
||||
}else if(po instanceof OptionScoreCardIndicatorVar) { |
|
||||
OptionScoreCardIndicatorVar _po =(OptionScoreCardIndicatorVar)po; |
|
||||
OptionScoreCardIndicatorVarEntity _entity =new OptionScoreCardIndicatorVarEntity(); |
|
||||
_entity.setOption(_po.getOption()); |
|
||||
entity =_entity; |
|
||||
}else if(po instanceof ScoreCardIndicatorValueVar) { |
|
||||
ScoreCardIndicatorValueVar _po =(ScoreCardIndicatorValueVar)po; |
|
||||
ScoreCardIndicatorValueVarEntity _entity =new ScoreCardIndicatorValueVarEntity(); |
|
||||
_entity.setLibCode(_po.getLibCode()); |
|
||||
_entity.setLibVersion(_po.getLibVersion()); |
|
||||
_entity.setIndicatorCode(_po.getIndicatorCode()); |
|
||||
entity =_entity; |
|
||||
}else { |
|
||||
OptionScoreCardVar _po =(OptionScoreCardVar)po; |
|
||||
OptionScoreCardVarEntity _entity =new OptionScoreCardVarEntity(); |
|
||||
_entity.setOption(_po.getOption()); |
|
||||
entity =_entity; |
|
||||
} |
|
||||
|
|
||||
if(entity!=null) { |
|
||||
if(po instanceof ScoreCardIndicatorVar) { |
|
||||
ScoreCardIndicatorVar _po =(ScoreCardIndicatorVar)po; |
|
||||
((ScoreCardIndicatorVarEntity)entity).setLibCode(_po.getLibCode()); |
|
||||
((ScoreCardIndicatorVarEntity)entity).setLibVersion(_po.getLibVersion()); |
|
||||
((ScoreCardIndicatorVarEntity)entity).setIndicatorCode(_po.getIndicatorCode()); |
|
||||
} |
|
||||
|
|
||||
entity.setId(po.getId()); |
|
||||
entity.setCode(po.getCode()); |
|
||||
entity.setName(po.getName()); |
|
||||
entity.setOrder(po.getOrder()); |
|
||||
return entity; |
|
||||
} |
|
||||
} |
|
||||
return null; |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 将 PO 对象集合转换成实体对象集合 |
|
||||
* @param pos PO 对象集合 |
|
||||
* @return 实体对象集合 |
|
||||
*/ |
|
||||
public static List<ScoreCardVarEntity> fromPo(List<ScoreCardVar> pos){ |
|
||||
if(pos!=null && pos.size()>0) { |
|
||||
List<ScoreCardVarEntity> entities =new ArrayList<ScoreCardVarEntity>(pos.size()); |
|
||||
for(ScoreCardVar po : pos) { |
|
||||
entities.add(fromPo(po)); |
|
||||
} |
|
||||
return entities; |
|
||||
} |
|
||||
return null; |
|
||||
} |
|
||||
} |
|
@ -1,66 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.entity; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
import io.sc.engine.rule.server.scorecard.vo.NumberRangeScoreCardIndicatorVarVo; |
|
||||
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; |
|
||||
|
|
||||
import javax.persistence.Column; |
|
||||
import javax.persistence.DiscriminatorValue; |
|
||||
import javax.persistence.Entity; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(指标选项)实体类 |
|
||||
*/ |
|
||||
@Entity |
|
||||
@DiscriminatorValue("INDICATOR_NUMBER_RANGE") |
|
||||
@JsonTypeName("INDICATOR_NUMBER_RANGE") |
|
||||
public class NumberRangeScoreCardIndicatorVarEntity extends ScoreCardIndicatorVarEntity { |
|
||||
//数值分段
|
|
||||
@Column(name="NUMBER_RANGE_") |
|
||||
private String numberRange; |
|
||||
|
|
||||
@Override |
|
||||
public NumberRangeScoreCardIndicatorVarVo toVo() { |
|
||||
NumberRangeScoreCardIndicatorVarVo vo =new NumberRangeScoreCardIndicatorVarVo(); |
|
||||
super.toVo(vo); |
|
||||
vo.setType(this.getType()); |
|
||||
vo.setNumberRange(this.getNumberRange()); |
|
||||
return vo; |
|
||||
} |
|
||||
|
|
||||
public NumberRangeScoreCardIndicatorVarEntity() {} |
|
||||
public NumberRangeScoreCardIndicatorVarEntity(String id) { |
|
||||
this.id =id; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.INDICATOR_NUMBER_RANGE; |
|
||||
} |
|
||||
|
|
||||
public String getNumberRange() { |
|
||||
return numberRange; |
|
||||
} |
|
||||
public void setNumberRange(String numberRange) { |
|
||||
this.numberRange = numberRange; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public TestCaseParameterWrapper toTestCaseParameterWrapper() { |
|
||||
TestCaseParameterWrapper wrapper =new TestCaseParameterWrapper(this.getId(),this.getCode(),null,null,null,null,false); |
|
||||
|
|
||||
wrapper.setTestCaseId(null); |
|
||||
wrapper.setParent(null); |
|
||||
wrapper.setCategory("P"); |
|
||||
wrapper.setName(this.getName()); |
|
||||
wrapper.setParameterType(null); |
|
||||
wrapper.setScoreCardVarType(this.getType()); |
|
||||
wrapper.setIndicatorType(null); |
|
||||
wrapper.setValueType("java.math.BigDecimal"); |
|
||||
wrapper.setDefaultValue(null); |
|
||||
wrapper.setOrder(this.getOrder()); |
|
||||
|
|
||||
return wrapper; |
|
||||
} |
|
||||
} |
|
@ -1,66 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.entity; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
import io.sc.engine.rule.server.scorecard.vo.NumberRangeScoreCardVarVo; |
|
||||
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; |
|
||||
|
|
||||
import javax.persistence.Column; |
|
||||
import javax.persistence.DiscriminatorValue; |
|
||||
import javax.persistence.Entity; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(数值分段)实体类 |
|
||||
*/ |
|
||||
@Entity |
|
||||
@DiscriminatorValue("NUMBER_RANGE") |
|
||||
@JsonTypeName("NUMBER_RANGE") |
|
||||
public class NumberRangeScoreCardVarEntity extends ScoreCardVarEntity { |
|
||||
//数值分段
|
|
||||
@Column(name="NUMBER_RANGE_") |
|
||||
private String numberRange; |
|
||||
|
|
||||
@Override |
|
||||
public NumberRangeScoreCardVarVo toVo() { |
|
||||
NumberRangeScoreCardVarVo vo =new NumberRangeScoreCardVarVo(); |
|
||||
super.toVo(vo); |
|
||||
vo.setType(this.getType()); |
|
||||
vo.setNumberRange(this.getNumberRange()); |
|
||||
return vo; |
|
||||
} |
|
||||
|
|
||||
public NumberRangeScoreCardVarEntity() {} |
|
||||
public NumberRangeScoreCardVarEntity(String id) { |
|
||||
this.id =id; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.NUMBER_RANGE; |
|
||||
} |
|
||||
|
|
||||
public String getNumberRange() { |
|
||||
return numberRange; |
|
||||
} |
|
||||
public void setNumberRange(String numberRange) { |
|
||||
this.numberRange = numberRange; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public TestCaseParameterWrapper toTestCaseParameterWrapper() { |
|
||||
TestCaseParameterWrapper wrapper =new TestCaseParameterWrapper(this.getId(),this.getCode(),null,null,null,null,false); |
|
||||
|
|
||||
wrapper.setTestCaseId(null); |
|
||||
wrapper.setParent(null); |
|
||||
wrapper.setCategory("P"); |
|
||||
wrapper.setName(this.getName()); |
|
||||
wrapper.setParameterType(null); |
|
||||
wrapper.setScoreCardVarType(this.getType()); |
|
||||
wrapper.setIndicatorType(null); |
|
||||
wrapper.setValueType("java.math.BigDecimal"); |
|
||||
wrapper.setDefaultValue(null); |
|
||||
wrapper.setOrder(this.getOrder()); |
|
||||
|
|
||||
return wrapper; |
|
||||
} |
|
||||
} |
|
@ -1,66 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.entity; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
import io.sc.engine.rule.server.scorecard.vo.OptionScoreCardIndicatorVarVo; |
|
||||
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; |
|
||||
|
|
||||
import javax.persistence.Column; |
|
||||
import javax.persistence.DiscriminatorValue; |
|
||||
import javax.persistence.Entity; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(指标选项)实体类 |
|
||||
*/ |
|
||||
@Entity |
|
||||
@DiscriminatorValue("INDICATOR_OPTION") |
|
||||
@JsonTypeName("INDICATOR_OPTION") |
|
||||
public class OptionScoreCardIndicatorVarEntity extends ScoreCardIndicatorVarEntity { |
|
||||
//选项
|
|
||||
@Column(name="OPTION_") |
|
||||
private String option; |
|
||||
|
|
||||
@Override |
|
||||
public OptionScoreCardIndicatorVarVo toVo() { |
|
||||
OptionScoreCardIndicatorVarVo vo =new OptionScoreCardIndicatorVarVo(); |
|
||||
super.toVo(vo); |
|
||||
vo.setType(this.getType()); |
|
||||
vo.setOption(this.getOption()); |
|
||||
return vo; |
|
||||
} |
|
||||
|
|
||||
public OptionScoreCardIndicatorVarEntity() {} |
|
||||
public OptionScoreCardIndicatorVarEntity(String id) { |
|
||||
this.id =id; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.INDICATOR_OPTION; |
|
||||
} |
|
||||
|
|
||||
public String getOption() { |
|
||||
return option; |
|
||||
} |
|
||||
public void setOption(String option) { |
|
||||
this.option = option; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public TestCaseParameterWrapper toTestCaseParameterWrapper() { |
|
||||
TestCaseParameterWrapper wrapper =new TestCaseParameterWrapper(this.getId(),this.getCode(),null,null,null,null,false); |
|
||||
|
|
||||
wrapper.setTestCaseId(null); |
|
||||
wrapper.setParent(null); |
|
||||
wrapper.setCategory("P"); |
|
||||
wrapper.setName(this.getName()); |
|
||||
wrapper.setParameterType(null); |
|
||||
wrapper.setScoreCardVarType(this.getType()); |
|
||||
wrapper.setIndicatorType(null); |
|
||||
wrapper.setValueType("java.lang.String"); |
|
||||
wrapper.setDefaultValue(null); |
|
||||
wrapper.setOrder(this.getOrder()); |
|
||||
|
|
||||
return wrapper; |
|
||||
} |
|
||||
} |
|
@ -1,69 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.entity; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
import io.sc.engine.rule.server.scorecard.vo.OptionScoreCardVarVo; |
|
||||
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; |
|
||||
|
|
||||
import javax.persistence.Column; |
|
||||
import javax.persistence.DiscriminatorValue; |
|
||||
import javax.persistence.Entity; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(选项)实体类 |
|
||||
* @author wangshaoping |
|
||||
* |
|
||||
*/ |
|
||||
@Entity |
|
||||
@DiscriminatorValue("OPTION") |
|
||||
@JsonTypeName("OPTION") |
|
||||
public class OptionScoreCardVarEntity extends ScoreCardVarEntity { |
|
||||
//选项
|
|
||||
@Column(name="OPTION_") |
|
||||
private String option; |
|
||||
|
|
||||
@Override |
|
||||
public OptionScoreCardVarVo toVo() { |
|
||||
OptionScoreCardVarVo vo =new OptionScoreCardVarVo(); |
|
||||
super.toVo(vo); |
|
||||
vo.setType(this.getType()); |
|
||||
vo.setOption(this.getOption()); |
|
||||
return vo; |
|
||||
} |
|
||||
|
|
||||
public OptionScoreCardVarEntity() {} |
|
||||
public OptionScoreCardVarEntity(String id) { |
|
||||
this.id =id; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.OPTION; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
public String getOption() { |
|
||||
return option; |
|
||||
} |
|
||||
public void setOption(String option) { |
|
||||
this.option = option; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public TestCaseParameterWrapper toTestCaseParameterWrapper() { |
|
||||
TestCaseParameterWrapper wrapper =new TestCaseParameterWrapper(this.getId(),this.getCode(),null,null,null,null,false); |
|
||||
|
|
||||
wrapper.setTestCaseId(null); |
|
||||
wrapper.setParent(null); |
|
||||
wrapper.setCategory("P"); |
|
||||
wrapper.setName(this.getName()); |
|
||||
wrapper.setParameterType(null); |
|
||||
wrapper.setScoreCardVarType(this.getType()); |
|
||||
wrapper.setIndicatorType(null); |
|
||||
wrapper.setValueType("java.lang.String"); |
|
||||
wrapper.setDefaultValue(null); |
|
||||
wrapper.setOrder(this.getOrder()); |
|
||||
|
|
||||
return wrapper; |
|
||||
} |
|
||||
} |
|
@ -1,50 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.entity; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName; |
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
import io.sc.engine.rule.server.scorecard.vo.ScoreCardIndicatorValueVarVo; |
|
||||
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; |
|
||||
|
|
||||
import javax.persistence.DiscriminatorValue; |
|
||||
import javax.persistence.Entity; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(指标值)实体类 |
|
||||
* @author wangshaoping |
|
||||
* |
|
||||
*/ |
|
||||
@Entity |
|
||||
@DiscriminatorValue("INDICATOR_VALUE") |
|
||||
@JsonTypeName("INDICATOR_VALUE") |
|
||||
public class ScoreCardIndicatorValueVarEntity extends ScoreCardIndicatorVarEntity { |
|
||||
@Override |
|
||||
public ScoreCardIndicatorValueVarVo toVo() { |
|
||||
ScoreCardIndicatorValueVarVo vo =new ScoreCardIndicatorValueVarVo(); |
|
||||
super.toVo(vo); |
|
||||
vo.setType(this.getType()); |
|
||||
return vo; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.INDICATOR_VALUE; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public TestCaseParameterWrapper toTestCaseParameterWrapper() { |
|
||||
TestCaseParameterWrapper wrapper =new TestCaseParameterWrapper(this.getId(),this.getCode(),null,null,null,null,false); |
|
||||
|
|
||||
wrapper.setTestCaseId(null); |
|
||||
wrapper.setParent(null); |
|
||||
wrapper.setCategory("P"); |
|
||||
wrapper.setName(this.getName()); |
|
||||
wrapper.setParameterType(null); |
|
||||
wrapper.setScoreCardVarType(this.getType()); |
|
||||
wrapper.setIndicatorType(null); |
|
||||
wrapper.setValueType("java.math.BigDecimal"); |
|
||||
wrapper.setDefaultValue(null); |
|
||||
wrapper.setOrder(this.getOrder()); |
|
||||
|
|
||||
return wrapper; |
|
||||
} |
|
||||
} |
|
@ -1,77 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.entity; |
|
||||
|
|
||||
import javax.persistence.Column; |
|
||||
import javax.persistence.Entity; |
|
||||
|
|
||||
import io.sc.engine.rule.server.scorecard.vo.ScoreCardIndicatorValueVarVo; |
|
||||
import io.sc.engine.rule.server.scorecard.vo.ScoreCardIndicatorVarVo; |
|
||||
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; |
|
||||
|
|
||||
@Entity |
|
||||
public class ScoreCardIndicatorVarEntity extends ScoreCardVarEntity{ |
|
||||
|
|
||||
//库代码
|
|
||||
@Column(name="LIB_CODE_") |
|
||||
protected String libCode; |
|
||||
|
|
||||
//库版本
|
|
||||
@Column(name="LIB_VERSION_") |
|
||||
protected Integer libVersion; |
|
||||
|
|
||||
//指标代码
|
|
||||
@Column(name="INDICATOR_CODE_") |
|
||||
protected String indicatorCode; |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardIndicatorVarVo toVo() { |
|
||||
ScoreCardIndicatorVarVo vo =new ScoreCardIndicatorVarVo(); |
|
||||
super.toVo(vo); |
|
||||
vo.setType(this.getType()); |
|
||||
vo.setLibCode(this.getLibCode()); |
|
||||
vo.setLibVersion(this.getLibVersion()); |
|
||||
vo.setIndicatorCode(this.getIndicatorCode()); |
|
||||
return vo; |
|
||||
} |
|
||||
|
|
||||
public String getLibCode() { |
|
||||
return libCode; |
|
||||
} |
|
||||
|
|
||||
public void setLibCode(String libCode) { |
|
||||
this.libCode = libCode; |
|
||||
} |
|
||||
|
|
||||
public Integer getLibVersion() { |
|
||||
return libVersion; |
|
||||
} |
|
||||
|
|
||||
public void setLibVersion(Integer libVersion) { |
|
||||
this.libVersion = libVersion; |
|
||||
} |
|
||||
|
|
||||
public String getIndicatorCode() { |
|
||||
return indicatorCode; |
|
||||
} |
|
||||
|
|
||||
public void setIndicatorCode(String indicatorCode) { |
|
||||
this.indicatorCode = indicatorCode; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public TestCaseParameterWrapper toTestCaseParameterWrapper() { |
|
||||
TestCaseParameterWrapper wrapper =new TestCaseParameterWrapper(this.getId(),this.getCode(),null,null,null,null,false); |
|
||||
|
|
||||
wrapper.setTestCaseId(null); |
|
||||
wrapper.setParent(null); |
|
||||
wrapper.setCategory("P"); |
|
||||
wrapper.setName(this.getName()); |
|
||||
wrapper.setParameterType(null); |
|
||||
wrapper.setScoreCardVarType(this.getType()); |
|
||||
wrapper.setIndicatorType(null); |
|
||||
wrapper.setValueType("java.math.BigDecimal"); |
|
||||
wrapper.setDefaultValue(null); |
|
||||
wrapper.setOrder(this.getOrder()); |
|
||||
|
|
||||
return wrapper; |
|
||||
} |
|
||||
} |
|
@ -1,155 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.entity; |
|
||||
|
|
||||
import java.io.Serializable; |
|
||||
|
|
||||
import javax.persistence.Column; |
|
||||
import javax.persistence.DiscriminatorColumn; |
|
||||
import javax.persistence.DiscriminatorType; |
|
||||
import javax.persistence.Entity; |
|
||||
import javax.persistence.EnumType; |
|
||||
import javax.persistence.Enumerated; |
|
||||
import javax.persistence.FetchType; |
|
||||
import javax.persistence.GeneratedValue; |
|
||||
import javax.persistence.Id; |
|
||||
import javax.persistence.Inheritance; |
|
||||
import javax.persistence.InheritanceType; |
|
||||
import javax.persistence.JoinColumn; |
|
||||
import javax.persistence.ManyToOne; |
|
||||
import javax.persistence.Table; |
|
||||
import javax.validation.constraints.Size; |
|
||||
|
|
||||
import io.sc.engine.rule.server.scorecard.vo.ScoreCardVarVo; |
|
||||
import io.sc.platform.orm.DeepClone; |
|
||||
import io.sc.platform.orm.IdClearable; |
|
||||
import io.sc.platform.orm.api.vo.AuditorVo; |
|
||||
import org.hibernate.annotations.GenericGenerator; |
|
||||
import org.springframework.beans.BeanUtils; |
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
import io.sc.engine.rule.server.resource.entity.ResourceEntity; |
|
||||
import io.sc.engine.rule.server.testcase.annotation.TestCaseParameterAble; |
|
||||
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; |
|
||||
import io.sc.platform.orm.entity.AuditorEntity; |
|
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonSubTypes; |
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量实体类 |
|
||||
*/ |
|
||||
@Entity |
|
||||
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) |
|
||||
@DiscriminatorColumn(name="TYPE_",discriminatorType=DiscriminatorType.STRING,length=20) |
|
||||
@Table(name="RE_SCORE_CARD_VAR") |
|
||||
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type",defaultImpl=OptionScoreCardVarEntity.class) |
|
||||
@JsonSubTypes({ |
|
||||
@JsonSubTypes.Type(value=NumberRangeScoreCardIndicatorVarEntity.class), //指标数值分段
|
|
||||
@JsonSubTypes.Type(value=NumberRangeScoreCardVarEntity.class), //数值分段
|
|
||||
|
|
||||
@JsonSubTypes.Type(value=OptionScoreCardIndicatorVarEntity.class), //指标选项
|
|
||||
@JsonSubTypes.Type(value=OptionScoreCardVarEntity.class), //选项
|
|
||||
|
|
||||
@JsonSubTypes.Type(value=ScoreCardIndicatorValueVarEntity.class) //值
|
|
||||
}) |
|
||||
public abstract class ScoreCardVarEntity extends AuditorEntity<ScoreCardVarVo> implements DeepClone, IdClearable, TestCaseParameterAble { |
|
||||
//ID,主键
|
|
||||
@Id |
|
||||
@GeneratedValue(generator = "system-uuid") |
|
||||
@GenericGenerator(name = "system-uuid", strategy = "uuid2") |
|
||||
@Column(name="ID_", length=36) |
|
||||
@Size(max=36) |
|
||||
protected String id; |
|
||||
|
|
||||
//代码
|
|
||||
@Column(name="CODE_") |
|
||||
protected String code; |
|
||||
|
|
||||
//名称
|
|
||||
@Column(name="NAME_", length=254) |
|
||||
@Size(max=254) |
|
||||
protected String name; |
|
||||
|
|
||||
//类型
|
|
||||
@Column(name="TYPE_",insertable = false,updatable = false) |
|
||||
@Enumerated(EnumType.STRING) |
|
||||
protected ScoreCardVarType type; |
|
||||
|
|
||||
//排序
|
|
||||
@Column(name="ORDER_") |
|
||||
protected Integer order; |
|
||||
|
|
||||
//所属资源
|
|
||||
@ManyToOne(fetch=FetchType.LAZY) |
|
||||
@JoinColumn(name="RESOURCE_ID_") |
|
||||
protected ResourceEntity resource; |
|
||||
|
|
||||
public void toVo(ScoreCardVarVo vo) { |
|
||||
if(vo!=null) { |
|
||||
super.toVo(vo); |
|
||||
vo.setId(this.getId()); |
|
||||
vo.setCode(this.getCode()); |
|
||||
vo.setName(this.getName()); |
|
||||
vo.setType(this.getType()); |
|
||||
vo.setOrder(this.getOrder()); |
|
||||
vo.setResource(this.getResource()==null?null:this.getResource().getId()); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
public ScoreCardVarEntity() {} |
|
||||
public ScoreCardVarEntity(String id) { |
|
||||
this.id =id; |
|
||||
} |
|
||||
|
|
||||
public String getId() { |
|
||||
return id; |
|
||||
} |
|
||||
public void setId(String id) { |
|
||||
this.id = id; |
|
||||
} |
|
||||
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 ScoreCardVarType getType() { |
|
||||
return type; |
|
||||
} |
|
||||
public void setType(ScoreCardVarType type) { |
|
||||
this.type = type; |
|
||||
} |
|
||||
public Integer getOrder() { |
|
||||
return order; |
|
||||
} |
|
||||
public void setOrder(Integer order) { |
|
||||
this.order = order; |
|
||||
} |
|
||||
public ResourceEntity getResource() { |
|
||||
return resource; |
|
||||
} |
|
||||
public void setResource(ResourceEntity resource) { |
|
||||
this.resource = resource; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public Object deepClone() throws Exception{ |
|
||||
ScoreCardVarEntity entity =this.getClass().newInstance(); |
|
||||
BeanUtils.copyProperties(this, entity); |
|
||||
return entity; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public void clearId() { |
|
||||
this.setId(null); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public TestCaseParameterWrapper toTestCaseParameterWrapper() { |
|
||||
return null; |
|
||||
} |
|
||||
} |
|
@ -1,28 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.exception; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量已经存在违例类 |
|
||||
*/ |
|
||||
public class ScoreCardVarAlreadyExistsException extends RuntimeException{ |
|
||||
private static final long serialVersionUID = 3989145728367307746L; |
|
||||
|
|
||||
public ScoreCardVarAlreadyExistsException() { |
|
||||
super(); |
|
||||
} |
|
||||
|
|
||||
public ScoreCardVarAlreadyExistsException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { |
|
||||
super(message, cause, enableSuppression, writableStackTrace); |
|
||||
} |
|
||||
|
|
||||
public ScoreCardVarAlreadyExistsException(String message, Throwable cause) { |
|
||||
super(message, cause); |
|
||||
} |
|
||||
|
|
||||
public ScoreCardVarAlreadyExistsException(String message) { |
|
||||
super(message); |
|
||||
} |
|
||||
|
|
||||
public ScoreCardVarAlreadyExistsException(Throwable cause) { |
|
||||
super(cause); |
|
||||
} |
|
||||
} |
|
@ -1,28 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.exception; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量代码和指标代码相同违例类 |
|
||||
*/ |
|
||||
public class ScoreCardVarCodeAndIndicatorCodeSameException extends RuntimeException{ |
|
||||
private static final long serialVersionUID = -5557697135493816729L; |
|
||||
|
|
||||
public ScoreCardVarCodeAndIndicatorCodeSameException() { |
|
||||
super(); |
|
||||
} |
|
||||
|
|
||||
public ScoreCardVarCodeAndIndicatorCodeSameException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { |
|
||||
super(message, cause, enableSuppression, writableStackTrace); |
|
||||
} |
|
||||
|
|
||||
public ScoreCardVarCodeAndIndicatorCodeSameException(String message, Throwable cause) { |
|
||||
super(message, cause); |
|
||||
} |
|
||||
|
|
||||
public ScoreCardVarCodeAndIndicatorCodeSameException(String message) { |
|
||||
super(message); |
|
||||
} |
|
||||
|
|
||||
public ScoreCardVarCodeAndIndicatorCodeSameException(Throwable cause) { |
|
||||
super(cause); |
|
||||
} |
|
||||
} |
|
@ -1,26 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.repository; |
|
||||
|
|
||||
import java.util.List; |
|
||||
|
|
||||
import org.springframework.data.jpa.repository.Query; |
|
||||
import org.springframework.data.repository.query.Param; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardIndicatorVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardVarEntity; |
|
||||
import io.sc.platform.orm.repository.DaoRepository; |
|
||||
import org.springframework.stereotype.Repository; |
|
||||
|
|
||||
@Repository("io.sc.engine.rule.server.scorecard.repository.ScoreCardVarRepository") |
|
||||
public interface ScoreCardVarRepository extends DaoRepository<ScoreCardVarEntity,String>{ |
|
||||
@Query("select max(e.order)+1 from ScoreCardVarEntity e where e.resource.id=:id") |
|
||||
public Integer getNextOrder(@Param("id") String id); |
|
||||
|
|
||||
@Query("select e from ScoreCardVarEntity e where e.resource.id=:resourceId") |
|
||||
public List<ScoreCardVarEntity> findByResourceId(@Param("resourceId")String resourceId); |
|
||||
|
|
||||
@Query("select e from ScoreCardIndicatorVarEntity e where e.libCode=:libCode") |
|
||||
public List<ScoreCardIndicatorVarEntity> findScoreCardIndicatorVarEntityByLibCode(@Param("libCode")String libCode); |
|
||||
|
|
||||
@Query("select e from ScoreCardIndicatorVarEntity e where e.libCode=:libCode and e.libVersion=:libVersion and e.indicatorCode=:indicatorCode") |
|
||||
public List<ScoreCardIndicatorVarEntity> findScoreCardIndicatorVarEntityByIndicatorCode(@Param("libCode")String libCode,@Param("libVersion")Integer libVersion,@Param("indicatorCode")String indicatorCode); |
|
||||
} |
|
||||
|
|
@ -1,17 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.service; |
|
||||
|
|
||||
import java.util.List; |
|
||||
|
|
||||
import org.springframework.data.repository.query.Param; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.repository.ScoreCardVarRepository; |
|
||||
import io.sc.platform.orm.service.DaoService; |
|
||||
|
|
||||
public interface ScoreCardVarService extends DaoService<ScoreCardVarEntity, String, ScoreCardVarRepository>{ |
|
||||
/** |
|
||||
* 通过资源ID查询评分卡变量集合 |
|
||||
* @param resourceId 资源ID |
|
||||
* @return 评分卡变量集合 |
|
||||
*/ |
|
||||
public List<ScoreCardVarEntity> findByResourceId(@Param("resourceId")String resourceId); |
|
||||
} |
|
@ -1,151 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.service.impl; |
|
||||
|
|
||||
import io.sc.engine.rule.core.util.Strings; |
|
||||
import io.sc.engine.rule.server.resource.entity.ResourceEntity; |
|
||||
import io.sc.engine.rule.server.resource.entity.ScoreCardResourceEntity; |
|
||||
import io.sc.engine.rule.server.resource.service.ResourceService; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardIndicatorVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.exception.ScoreCardVarAlreadyExistsException; |
|
||||
import io.sc.engine.rule.server.scorecard.exception.ScoreCardVarCodeAndIndicatorCodeSameException; |
|
||||
import io.sc.engine.rule.server.scorecard.repository.ScoreCardVarRepository; |
|
||||
import io.sc.engine.rule.server.scorecard.service.ScoreCardVarService; |
|
||||
import io.sc.engine.rule.server.scorecard.service.support.ScoreCardVarEntityChangedEvent; |
|
||||
import io.sc.platform.orm.entity.support.EntityChangedEventType; |
|
||||
import io.sc.platform.orm.service.impl.DaoServiceImpl; |
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
|
||||
import org.springframework.context.ApplicationContext; |
|
||||
import org.springframework.stereotype.Service; |
|
||||
import org.springframework.transaction.annotation.Transactional; |
|
||||
import org.springframework.util.StringUtils; |
|
||||
|
|
||||
import java.util.List; |
|
||||
|
|
||||
@Service("io.sc.engine.rule.server.scorecard.service.impl.ScoreCardVarServiceImpl") |
|
||||
public class ScoreCardVarServiceImpl extends DaoServiceImpl<ScoreCardVarEntity, String, ScoreCardVarRepository> implements ScoreCardVarService{ |
|
||||
@Autowired private ApplicationContext applicationContext; |
|
||||
@Autowired private ResourceService resourceService; |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarEntity add(ScoreCardVarEntity entity) throws Exception { |
|
||||
if(entity!=null) { |
|
||||
if(entity instanceof ScoreCardIndicatorVarEntity) { |
|
||||
ScoreCardIndicatorVarEntity scoreCardIndicatorVarEntity =(ScoreCardIndicatorVarEntity)entity; |
|
||||
if(scoreCardIndicatorVarEntity.getCode()!=null && scoreCardIndicatorVarEntity.getCode().equals(scoreCardIndicatorVarEntity.getIndicatorCode())) { |
|
||||
throw new ScoreCardVarCodeAndIndicatorCodeSameException(); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
entity.setName(Strings.replaceCR_LF(entity.getName())); |
|
||||
if(!StringUtils.hasText(entity.getCode())) { |
|
||||
entity.setCode("V"+System.currentTimeMillis()); |
|
||||
} |
|
||||
|
|
||||
String resourceId =entity.getResource().getId(); |
|
||||
ResourceEntity resourceEntity =resourceService.findById(resourceId); |
|
||||
if(resourceEntity!=null && resourceEntity instanceof ScoreCardResourceEntity) { |
|
||||
ScoreCardResourceEntity scoreCardResourceEntity =(ScoreCardResourceEntity)resourceEntity; |
|
||||
List<ScoreCardVarEntity> vars =scoreCardResourceEntity.getScoreCardVars(); |
|
||||
if(vars!=null && vars.size()>0) { |
|
||||
for(ScoreCardVarEntity var : vars) { |
|
||||
if(var.getCode().equals(entity.getCode()) || var.getName().equals(entity.getName())) { |
|
||||
throw new ScoreCardVarAlreadyExistsException(); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
Integer nextOrder =repository.getNextOrder(entity.getResource().getId()); |
|
||||
if(nextOrder!=null) { |
|
||||
entity.setOrder(nextOrder); |
|
||||
}else { |
|
||||
entity.setOrder(1); |
|
||||
} |
|
||||
|
|
||||
ScoreCardVarEntity newEntity =super.add(entity); |
|
||||
|
|
||||
//通知其他实体进行相应的更新
|
|
||||
applicationContext.publishEvent(new ScoreCardVarEntityChangedEvent(EntityChangedEventType.ADD,null, newEntity)); |
|
||||
|
|
||||
return newEntity; |
|
||||
} |
|
||||
return null; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
@Transactional |
|
||||
public ScoreCardVarEntity update(String primaryKey, ScoreCardVarEntity entity) throws Exception { |
|
||||
if(primaryKey==null){ |
|
||||
throw exceptionProvider.getUpdateNullOldObjectPrimaryKeyException(); |
|
||||
} |
|
||||
if(entity==null){ |
|
||||
throw exceptionProvider.getUpdateNullNewObjectException(); |
|
||||
} |
|
||||
|
|
||||
//当参数变化时,通知其他监听器
|
|
||||
ScoreCardVarEntity oldEntity =findById(primaryKey); |
|
||||
applicationContext.publishEvent(new ScoreCardVarEntityChangedEvent(EntityChangedEventType.UPDATE,oldEntity, entity)); |
|
||||
|
|
||||
entity.setName(Strings.replaceCR_LF(entity.getName())); |
|
||||
if(!StringUtils.hasText(entity.getCode())) { |
|
||||
entity.setCode("V"+System.currentTimeMillis()); |
|
||||
} |
|
||||
|
|
||||
String resourceId =entity.getResource().getId(); |
|
||||
ResourceEntity resourceEntity =resourceService.findById(resourceId); |
|
||||
if(resourceEntity!=null && resourceEntity instanceof ScoreCardResourceEntity) { |
|
||||
ScoreCardResourceEntity scoreCardResourceEntity =(ScoreCardResourceEntity)resourceEntity; |
|
||||
List<ScoreCardVarEntity> vars =scoreCardResourceEntity.getScoreCardVars(); |
|
||||
if(vars!=null && vars.size()>0) { |
|
||||
for(ScoreCardVarEntity var : vars) { |
|
||||
if(!var.getId().equals(entity.getId())) { |
|
||||
if(var.getCode().equals(entity.getCode()) || var.getName().equals(entity.getName())) { |
|
||||
throw new ScoreCardVarAlreadyExistsException(); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
//如果没有顺序则自动生成顺序
|
|
||||
if(entity.getOrder()==null) { |
|
||||
Integer nextOrder =repository.getNextOrder(entity.getResource().getId()); |
|
||||
if(nextOrder!=null) { |
|
||||
entity.setOrder(nextOrder); |
|
||||
}else { |
|
||||
entity.setOrder(1); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
//通知其他实体进行相应的更新
|
|
||||
applicationContext.publishEvent(new ScoreCardVarEntityChangedEvent(EntityChangedEventType.UPDATE,oldEntity, entity)); |
|
||||
return super.update(primaryKey, entity); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public String remove(String primaryKey) throws Exception { |
|
||||
ScoreCardVarEntity oldEntity =findById(primaryKey); |
|
||||
//通知其他实体进行相应的更新
|
|
||||
applicationContext.publishEvent(new ScoreCardVarEntityChangedEvent(EntityChangedEventType.DELETE,oldEntity, null)); |
|
||||
return super.remove(primaryKey); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public List<String> remove(List<String> primaryKeys) throws Exception { |
|
||||
if(primaryKeys!=null && !primaryKeys.isEmpty()) { |
|
||||
List<ScoreCardVarEntity> willBeDeleted =repository.findAllById(primaryKeys); |
|
||||
if(willBeDeleted!=null && willBeDeleted.size()>0) { |
|
||||
for(ScoreCardVarEntity entity : willBeDeleted) { |
|
||||
//通知其他实体进行相应的更新
|
|
||||
applicationContext.publishEvent(new ScoreCardVarEntityChangedEvent(EntityChangedEventType.DELETE,entity, null)); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
return super.remove(primaryKeys); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public List<ScoreCardVarEntity> findByResourceId(String resourceId) { |
|
||||
return repository.findByResourceId(resourceId); |
|
||||
} |
|
||||
} |
|
@ -1,11 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.service.support; |
|
||||
|
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardVarEntity; |
|
||||
import io.sc.platform.orm.entity.support.EntityChangedEvent; |
|
||||
import io.sc.platform.orm.entity.support.EntityChangedEventType; |
|
||||
|
|
||||
public class ScoreCardVarEntityChangedEvent extends EntityChangedEvent<ScoreCardVarEntity>{ |
|
||||
public ScoreCardVarEntityChangedEvent(EntityChangedEventType type, ScoreCardVarEntity oldEntity, ScoreCardVarEntity newEntity) { |
|
||||
super(type, oldEntity, newEntity); |
|
||||
} |
|
||||
} |
|
@ -1,26 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.vo; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
import javax.persistence.DiscriminatorValue; |
|
||||
import javax.persistence.Entity; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(指标选项) Vo 类 |
|
||||
*/ |
|
||||
public class NumberRangeScoreCardIndicatorVarVo extends ScoreCardIndicatorVarVo { |
|
||||
//数值分段
|
|
||||
private String numberRange; |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.INDICATOR_NUMBER_RANGE; |
|
||||
} |
|
||||
|
|
||||
public String getNumberRange() { |
|
||||
return numberRange; |
|
||||
} |
|
||||
public void setNumberRange(String numberRange) { |
|
||||
this.numberRange = numberRange; |
|
||||
} |
|
||||
} |
|
@ -1,23 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.vo; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(数值分段) Vo 类 |
|
||||
*/ |
|
||||
public class NumberRangeScoreCardVarVo extends ScoreCardVarVo { |
|
||||
//数值分段
|
|
||||
private String numberRange; |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.NUMBER_RANGE; |
|
||||
} |
|
||||
|
|
||||
public String getNumberRange() { |
|
||||
return numberRange; |
|
||||
} |
|
||||
public void setNumberRange(String numberRange) { |
|
||||
this.numberRange = numberRange; |
|
||||
} |
|
||||
} |
|
@ -1,24 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.vo; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(指标选项) Vo 类 |
|
||||
*/ |
|
||||
public class OptionScoreCardIndicatorVarVo extends ScoreCardIndicatorVarVo { |
|
||||
//选项
|
|
||||
private String option; |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.INDICATOR_OPTION; |
|
||||
} |
|
||||
|
|
||||
public String getOption() { |
|
||||
return option; |
|
||||
} |
|
||||
public void setOption(String option) { |
|
||||
this.option = option; |
|
||||
} |
|
||||
|
|
||||
} |
|
@ -1,24 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.vo; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(选项) Vo 类 |
|
||||
*/ |
|
||||
public class OptionScoreCardVarVo extends ScoreCardVarVo { |
|
||||
//选项
|
|
||||
private String option; |
|
||||
|
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.OPTION; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
public String getOption() { |
|
||||
return option; |
|
||||
} |
|
||||
public void setOption(String option) { |
|
||||
this.option = option; |
|
||||
} |
|
||||
} |
|
@ -1,13 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.vo; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量(指标值) Vo 类 |
|
||||
*/ |
|
||||
public class ScoreCardIndicatorValueVarVo extends ScoreCardIndicatorVarVo { |
|
||||
@Override |
|
||||
public ScoreCardVarType getType() { |
|
||||
return ScoreCardVarType.INDICATOR_VALUE; |
|
||||
} |
|
||||
} |
|
@ -1,41 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.vo; |
|
||||
|
|
||||
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; |
|
||||
|
|
||||
import javax.persistence.Column; |
|
||||
import javax.persistence.Entity; |
|
||||
|
|
||||
public class ScoreCardIndicatorVarVo extends ScoreCardVarVo { |
|
||||
//库代码
|
|
||||
protected String libCode; |
|
||||
|
|
||||
//库版本
|
|
||||
protected Integer libVersion; |
|
||||
|
|
||||
//指标代码
|
|
||||
protected String indicatorCode; |
|
||||
|
|
||||
public String getLibCode() { |
|
||||
return libCode; |
|
||||
} |
|
||||
|
|
||||
public void setLibCode(String libCode) { |
|
||||
this.libCode = libCode; |
|
||||
} |
|
||||
|
|
||||
public Integer getLibVersion() { |
|
||||
return libVersion; |
|
||||
} |
|
||||
|
|
||||
public void setLibVersion(Integer libVersion) { |
|
||||
this.libVersion = libVersion; |
|
||||
} |
|
||||
|
|
||||
public String getIndicatorCode() { |
|
||||
return indicatorCode; |
|
||||
} |
|
||||
|
|
||||
public void setIndicatorCode(String indicatorCode) { |
|
||||
this.indicatorCode = indicatorCode; |
|
||||
} |
|
||||
} |
|
@ -1,64 +0,0 @@ |
|||||
package io.sc.engine.rule.server.scorecard.vo; |
|
||||
|
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
import io.sc.platform.orm.api.vo.AuditorVo; |
|
||||
|
|
||||
/** |
|
||||
* 评分卡变量 Vo 类 |
|
||||
*/ |
|
||||
public class ScoreCardVarVo extends AuditorVo { |
|
||||
//ID,主键
|
|
||||
protected String id; |
|
||||
|
|
||||
//代码
|
|
||||
protected String code; |
|
||||
|
|
||||
//名称
|
|
||||
protected String name; |
|
||||
|
|
||||
//类型
|
|
||||
protected ScoreCardVarType type; |
|
||||
|
|
||||
//排序
|
|
||||
protected Integer order; |
|
||||
|
|
||||
//所属资源
|
|
||||
protected String resource; |
|
||||
|
|
||||
public String getId() { |
|
||||
return id; |
|
||||
} |
|
||||
public void setId(String id) { |
|
||||
this.id = id; |
|
||||
} |
|
||||
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 ScoreCardVarType getType() { |
|
||||
return type; |
|
||||
} |
|
||||
public void setType(ScoreCardVarType type) { |
|
||||
this.type = type; |
|
||||
} |
|
||||
public Integer getOrder() { |
|
||||
return order; |
|
||||
} |
|
||||
public void setOrder(Integer order) { |
|
||||
this.order = order; |
|
||||
} |
|
||||
public String getResource() { |
|
||||
return resource; |
|
||||
} |
|
||||
public void setResource(String resource) { |
|
||||
this.resource = resource; |
|
||||
} |
|
||||
} |
|
@ -1,136 +0,0 @@ |
|||||
package io.sc.engine.rule.server.testcase.bean; |
|
||||
|
|
||||
import java.util.ArrayList; |
|
||||
import java.util.HashMap; |
|
||||
import java.util.List; |
|
||||
import java.util.Map; |
|
||||
import java.util.UUID; |
|
||||
|
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
|
||||
import org.springframework.stereotype.Component; |
|
||||
import org.springframework.util.StringUtils; |
|
||||
import io.sc.engine.rule.core.enums.IndicatorType; |
|
||||
import io.sc.engine.rule.core.enums.ScoreCardVarType; |
|
||||
import io.sc.engine.rule.core.enums.TestCaseOwnerType; |
|
||||
import io.sc.engine.rule.server.lib.entity.IndicatorEntity; |
|
||||
import io.sc.engine.rule.server.lib.service.IndicatorService; |
|
||||
import io.sc.engine.rule.server.model.service.ModelService; |
|
||||
import io.sc.engine.rule.server.resource.service.ResourceService; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardIndicatorVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.entity.ScoreCardVarEntity; |
|
||||
import io.sc.engine.rule.server.scorecard.service.ScoreCardVarService; |
|
||||
import io.sc.engine.rule.server.testcase.annotation.TestCaseParameterBuilderType; |
|
||||
import io.sc.engine.rule.server.testcase.entity.TestCaseParameterEntity; |
|
||||
import io.sc.engine.rule.server.testcase.service.TestCaseParameterBuilder; |
|
||||
import io.sc.engine.rule.server.testcase.service.TestCaseParameterService; |
|
||||
import io.sc.engine.rule.server.testcase.service.TestCaseService; |
|
||||
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; |
|
||||
|
|
||||
@Component |
|
||||
@TestCaseParameterBuilderType(TestCaseOwnerType.SCORE_CARD) |
|
||||
public class ScoreCardTestCaseParameterBuilder implements TestCaseParameterBuilder{ |
|
||||
@Autowired ResourceService resourceService; |
|
||||
@Autowired ModelService modelService; |
|
||||
@Autowired private ScoreCardVarService scoreCardVarService; |
|
||||
@Autowired private TestCaseParameterService testCaseParameterService; |
|
||||
@Autowired TestCaseService testCaseService; |
|
||||
@Autowired IndicatorService indicatorService; |
|
||||
|
|
||||
public List<TestCaseParameterWrapper> buildTestCaseParameterWrappers(String ownerId, String testCaseId) throws Exception { |
|
||||
if(StringUtils.hasText(ownerId)) { |
|
||||
List<TestCaseParameterWrapper> wrappers =new ArrayList<TestCaseParameterWrapper>(); |
|
||||
//通过评分卡实体所定义的结构构建测试用例参数树
|
|
||||
buildTestCaseParameterList(wrappers,null,scoreCardVarService.findByResourceId(ownerId)); |
|
||||
//将已经配置的测试用例参数合并到上述树型结构中
|
|
||||
mergeTestCaseParameterList(testCaseId,wrappers); |
|
||||
return wrappers; |
|
||||
} |
|
||||
return null; |
|
||||
} |
|
||||
|
|
||||
private void buildTestCaseParameterList(List<TestCaseParameterWrapper> list,TestCaseParameterWrapper parentNode,List<ScoreCardVarEntity> scoreCardVars) { |
|
||||
if(list!=null) { |
|
||||
if(scoreCardVars!=null && scoreCardVars.size()>0) { |
|
||||
for(ScoreCardVarEntity scoreCardVar : scoreCardVars) { |
|
||||
if(ScoreCardVarType.INDICATOR_NUMBER_RANGE.equals(scoreCardVar.getType()) |
|
||||
|| ScoreCardVarType.INDICATOR_OPTION.equals(scoreCardVar.getType()) |
|
||||
|| ScoreCardVarType.INDICATOR_VALUE.equals(scoreCardVar.getType()) |
|
||||
){ |
|
||||
ScoreCardIndicatorVarEntity scoreCardIndicatorVarEntity =(ScoreCardIndicatorVarEntity)scoreCardVar; |
|
||||
String libCode =scoreCardIndicatorVarEntity.getLibCode(); |
|
||||
Integer libVersion =scoreCardIndicatorVarEntity.getLibVersion(); |
|
||||
String indicatorCode =scoreCardIndicatorVarEntity.getIndicatorCode(); |
|
||||
IndicatorEntity indicatorEntity =indicatorService.getRepository().findByLibCodeAndVersionAndIndicatorCode(libCode, libVersion, indicatorCode); |
|
||||
if(indicatorEntity!=null && IndicatorType.INTERFACE.equals(indicatorEntity.getType())) { |
|
||||
list.add(indicatorEntity.toTestCaseParameterWrapper()); |
|
||||
} |
|
||||
} |
|
||||
list.add(scoreCardVar.toTestCaseParameterWrapper()); |
|
||||
} |
|
||||
//添加评分卡最终结果测试用例参数
|
|
||||
TestCaseParameterWrapper wrapper =new TestCaseParameterWrapper(); |
|
||||
wrapper.setId(UUID.randomUUID().toString()); |
|
||||
wrapper.setCode("_SCORE_"); |
|
||||
wrapper.setName("评分卡结果值"); |
|
||||
wrapper.setCategory("P"); |
|
||||
wrapper.setParameterType(null); |
|
||||
wrapper.setScoreCardVarType(ScoreCardVarType.RESULT); |
|
||||
wrapper.setOrder(Integer.MAX_VALUE); |
|
||||
list.add(wrapper); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
private void mergeTestCaseParameterList(String testCaseId,List<TestCaseParameterWrapper> wrappers) throws Exception { |
|
||||
//根据评分卡结构构建的测试用例参数列表
|
|
||||
Map<String,TestCaseParameterWrapper> modelStructMap =new HashMap<String,TestCaseParameterWrapper>(); |
|
||||
for(TestCaseParameterWrapper wrapper : wrappers) { |
|
||||
wrapper.setTestCaseId(testCaseId); |
|
||||
modelStructMap.put(wrapper.getCode(), wrapper); |
|
||||
} |
|
||||
|
|
||||
//已经配置的测试用例参数
|
|
||||
Map<String,TestCaseParameterEntity> configuredMap =new HashMap<String,TestCaseParameterEntity>(); |
|
||||
List<TestCaseParameterEntity> entities =testCaseParameterService.getRepository().findByTestCase(testCaseId); |
|
||||
for(TestCaseParameterEntity entity : entities) { |
|
||||
configuredMap.put(entity.getCode(), entity); |
|
||||
} |
|
||||
|
|
||||
//将要删除的
|
|
||||
List<String> deleteds =new ArrayList<String>(); |
|
||||
for(String key : configuredMap.keySet()) { |
|
||||
if(!modelStructMap.containsKey(key)) { |
|
||||
TestCaseParameterEntity entity =configuredMap.get(key); |
|
||||
deleteds.add(entity.getId()); |
|
||||
} |
|
||||
} |
|
||||
testCaseParameterService.remove(deleteds); |
|
||||
|
|
||||
//将要插入的
|
|
||||
List<TestCaseParameterEntity> inserts =new ArrayList<TestCaseParameterEntity>(); |
|
||||
for(String key : modelStructMap.keySet()) { |
|
||||
TestCaseParameterWrapper wrapper =modelStructMap.get(key); |
|
||||
if(!configuredMap.containsKey(key) && "P".equals(wrapper.getCategory())) { |
|
||||
inserts.add(wrapper.toTestCaseParameterEntity()); |
|
||||
} |
|
||||
} |
|
||||
testCaseParameterService.getRepository().saveAll(inserts); |
|
||||
|
|
||||
//合并
|
|
||||
entities =testCaseParameterService.findByTestCase(testCaseId); |
|
||||
if(entities!=null && entities.size()>0) { |
|
||||
for(TestCaseParameterEntity entity : entities) { |
|
||||
TestCaseParameterWrapper wrapper =modelStructMap.get(entity.getCode()); |
|
||||
if(wrapper!=null) { |
|
||||
wrapper.setId(entity.getId()); |
|
||||
wrapper.setSkipCheck(entity.getSkipCheck()); |
|
||||
wrapper.setInputValue(entity.getInputValue()); |
|
||||
wrapper.setExpectValue(entity.getExpectValue()); |
|
||||
wrapper.setResultValue(entity.getResultValue()); |
|
||||
wrapper.setTestResult(entity.getTestResult()); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue