Explorar o código

修复量表计算bug

hujing %!s(int64=6) %!d(string=hai) anos
pai
achega
1009606b6d

+ 62 - 17
graph-web/src/main/java/org/diagbot/graphWeb/work/ScaleCalculate.java

@@ -2,8 +2,6 @@ package org.diagbot.graphWeb.work;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import org.diagbot.graph.jdbc.DriverManager;
-import org.diagbot.graph.jdbc.Neo4jAPI;
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
@@ -35,20 +33,67 @@ public class ScaleCalculate {
                 for (Map<String, Object> rows : rowsList) {
                     List<Map<String, Object>> rowList = (List<Map<String, Object>>) rows.get("row");
                     //多条选第一条
-                    Map<String, Object> firstRow = rowList.get(0);
-                    int coefficient = Integer.valueOf(firstRow.get("coefficient").toString());
-                    int constant = Integer.valueOf(firstRow.get("constant").toString());
-                    List<Map<String, Object>> detailsList = (List<Map<String, Object>>) firstRow.get("details");
-                    for (Map<String, Object> details : detailsList) {
-                        if (Integer.valueOf(details.get("select").toString()) == 1) {
-                            Double score = Double.valueOf(details.get("score").toString());
-                            //分值*系数+常数
-                            score = score * coefficient + constant;
-                            groupSum += score;
-                            sum += score;
+                    Map<String, Object> firstRow = null;
+                    if (rowList.size() > 1) {
+                        int i = 0;
+                        JSONArray selectList = new JSONArray();
+                        for (Map<String, Object> row : rowList) {
+                            List<Map<String, Object>> detailsList = (List<Map<String, Object>>) row.get("details");
+                            for (Map<String, Object> details : detailsList) {
+                                if (Integer.valueOf(details.get("select").toString()) == 1) {
+                                    i += 1;
+                                    if (!selectList.contains(row)) {
+                                        selectList.add(row);
+                                    }
+                                }
+                            }
+                        }
+                        if (i > 1) {
+                            firstRow = (Map<String, Object>) selectList.get(0);
+                            int coefficient = Integer.valueOf(firstRow.get("coefficient").toString());
+                            int constant = Integer.valueOf(firstRow.get("constant").toString());
+                            List<Map<String, Object>> detailsList = (List<Map<String, Object>>) firstRow.get("details");
+                            for (Map<String, Object> details : detailsList) {
+                                if (details.get("select") != null && Integer.valueOf(details.get("select").toString()) == 1) {
+                                    Double score = Double.valueOf(details.get("score").toString());
+                                    //分值*系数+常数
+                                    score = score * coefficient + constant;
+                                    groupSum += score;
+                                    sum += score;
+                                }
+                            }
+                        } else {
+                            for (Map<String, Object> row : rowList) {
+                                int coefficient = Integer.valueOf(row.get("coefficient").toString());
+                                int constant = Integer.valueOf(row.get("constant").toString());
+                                List<Map<String, Object>> detailsList = (List<Map<String, Object>>) row.get("details");
+                                for (Map<String, Object> details : detailsList) {
+                                    if (details.get("select") != null && Integer.valueOf(details.get("select").toString()) == 1) {
+                                        Double score = Double.valueOf(details.get("score").toString());
+                                        //分值*系数+常数
+                                        score = score * coefficient + constant;
+                                        groupSum += score;
+                                        sum += score;
+                                    }
+                                }
+                            }
+                        }
+                    } else {
+                        firstRow = rowList.get(0);
+                        int coefficient = Integer.valueOf(firstRow.get("coefficient").toString());
+                        int constant = Integer.valueOf(firstRow.get("constant").toString());
+                        List<Map<String, Object>> detailsList = (List<Map<String, Object>>) firstRow.get("details");
+                        for (Map<String, Object> details : detailsList) {
+                            if (details.get("select") != null && Integer.valueOf(details.get("select").toString()) == 1) {
+                                Double score = Double.valueOf(details.get("score").toString());
+                                //分值*系数+常数
+                                score = score * coefficient + constant;
+                                groupSum += score;
+                                sum += score;
+                            }
                         }
-                    }
 
+                    }
                 }
                 //            String text = scaleResultText(groupSum);
                 JSONObject groupCalculate = new JSONObject();
@@ -86,8 +131,8 @@ public class ScaleCalculate {
             result.put("value", sum);
             calcalculate.put("result", result);
             scaleCalcResult.put("calcalculate", calcalculate);
-        }else {
-            scaleCalcResult.put("errMsg","量表类型错误。");
+        } else {
+            scaleCalcResult.put("errMsg", "量表类型错误。");
         }
         return scaleCalcResult;
     }
@@ -155,7 +200,7 @@ public class ScaleCalculate {
                                     }
                                 } else if ("女".equals(genderDetail.get("detailName"))) {
                                     k = 0.7f;
-                                    denger = Double.valueOf(genderDetail.get("value").toString()) ;
+                                    denger = Double.valueOf(genderDetail.get("value").toString());
                                     if (scr <= 0.70) {
                                         a = -0.329;
                                     } else {