Browse Source

优化院内统计中的查看详情

xiaochan 4 years ago
parent
commit
502ee314c3

+ 39 - 28
src/main/java/thyyxxk/webserver/service/querydata/QueryDrugsAndProjectsService.java

@@ -86,42 +86,53 @@ public class QueryDrugsAndProjectsService {
         // 获取诊断的详细情况
         List<QueryDrugsAndProjects> zhenDuanList = new ArrayList<>();
 
-        // 因为在 sql 中的 in 最长只能是有 2100 个 所以我需要 拆分来查询
-        if (xiangMuList.size() > 2100) {
-            for (QueryDrugsAndProjects projects : xiangMuList) {
-                if (patientList.size() < 2000) {
-                    if (!patientList.contains(projects.getPatient())) {
-                        patientList.add(projects.getPatient());
-                    }
-                } else {
-                    zhenDuanList.addAll(dao.queryZhenDuan(patientList));
+        for (QueryDrugsAndProjects projects : xiangMuList) {
+            // 移除重复的住院号或者门诊号
+            if (!patientList.contains(projects.getPatient())) {
+                patientList.add(projects.getPatient());
+            }
+        }
+        // 判断 这个不能 大于 2100 不然会报错
+        if (patientList.size() > 2100) {
+            List<String> fenDuanChaXun = new ArrayList<>();
+            for (String s : patientList) {
+                fenDuanChaXun.add(s);
+                if (fenDuanChaXun.size() == 100) {
+                    zhenDuanList.addAll(dao.queryZhenDuan(fenDuanChaXun));
+                    // 清空 list 里面的值
                     patientList.clear();
                 }
             }
-        } else {
-            // 如果 没有大于 2100 就这样
-            for (QueryDrugsAndProjects projects : xiangMuList) {
-                // 移除重复的元素
-                if (!patientList.contains(projects.getPatient())) {
-                    patientList.add(projects.getPatient());
-                }
+            // 在这里还要判断 如果还有剩下的 那也要查询
+            if (fenDuanChaXun.size() > 0) {
+                zhenDuanList.addAll(dao.queryZhenDuan(fenDuanChaXun));
             }
+        } else {
             zhenDuanList.addAll(dao.queryZhenDuan(patientList));
         }
-
-
-        for (QueryDrugsAndProjects xiangMu : xiangMuList) {
-            StringBuilder pjZhenDuan = new StringBuilder();
-            for (QueryDrugsAndProjects zhenDuan : zhenDuanList) {
-                if (zhenDuan.getPatient().equals(xiangMu.getPatient()) && zhenDuan.getTimes().equals(xiangMu.getTimes())) {
-                    if (zhenDuan.getDisDiagNo() == 1) {
-                        xiangMu.setMainDiagnosis(zhenDuan.getDisDiagComment());
-                    } else {
-                        xiangMu.setDisDiagComment(pjZhenDuan.append(zhenDuan.getDisDiagComment()).append("----").toString());
-                    }
-                }
+        // 把诊断做成 map 给到项目拼接
+        Map<String, String> pjZhenDuanMap = new HashMap<>();
+        for (QueryDrugsAndProjects zhenDuan : zhenDuanList) {
+            // 主诊断
+            String zhuZhenDuan = zhenDuan.getPatient() + "_" + zhenDuan.getTimes() + "_1";
+            // 副诊断
+            String fuZhenDuan = zhenDuan.getPatient() + "_" + zhenDuan.getTimes() + "_2";
+            if (zhenDuan.getDisDiagNo() == 1) {
+                pjZhenDuanMap.put(zhuZhenDuan, zhenDuan.getDisDiagComment());
+            } else {
+                // 每一个 诊断之间使用 ---- 隔开
+                String pj = pjZhenDuanMap.get(fuZhenDuan);
+                pj = null == pj ? "" : pj + "----";
+                pjZhenDuanMap.put(fuZhenDuan, pj + zhenDuan.getDisDiagComment());
             }
         }
+        // 把项目中的 诊断一个个 拼接起来
+        for (QueryDrugsAndProjects xiangMu : xiangMuList) {
+            String zhuZhenDuan = xiangMu.getPatient() + "_" + xiangMu.getTimes() + "_1";
+            String fuZhenDuan = xiangMu.getPatient() + "_" + xiangMu.getTimes() + "_2";
+            xiangMu.setMainDiagnosis(pjZhenDuanMap.get(zhuZhenDuan));
+            xiangMu.setDisDiagComment(pjZhenDuanMap.get(fuZhenDuan));
+        }
         return ResultVoUtil.success(xiangMuList);
     }