Browse Source

代码优化

wanghn 5 months ago
parent
commit
eda356a54a

+ 26 - 7
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -36,6 +36,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -2098,19 +2099,34 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         IPage<BehospitalInfoDeptDTO> res = getPageByDept(behospitalPageVO);
         List<BehospitalInfoDeptDTO> records = res.getRecords();
         List<BehospitalInfoDeptDTO> resRecords = new ArrayList<>();
+
+        // 收集所有唯一的病历号
+        List<String> behospitalCodes = records.stream()
+                .map(BehospitalInfoDeptDTO::getBehospitalCode)
+                .collect(Collectors.toList());
+
+        //根据病历号查询最早的一条质控结果
+        List<QcresultInfo> qcresultInfos = qcresultInfoFacade.lambdaQuery()
+                .in(QcresultInfo::getBehospitalCode, behospitalCodes)
+                .orderByAsc(QcresultInfo::getGmtCreate)
+                .groupBy(QcresultInfo::getBehospitalCode)
+                .list();
+
+        // 创建一个映射以便快速查找
+        Map<String, QcresultInfo> qcresultInfoMap = qcresultInfos.stream()
+                .collect(Collectors.toMap(QcresultInfo::getBehospitalCode, Function.identity()));
+
+        // 根据映射过滤记录
         for (BehospitalInfoDeptDTO record : records) {
-            QcresultInfo qcresultInfo = qcresultInfoFacade.lambdaQuery()
-                    .like(QcresultInfo::getBehospitalCode, record.getBehospitalCode())
-                    .orderByAsc(QcresultInfo::getGmtCreate)
-                    .last("LIMIT 1")
-                    .one();
-            if(qcresultInfo != null && !qcresultInfo.getLevel().equals("甲")){
+            QcresultInfo qcresultInfo = qcresultInfoMap.get(record.getBehospitalCode());
+            if (qcresultInfo != null && !qcresultInfo.getLevel().equals("甲")) {
                 resRecords.add(record);
             }
         }
 
         IPage<BehospitalInfoDeptDTO> resultPage = new Page<>(res.getCurrent(), res.getSize(), res.getTotal());
-        resultPage.setRecords(resRecords); // 设置记录
+        // 设置记录
+        resultPage.setRecords(resRecords);
         resultPage.setTotal(resRecords.size());
         resultPage.setSize(resRecords.size());
         return resultPage;
@@ -2238,6 +2254,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         exportQcresultVO.setHospitalId(hospitalId);
         //时间设置
         exportQcresultVOSet(exportQcresultVO);
+        exportQcresultVO.setRadioCheck("1");
         List<ExportExcelDTO> res = this.exportQcresult(exportQcresultVO);
         //90天、1年都按含缺陷明细项处理
         String fileName = "抽查住院病历质量情况.xls";
@@ -2330,6 +2347,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         exportQcresultVO.setUserId(Long.valueOf(userId));
         //时间设置
         exportQcresultVOSet(exportQcresultVO);
+        exportQcresultVO.setRadioCheck("1");
         List<ExportExcelByDeptDTO> records = this.exportQcresultByDept(exportQcresultVO);
         List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
         if (ListUtil.isNotEmpty(records)) {
@@ -2370,6 +2388,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         exportQcresultVO.setUserId(Long.valueOf(userId));
         //时间设置
         exportQcresultVOSet(exportQcresultVO);
+        exportQcresultVO.setRadioCheck("1");
         List<ExportExcelDTO> res = this.exportQcresultByGroup(exportQcresultVO);
         //90天、1年都按含缺陷明细项处理
         String fileName = "抽查住院病历质量情况.xls";

+ 12 - 12
src/main/java/com/diagbot/facade/QcresultInfoFacade.java

@@ -22,6 +22,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Description:
@@ -635,27 +636,26 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
                 .orderByAsc(QcresultInfo::getGmtCreate)
                 .last("LIMIT 1")
                 .one();
-        //2.判断病历等级是否为甲级
-        if(qcresultInfo == null){
+        //2.判断病历等级是否为为空
+        if (qcresultInfo == null) {
             return new QcFirstAnalyzeDTO();
         }
+
         QcFirstAnalyzeDTO dto = new QcFirstAnalyzeDTO();
         dto.setLevel(qcresultInfo.getLevel());
         dto.setScoreRes(qcresultInfo.getScoreRes());
-        //3.查询第一次质控缺陷条目
-        List<QcresultDetail> list = qcresultDetailFacade.lambdaQuery()
+
+        // 3. 查询第一次质控缺陷条目
+        List<String> msgs = qcresultDetailFacade.lambdaQuery()
                 .eq(QcresultDetail::getBehospitalCode, qcresultInfo.getBehospitalCode())
-                .eq(QcresultDetail::getGmtCreate, qcresultInfo.getGmtCreate())
-                .list();
-        List<String> msgs = new ArrayList<>();
-        for (QcresultDetail qcresultDetail : list) {
-            String msg = qcresultDetail.getMsg();
-            msgs.add(msg);
-        }
+                .eq(QcresultDetail::getQcresultInfoId, qcresultInfo.getId())
+                .list()
+                .stream()
+                .map(QcresultDetail::getMsg)
+                .collect(Collectors.toList());
         dto.setMsg(msgs);
 
         return dto;
-
     }
 }
 

+ 5 - 5
src/main/resources/application-test.yml

@@ -1,5 +1,5 @@
 server:
-  port: 5859
+  port: 5858
   max-http-header-size: 10MB
 
 hystrix:
@@ -59,9 +59,9 @@ spring:
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
       platform: mysql
-      url: jdbc:mysql://192.168.2.126:3307/qc_qiyuan?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      url: jdbc:mysql://173.18.12.194:3306/qc_demo?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
-      password: Lat0ne@tesT
+      password: dsYun8!@#
       # 连接池的配置信息
       # 初始化大小,最小,最大
       initialSize: 5
@@ -111,9 +111,9 @@ spring:
     database:
       cache: 5 # cache索引
       token: 5 # Token索引
-    host: 192.168.2.126  #Redis服务器地址
+    host: 173.18.12.194  #Redis服务器地址
     port: 6379 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
-    password: lantone # Redis服务器连接密码(默认为空)
+    password:  # Redis服务器连接密码(默认为空)
     lettuce:
       pool:
         max-active: 8 # 连接池最大连接数(使用负值表示没有限制)