Browse Source

评分算法

gaodm 5 years atrás
parent
commit
65a04638ef

+ 49 - 1
src/main/java/com/diagbot/facade/AlgorithmFacade.java

@@ -124,8 +124,56 @@ public class AlgorithmFacade {
     //计算
     private BigDecimal cal(AlgorithmVO algorithmVO) {
         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;
     }
 }

+ 0 - 9
src/main/java/com/diagbot/facade/BasHospitalInfoFaccade.java

@@ -1,9 +0,0 @@
-package com.diagbot.facade;
-
-/**
- * @Description:
- * @author: gaodm
- * @time: 2020/4/12 11:39
- */
-public class BasHospitalInfoFaccade {
-}