|
@@ -124,8 +124,56 @@ public class AlgorithmFacade {
|
|
//计算
|
|
//计算
|
|
private BigDecimal cal(AlgorithmVO algorithmVO) {
|
|
private BigDecimal cal(AlgorithmVO algorithmVO) {
|
|
BigDecimal res = new BigDecimal(100);
|
|
BigDecimal res = new BigDecimal(100);
|
|
- Map<Long, BigDecimal> caseMap = new HashMap<>();
|
|
|
|
|
|
+ //模块总分
|
|
|
|
+ Map<Long, BigDecimal> casesMap = new HashMap<>();
|
|
|
|
+ //单票否决计分
|
|
|
|
+ BigDecimal rejectScore = BigDecimal.ZERO;
|
|
|
|
+ //模块计分
|
|
|
|
+ Map<Long, BigDecimal> casesScoreMap = new HashMap<>();
|
|
|
|
|
|
|
|
+ List<QcResultAlgVO> qcResultAlgVOList = algorithmVO.getQcResultAlgVOList();
|
|
|
|
+ if (ListUtil.isNotEmpty(qcResultAlgVOList)) {
|
|
|
|
+ for (QcResultAlgVO qcResultAlgVO : qcResultAlgVOList) {
|
|
|
|
+ if (null == casesMap.get(qcResultAlgVO.getCasesId())) {
|
|
|
|
+ casesMap.put(qcResultAlgVO.getCasesId(), qcResultAlgVO.getCasesScore());
|
|
|
|
+ }
|
|
|
|
+ if (null == casesScoreMap.get(qcResultAlgVO.getCasesId())) {
|
|
|
|
+ casesScoreMap.put(qcResultAlgVO.getCasesId(), BigDecimal.ZERO);
|
|
|
|
+ }
|
|
|
|
+ //单票否决计分
|
|
|
|
+ if (qcResultAlgVO.getIsReject().equals(1)) {
|
|
|
|
+ rejectScore.add(qcResultAlgVO.getScore());
|
|
|
|
+ } else {
|
|
|
|
+ //非单票否决计分
|
|
|
|
+ if (null != casesScoreMap.get(qcResultAlgVO.getCasesId())) {
|
|
|
|
+ BigDecimal casesScore = casesScoreMap.get(qcResultAlgVO.getCasesId());
|
|
|
|
+ casesScore.add(qcResultAlgVO.getScore());
|
|
|
|
+ casesScoreMap.put(qcResultAlgVO.getCasesId(), casesScore);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //结果先减去单票否决计分
|
|
|
|
+ res = res.subtract(rejectScore);
|
|
|
|
+ //结果小于0按0计算
|
|
|
|
+ if (BigDecimalUtil.compareTo(res, BigDecimal.ZERO) == 1) {
|
|
|
|
+ return BigDecimal.ZERO;
|
|
|
|
+ } else {
|
|
|
|
+ //模块计分
|
|
|
|
+ for (Map.Entry<Long, BigDecimal> casesScore : casesScoreMap.entrySet()) {
|
|
|
|
+ BigDecimal allSccore = casesMap.get(casesScore.getKey());
|
|
|
|
+ if (BigDecimalUtil.compareTo(allSccore, casesScore.getValue()) == 5) {
|
|
|
|
+ res.subtract(allSccore);
|
|
|
|
+ } else {
|
|
|
|
+ res.subtract(casesScore.getValue());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //结果小于0按0计算
|
|
|
|
+ if (BigDecimalUtil.compareTo(res, BigDecimal.ZERO) == 1) {
|
|
|
|
+ res = BigDecimal.ZERO;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return res;
|
|
return res;
|
|
}
|
|
}
|
|
}
|
|
}
|