Browse Source

计算体质规则

zhoutg 6 years ago
parent
commit
6ac7d97937
1 changed files with 108 additions and 76 deletions
  1. 108 76
      prec-service/src/main/java/com/diagbot/facade/EvaluatorFacade.java

+ 108 - 76
prec-service/src/main/java/com/diagbot/facade/EvaluatorFacade.java

@@ -65,70 +65,36 @@ public class EvaluatorFacade extends EvaluatorServiceImpl {
         List<PhysicalVal> list = this.valueSort(evaluator);
         Double max = list.get(0).getValue();
         Double min = list.get(4).getValue();
-        /**
-         * 判断平和质:
-         * 平和质转化分≥60分,同时其他5种体质转化分均<30分,判断结果:“平和质”。
-         * 平和质转化分≥60分,同时其他5种体质转化分均<50分,判断结果:“基本是平和质”。
-         * 平和质转化分≥60分,同时其他5种体质转化分有30-49分,判断结果:“基本是平和质兼倾向XX体质”。
-         * 不满足上述条件,判断结果:否。
-         */
-        // 平和质转化分≥60分
-        if (evaluator.getMildValue().doubleValue() >= 60.0) {
-            if (max < 30) {
-                // 同时其他5种体质转化分均<30分, max[2/3/4/5/6] < 30
-                evaluator.setPhysicalRes("平和体质");
-                evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()));
-            } else if (max < 50 && min >= 30) {
-                // 同时其他5种体质转化分均<50分,min[2/3/4/5/6] >= 30 and max[2/3/4/5/6] < 50
-                evaluator.setPhysicalRes("基本是平和体质");
-                evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()));
-            } else if (max < 50 && max >= 30 && min < 30) {
-                // 同时其他5种体质转化分有30-49分,max[2/3/4/5/6] < 50 and max[2/3/4/5/6] >= 30 and min[2/3/4/5/6] < 30
-                evaluator.setPhysicalRes("基本是平和体质兼倾向" + PhysicalTypeEnum.getName(list.get(0).getEnumNo()));
-                evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()) + "," + list.get(0).getEnumNo());
-            } else if (max >= 50) {
-                // 同时其他5种体质转化分有>=50分, max[2/3/4/5/6] >= 50
-                String msg = "";
-                String type = "";
-                if (evaluator.getMildValue().doubleValue() > max) {
-                    msg = "是平和体质";
-                    type = String.valueOf(PhysicalTypeEnum.mild.getKey());
-                } else if (evaluator.getMildValue().doubleValue() == max) {
-                    msg = "是平和体质兼有" + PhysicalTypeEnum.getName(list.get(0).getEnumNo());
-                    type = String.valueOf(PhysicalTypeEnum.mild.getKey()) + "," + list.get(0).getEnumNo();
-                } else {
-                    if ((list.get(0).getValue() == list.get(1).getValue()) || (list.get(1).getValue() > 50)) {
-                        msg = "是" + PhysicalTypeEnum.getName(list.get(0).getEnumNo()) + "兼有" + PhysicalTypeEnum.getName(list.get(1).getEnumNo());
-                        type = list.get(0).getEnumNo() + "," + list.get(1).getEnumNo();
-                    } else {
-                        msg = "是" + PhysicalTypeEnum.getName(list.get(0).getEnumNo());
-                        type = "" + list.get(0).getEnumNo();
-                    }
-                }
-                evaluator.setPhysicalRes(msg);
-                evaluator.setPhysicalTypes(type);
-            }
-        }
 
-        /**
-         * 判断偏颇体质:
-         * 转化分≥50分,判断结果:是XX体质。
-         * 转化分30-49分,判断结果:倾向XX体质。
-         * 转化分<30分,判断结果:否。
-         * 结论:按照偏颇体质得分高低顺序排序,得分最高的为主要偏颇体质,结论按此体质显示,并在结果中按分值顺序提选兼有体质。
-         * 首先判定5种偏颇体质得分是否均大于或等于≧50分。
-         * 有一个或多个大于等于50分的情况,按照偏颇体质选择分值最大的为偏颇体质,排名第二的为兼有体质,其余的不考虑;如果得分排名第一的有两个或以上,则按照自然顺序将第一个列为主要偏颇体质,第二个列为兼有体质,其余的不予考虑。
-         * 如出现得分一样的两种偏颇体质,则按照5种偏颇体质的排列顺序为:气虚质、积滞质、湿滞质、心火偏旺质、异禀质,
-         * 5种全部小于<30分的情况,按照平和质判定条件执行。
-         * 平和质转化分<60分,同时其他6种体质转化分30-49分,判断结果:倾向是XX体质。如果有两种或以上的得分一样,则按照6种偏颇体质的排列顺序为:气虚质、积滞质、湿滞质、心肝火旺质、异禀质,判断结果:“倾向是XX体质兼XX体质”,其余不考虑。如果等分倾向是体质有3个或以上,则仅选择分值最高的前两个,判断结果:“倾向是XX体质兼XX体质”,其余不考虑。
-         * 注意:有偏颇体质的不再考虑倾向体质。
-         */
-        else if (evaluator.getMildValue().doubleValue() < 60.0) {
-            if (max < 30) { // max[2/3/4/5/6] < 30
-                evaluator.setPhysicalRes("平和体质");
-                evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()));
-            } else if (max < 50 && max >= 30) { // min[2/3/4/5/6] >= 30 and max[2/3/4/5/6] < 50
-                // 最大值有多个【倾向XX体质兼有XX体质】, 最大值只有1个【倾向XX体质】
+        if (max >= 50) {
+            // 最大值有多个【是XX体质兼有XX体质】,最大值只有1个【是XX体质】
+            if ((list.get(0).getValue() == list.get(1).getValue()) || (list.get(1).getValue() > 50)) {
+                evaluator.setPhysicalRes("是" +
+                        PhysicalTypeEnum.getName(list.get(0).getEnumNo())
+                        + "兼有" +
+                        PhysicalTypeEnum.getName(list.get(1).getEnumNo()));
+                evaluator.setPhysicalTypes("" + list.get(0).getEnumNo() + "," + list.get(1).getEnumNo());
+            } else {
+                evaluator.setPhysicalRes("是" +
+                        PhysicalTypeEnum.getName(list.get(0).getEnumNo()));
+                evaluator.setPhysicalTypes("" + list.get(0).getEnumNo());
+            }
+        } else if (max < 30) {
+            // 同时其他5种体质转化分均<30分, max[2/3/4/5/6] < 30
+            evaluator.setPhysicalRes("平和体质");
+            evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()));
+        } else {
+            if (evaluator.getMildValue().doubleValue() >= 60.0) {
+                if (max < 50 && min >= 30) {
+                    // 同时其他5种体质转化分均<50分,min[2/3/4/5/6] >= 30 and max[2/3/4/5/6] < 50
+                    evaluator.setPhysicalRes("基本是平和体质");
+                    evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()));
+                } else if (max < 50 && max >= 30 && min < 30) {
+                    // 同时其他5种体质转化分有30-49分,max[2/3/4/5/6] < 50 and max[2/3/4/5/6] >= 30 and min[2/3/4/5/6] < 30
+                    evaluator.setPhysicalRes("基本是平和体质兼倾向" + PhysicalTypeEnum.getName(list.get(0).getEnumNo()));
+                    evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()) + "," + list.get(0).getEnumNo());
+                }
+            } else {
                 if (list.get(0).getValue() == list.get(1).getValue()) {
                     evaluator.setPhysicalRes(
                             "倾向是" +
@@ -141,21 +107,87 @@ public class EvaluatorFacade extends EvaluatorServiceImpl {
                             PhysicalTypeEnum.getName(list.get(0).getEnumNo()));
                     evaluator.setPhysicalTypes("" + list.get(0).getEnumNo());
                 }
-            } else if (max >= 50) { // max[2/3/4/5/6] >= 50
-                // 最大值有多个【是XX体质兼有XX体质】,最大值只有1个【是XX体质】
-                if ((list.get(0).getValue() == list.get(1).getValue()) || (list.get(1).getValue() > 50)) {
-                    evaluator.setPhysicalRes("是" +
-                            PhysicalTypeEnum.getName(list.get(0).getEnumNo())
-                            + "兼有" +
-                            PhysicalTypeEnum.getName(list.get(1).getEnumNo()));
-                    evaluator.setPhysicalTypes("" + list.get(0).getEnumNo() + "," + list.get(1).getEnumNo());
-                } else {
-                    evaluator.setPhysicalRes("是" +
-                            PhysicalTypeEnum.getName(list.get(0).getEnumNo()));
-                    evaluator.setPhysicalTypes("" + list.get(0).getEnumNo());
-                }
             }
         }
+//        /**
+//         * 判断平和质:
+//         * 平和质转化分≥60分,同时其他5种体质转化分均<30分,判断结果:“平和质”。
+//         * 平和质转化分≥60分,同时其他5种体质转化分均<50分,判断结果:“基本是平和质”。
+//         * 平和质转化分≥60分,同时其他5种体质转化分有30-49分,判断结果:“基本是平和质兼倾向XX体质”。
+//         * 不满足上述条件,判断结果:否。
+//         */
+//        // 平和质转化分≥60分
+//        if (evaluator.getMildValue().doubleValue() >= 60.0) {
+//            if (max < 30) {
+//                // 同时其他5种体质转化分均<30分, max[2/3/4/5/6] < 30
+//                evaluator.setPhysicalRes("平和体质");
+//                evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()));
+//            } else if (max < 50 && min >= 30) {
+//                // 同时其他5种体质转化分均<50分,min[2/3/4/5/6] >= 30 and max[2/3/4/5/6] < 50
+//                evaluator.setPhysicalRes("基本是平和体质");
+//                evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()));
+//            } else if (max < 50 && max >= 30 && min < 30) {
+//                // 同时其他5种体质转化分有30-49分,max[2/3/4/5/6] < 50 and max[2/3/4/5/6] >= 30 and min[2/3/4/5/6] < 30
+//                evaluator.setPhysicalRes("基本是平和体质兼倾向" + PhysicalTypeEnum.getName(list.get(0).getEnumNo()));
+//                evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()) + "," + list.get(0).getEnumNo());
+//            } else if (max >= 50) {
+//                // 同时其他5种体质转化分有>=50分, max[2/3/4/5/6] >= 50
+//                if ((list.get(0).getValue() == list.get(1).getValue()) || (list.get(1).getValue() > 50)) {
+//                    evaluator.setPhysicalRes("是" + PhysicalTypeEnum.getName(list.get(0).getEnumNo()) + "兼有" + PhysicalTypeEnum.getName(list.get(1).getEnumNo()));
+//                    evaluator.setPhysicalTypes(list.get(0).getEnumNo() + "," + list.get(1).getEnumNo());
+//                } else {
+//                    evaluator.setPhysicalRes("是" + PhysicalTypeEnum.getName(list.get(0).getEnumNo()));
+//                    evaluator.setPhysicalTypes("" + list.get(0).getEnumNo());
+//                }
+//            }
+//        }
+//
+//        /**
+//         * 判断偏颇体质:
+//         * 转化分≥50分,判断结果:是XX体质。
+//         * 转化分30-49分,判断结果:倾向XX体质。
+//         * 转化分<30分,判断结果:否。
+//         * 结论:按照偏颇体质得分高低顺序排序,得分最高的为主要偏颇体质,结论按此体质显示,并在结果中按分值顺序提选兼有体质。
+//         * 首先判定5种偏颇体质得分是否均大于或等于≧50分。
+//         * 有一个或多个大于等于50分的情况,按照偏颇体质选择分值最大的为偏颇体质,排名第二的为兼有体质,其余的不考虑;如果得分排名第一的有两个或以上,则按照自然顺序将第一个列为主要偏颇体质,第二个列为兼有体质,其余的不予考虑。
+//         * 如出现得分一样的两种偏颇体质,则按照5种偏颇体质的排列顺序为:气虚质、积滞质、湿滞质、心火偏旺质、异禀质,
+//         * 5种全部小于<30分的情况,按照平和质判定条件执行。
+//         * 平和质转化分<60分,同时其他6种体质转化分30-49分,判断结果:倾向是XX体质。如果有两种或以上的得分一样,则按照6种偏颇体质的排列顺序为:气虚质、积滞质、湿滞质、心肝火旺质、异禀质,判断结果:“倾向是XX体质兼XX体质”,其余不考虑。如果等分倾向是体质有3个或以上,则仅选择分值最高的前两个,判断结果:“倾向是XX体质兼XX体质”,其余不考虑。
+//         * 注意:有偏颇体质的不再考虑倾向体质。
+//         */
+//        else if (evaluator.getMildValue().doubleValue() < 60.0) {
+//            if (max < 30) { // max[2/3/4/5/6] < 30
+//                evaluator.setPhysicalRes("平和体质");
+//                evaluator.setPhysicalTypes(String.valueOf(PhysicalTypeEnum.mild.getKey()));
+//            } else if (max < 50 && max >= 30) { // min[2/3/4/5/6] >= 30 and max[2/3/4/5/6] < 50
+//                // 最大值有多个【倾向XX体质兼有XX体质】, 最大值只有1个【倾向XX体质】
+//                if (list.get(0).getValue() == list.get(1).getValue()) {
+//                    evaluator.setPhysicalRes(
+//                            "倾向是" +
+//                                    PhysicalTypeEnum.getName(list.get(0).getEnumNo())
+//                                    + "兼有" +
+//                                    PhysicalTypeEnum.getName(list.get(1).getEnumNo()));
+//                    evaluator.setPhysicalTypes("" + list.get(0).getEnumNo() + "," + list.get(1).getEnumNo());
+//                } else {
+//                    evaluator.setPhysicalRes("倾向是" +
+//                            PhysicalTypeEnum.getName(list.get(0).getEnumNo()));
+//                    evaluator.setPhysicalTypes("" + list.get(0).getEnumNo());
+//                }
+//            } else if (max >= 50) { // max[2/3/4/5/6] >= 50
+//                // 最大值有多个【是XX体质兼有XX体质】,最大值只有1个【是XX体质】
+//                if ((list.get(0).getValue() == list.get(1).getValue()) || (list.get(1).getValue() > 50)) {
+//                    evaluator.setPhysicalRes("是" +
+//                            PhysicalTypeEnum.getName(list.get(0).getEnumNo())
+//                            + "兼有" +
+//                            PhysicalTypeEnum.getName(list.get(1).getEnumNo()));
+//                    evaluator.setPhysicalTypes("" + list.get(0).getEnumNo() + "," + list.get(1).getEnumNo());
+//                } else {
+//                    evaluator.setPhysicalRes("是" +
+//                            PhysicalTypeEnum.getName(list.get(0).getEnumNo()));
+//                    evaluator.setPhysicalTypes("" + list.get(0).getEnumNo());
+//                }
+//            }
+//        }
         return evaluator;
     }