forked from rongchao/epmet-cloud-rizhao
6 changed files with 151 additions and 12 deletions
@ -0,0 +1,13 @@ |
|||||
|
package com.epmet.support.normalizing; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
|
||||
|
/** |
||||
|
* 分值常量 |
||||
|
*/ |
||||
|
public class ScoreConstants { |
||||
|
|
||||
|
public static final BigDecimal MIN_SCORE = new BigDecimal(0); |
||||
|
public static final BigDecimal MAX_SCORE = new BigDecimal(100); |
||||
|
|
||||
|
} |
@ -0,0 +1,35 @@ |
|||||
|
package com.epmet.support.normalizing.batch; |
||||
|
|
||||
|
import com.epmet.support.normalizing.ScoreCalculator; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.List; |
||||
|
import java.util.stream.Collectors; |
||||
|
|
||||
|
public class BatchScoreCalculator { |
||||
|
|
||||
|
/** |
||||
|
* 每个指标都是一条数据,每一条数据中包含该指标的一组样本 |
||||
|
*/ |
||||
|
private List<IndexInputVO> indexVOS; |
||||
|
|
||||
|
/** |
||||
|
* 执行计算 |
||||
|
* @return 每一条都是一个指标的,所有样本对应的,得分值 |
||||
|
*/ |
||||
|
public List<IndexOutputVO> exec(List<IndexInputVO> indexVOS) { |
||||
|
this.indexVOS = indexVOS; |
||||
|
|
||||
|
return indexVOS.stream().map(i -> { |
||||
|
String indexId = i.getIndexId(); |
||||
|
List indexValues = i.getIndexValues(); |
||||
|
BigDecimal weight = i.getWeight(); |
||||
|
ScoreCalculator scoreCalculator = i.getScoreCalculator(); |
||||
|
|
||||
|
List scores4OneIndex = scoreCalculator.normalize(indexValues, weight); |
||||
|
|
||||
|
return new IndexOutputVO(indexId, scores4OneIndex); |
||||
|
}).collect(Collectors.toList()); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
package com.epmet.support.normalizing.batch; |
||||
|
|
||||
|
import com.epmet.support.normalizing.ScoreCalculator; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
@AllArgsConstructor |
||||
|
@NoArgsConstructor |
||||
|
public class IndexInputVO<T> { |
||||
|
|
||||
|
/** |
||||
|
* 指标标记,由使用者传入,用以标记该条指标的独有特性,一般用id或者code |
||||
|
* 非必填 |
||||
|
*/ |
||||
|
private String indexId; |
||||
|
|
||||
|
/** |
||||
|
* 指标的样本值 |
||||
|
*/ |
||||
|
private List<T> indexValues; |
||||
|
|
||||
|
/** |
||||
|
* 权重 |
||||
|
*/ |
||||
|
private BigDecimal weight; |
||||
|
|
||||
|
private ScoreCalculator<T> scoreCalculator; |
||||
|
|
||||
|
public IndexInputVO(List<T> indexValues, BigDecimal weight, ScoreCalculator<T> scoreCalculator) { |
||||
|
this.indexValues = indexValues; |
||||
|
this.weight = weight; |
||||
|
this.scoreCalculator = scoreCalculator; |
||||
|
} |
||||
|
} |
@ -0,0 +1,23 @@ |
|||||
|
package com.epmet.support.normalizing.batch; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
@AllArgsConstructor |
||||
|
public class IndexOutputVO<T> { |
||||
|
|
||||
|
/** |
||||
|
* 指标标记,由使用者传入,用以标记该条指标的独有特性,一般用id或者code |
||||
|
* 非必填 |
||||
|
*/ |
||||
|
private String indexId; |
||||
|
|
||||
|
/** |
||||
|
* 指标的样本值 |
||||
|
*/ |
||||
|
private List<BigDecimal> indexScores; |
||||
|
} |
Loading…
Reference in new issue