|
|
@ -66,22 +66,24 @@ public class BatchScoreCalculator { |
|
|
|
|
|
|
|
BigDecimal minScoreValue = idx.getScoreCalculator().getMinScore(); |
|
|
|
BigDecimal maxScoreValue = idx.getScoreCalculator().getMaxScore(); |
|
|
|
if (idx.getScoreCalculator().getMaxValue().compareTo(idx.getScoreCalculator().getMinValue()) == 0) { |
|
|
|
//*((max-min)/ (Math.PI/2))+min
|
|
|
|
//Math.atan(new Double(vo.getSampleValue().toString()))*
|
|
|
|
normalizeValue = new BigDecimal(Math.atan(new Double(getFinalSampleValue(vo.getSampleValue(), threshold).toString()))) |
|
|
|
.multiply( |
|
|
|
(maxScoreValue.subtract(minScoreValue).divide(new BigDecimal(Math.PI / 2), 10, RoundingMode.HALF_UP))) |
|
|
|
.add(minScoreValue).setScale(6, RoundingMode.HALF_UP); |
|
|
|
//
|
|
|
|
if (scoreCalculator.getCorrelation().getCode().equals(Correlation.NEGATIVE)) { |
|
|
|
normalizeValue = maxScoreValue.subtract(normalizeValue); |
|
|
|
} |
|
|
|
}else { |
|
|
|
//如果不需要归一 则 直接value*权重
|
|
|
|
if (idx.isScore()) { |
|
|
|
vo.setSampleValue(new BigDecimal(vo.getSampleValue().toString()).compareTo(NumConstant.ZERO_DECIMAL) == NumConstant.ZERO ? ScoreConstants.MIN_SCORE : new BigDecimal(vo.getSampleValue().toString())); |
|
|
|
normalizeValue = getFinalSampleValue(vo.getSampleValue(), threshold); |
|
|
|
|
|
|
|
//1.如果是分数值(平均值)不需要归一 则 直接value*权重
|
|
|
|
//2.否则 先判断 样本值是否相等 是:反正切函数 否:归一算法
|
|
|
|
if (idx.isScore()) { |
|
|
|
vo.setSampleValue(new BigDecimal(vo.getSampleValue().toString()).compareTo(NumConstant.ZERO_DECIMAL) == NumConstant.ZERO ? ScoreConstants.MIN_SCORE : new BigDecimal(vo.getSampleValue().toString())); |
|
|
|
normalizeValue = getFinalSampleValue(vo.getSampleValue(), threshold); |
|
|
|
} else { |
|
|
|
if (idx.getScoreCalculator().getMaxValue().compareTo(idx.getScoreCalculator().getMinValue()) == 0) { |
|
|
|
//*((max-min)/ (Math.PI/2))+min
|
|
|
|
//Math.atan(new Double(vo.getSampleValue().toString()))*
|
|
|
|
normalizeValue = new BigDecimal(Math.atan(new Double(getFinalSampleValue(vo.getSampleValue(), threshold).toString()))) |
|
|
|
.multiply( |
|
|
|
(maxScoreValue.subtract(minScoreValue).divide(new BigDecimal(Math.PI / 2), 10, RoundingMode.HALF_UP))) |
|
|
|
.add(minScoreValue).setScale(6, RoundingMode.HALF_UP); |
|
|
|
//
|
|
|
|
if (scoreCalculator.getCorrelation().getCode().equals(Correlation.NEGATIVE)) { |
|
|
|
normalizeValue = maxScoreValue.subtract(normalizeValue); |
|
|
|
} |
|
|
|
} else { |
|
|
|
normalizeValue = scoreCalculator.normalize(getFinalSampleValue(vo.getSampleValue(), threshold)); |
|
|
|
} |
|
|
|