Browse Source

增加量表里根据具体项目计算得分返回相应结果的接口

hujing 6 years ago
parent
commit
7ba7888a5e

+ 59 - 0
graph-web/src/main/java/org/diagbot/graphWeb/work/ScaleCalculate.java

@@ -0,0 +1,59 @@
+package org.diagbot.graphWeb.work;
+
+import org.diagbot.graph.jdbc.DriverManager;
+import org.diagbot.graph.jdbc.Neo4jAPI;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 量表得分计算结果
+ * @Author: HUJING
+ * @Date: 2019/4/9 14:33
+ */
+public class ScaleCalculate {
+    public String scaleScoreCalc(String[] scaleItems,String scaleName){
+        Neo4jAPI neo4jAPI = null;
+        try {
+            neo4jAPI = new Neo4jAPI(DriverManager.newDrive("192.168.2.233","neo4j","root"));
+        } catch (Exception e) {
+            System.out.println("Neo4j连接出错!");
+            e.printStackTrace();
+        }
+        int sum = 0;
+        String final_result = null;
+        Map<String, Object> scaleCalc = neo4jAPI.getScaleCalc(scaleName);
+        for (String scaleItem:scaleItems) {
+            Object details = scaleCalc.get("details");
+            //获取name
+            List<Map<String, Object>> content = (List<Map<String, Object>>) details;
+            for (Map<String, Object> map : content) {
+                String name = map.get("name").toString();
+                if (scaleItem.contains(name) || name.contains(scaleItem)) {
+                    List<Map<String, Object>> sub_detail = (List<Map<String, Object>>) map.get("details");
+                    for (Map<String, Object> sub_map : sub_detail) {
+                        String detailName = sub_map.get("detailName").toString();
+                        String score = sub_map.get("score").toString();
+                        if(scaleItem.contains(detailName)){
+                            sum += Double.valueOf(score);
+                        }
+                    }
+                } else {
+                    continue;
+                }
+            }
+        }
+        System.out.println(sum);
+        List<Map<String, String>> result = (List<Map<String, String>>) scaleCalc.get("result");
+        for (Map<String, String> result_map:result) {
+            Integer min = Integer.valueOf(result_map.get("min"));
+            Integer max = Integer.valueOf(result_map.get("max"));
+            String text = result_map.get("text");
+            if (sum >= min && sum <= max){
+                final_result = text;
+                break;
+            }
+        }
+        return final_result;
+    }
+}

+ 1 - 1
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java

@@ -1797,7 +1797,7 @@ public class Neo4jAPI {
             for (TreeMap<String, Object> map:finalResult) {
                 map.remove("priority");
             }
-            threeLevelItems.put("detials", finalResult);
+            threeLevelItems.put("details", finalResult);
         } catch (Exception ex) {
             ex.printStackTrace();
             System.out.println("返回带得分需要计算的量表时出了问题!---->getScaleCalc");

+ 12 - 0
push-web/src/main/java/org/diagbot/push/controller/GraphController.java

@@ -7,6 +7,7 @@ import org.diagbot.graph.jdbc.DriverManager;
 import org.diagbot.graph.jdbc.Neo4jAPI;
 import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.HighRiskCalculate;
+import org.diagbot.graphWeb.work.ScaleCalculate;
 import org.diagbot.pub.api.Response;
 import org.diagbot.pub.web.BaseController;
 import org.springframework.stereotype.Controller;
@@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Map;
+import java.util.Set;
 
 @Controller
 @RequestMapping("/graph")
@@ -85,4 +87,14 @@ public class GraphController extends BaseController {
         Map<String, Object> scale = neo4jAPI.getScale(scaleName);
         return scale;
     }
+
+    @RequestMapping(value = "/scaleCalc", method = RequestMethod.POST)
+    @ResponseBody
+    public String scaleCalc(HttpServletRequest request, @RequestBody SearchData searchData) throws Exception {
+        ScaleCalculate scaleCalculate = new ScaleCalculate();
+        Set<String> inputs = searchData.getInputs().keySet();
+        String[] input = inputs.toArray(new String[inputs.size()]);
+        String result = scaleCalculate.scaleScoreCalc(input, searchData.getScaleName());
+        return result;
+    }
 }