From 0218761a1c81ae6872fdb996b6eb8a41ecef165d Mon Sep 17 00:00:00 2001
From: xueqingkun <xueqingkun@126.com>
Date: Fri, 8 Dec 2023 14:02:18 +0800
Subject: [PATCH] =?UTF-8?q?web=20=EF=BC=9A=E9=97=AE=E8=AF=8A=E5=88=97?=
 =?UTF-8?q?=E8=A1=A8=E6=B7=BB=E5=8A=A0=E5=88=9D=E6=AD=A5=E8=AF=8A=E6=96=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../mapper/DiagnosisPrimaryMapper.java        |  2 ++
 .../java/com/supervision/model/Process.java   |  2 ++
 .../service/DiagnosisPrimaryService.java      |  2 ++
 .../impl/DiagnosisPrimaryServiceImpl.java     |  6 ++++
 .../vo/result/DiagnoseProcessReqVo.java       |  3 ++
 .../vo/result/DiagnoseProcessResVo.java       |  5 +++
 .../mapper/DiagnosisPrimaryMapper.xml         | 14 ++++++++
 .../main/resources/mapper/ProcessMapper.xml   |  8 ++++-
 .../service/impl/DiagnoseHallServiceImpl.java | 33 ++++++++++++++++++-
 9 files changed, 73 insertions(+), 2 deletions(-)

diff --git a/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryMapper.java b/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryMapper.java
index a8e16c5b..cebd1432 100644
--- a/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryMapper.java
+++ b/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryMapper.java
@@ -18,6 +18,8 @@ public interface DiagnosisPrimaryMapper extends BaseMapper<DiagnosisPrimary> {
 
     List<DiagnosisPrimaryVO> queryAskPrimaryList(@Param("processId") String processId);
 
+    List<DiagnosisPrimaryVO> queryAskPrimaryListByProcessIds(@Param("processIds") List<String> processIds);
+
     List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(@Param("processId") String processId);
 
 }
diff --git a/virtual-patient-model/src/main/java/com/supervision/model/Process.java b/virtual-patient-model/src/main/java/com/supervision/model/Process.java
index cfa899b9..394813f6 100644
--- a/virtual-patient-model/src/main/java/com/supervision/model/Process.java
+++ b/virtual-patient-model/src/main/java/com/supervision/model/Process.java
@@ -1,5 +1,6 @@
 package com.supervision.model;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -74,6 +75,7 @@ public class Process implements Serializable {
     /**
      * 更新时间
      */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
     private LocalDateTime updateTime;
 
     @TableField(exist = false)
diff --git a/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryService.java b/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryService.java
index 6b06d793..e7980e89 100644
--- a/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryService.java
+++ b/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryService.java
@@ -16,6 +16,8 @@ public interface DiagnosisPrimaryService extends IService<DiagnosisPrimary> {
 
     List<DiagnosisPrimaryVO> queryAskPrimaryList(String processId);
 
+    List<DiagnosisPrimaryVO> queryAskPrimaryListByProcessIds(List<String> processIds);
+
     List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(String processId);
 
 }
diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryServiceImpl.java
index 7fe80bbe..bfcf360f 100644
--- a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryServiceImpl.java
+++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryServiceImpl.java
@@ -24,6 +24,12 @@ public class DiagnosisPrimaryServiceImpl extends ServiceImpl<DiagnosisPrimaryMap
         return this.baseMapper.queryAskPrimaryList(processId);
     }
 
+    @Override
+    public List<DiagnosisPrimaryVO> queryAskPrimaryListByProcessIds(List<String> processIds) {
+
+        return super.baseMapper.queryAskPrimaryListByProcessIds(processIds);
+    }
+
     @Override
     public List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(String processId) {
         return this.baseMapper.queryDiagnosticBasisListForPrimary(processId);
diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessReqVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessReqVo.java
index 7ab921de..f15dcce9 100644
--- a/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessReqVo.java
+++ b/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessReqVo.java
@@ -8,4 +8,7 @@ public class DiagnoseProcessReqVo {
 
     @ApiModelProperty("用户id")
     private String userId;
+
+    @ApiModelProperty("主诉")
+    private String patientSelfDesc;
 }
diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessResVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessResVo.java
index 1c55a92e..4a7e51c3 100644
--- a/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessResVo.java
+++ b/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessResVo.java
@@ -21,9 +21,14 @@ public class DiagnoseProcessResVo {
     @ApiModelProperty("最近问诊时间")
     private LocalDateTime recentTime;
 
+
+    @ApiModelProperty("病例编号")
+    private String medicalRecId;
+
     @ApiModelProperty("主诉")
     private String patientSelfDesc;
 
+
     @ApiModelProperty("病人id")
     private String patientId;
 
diff --git a/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml b/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml
index a8c48338..e9ffb324 100644
--- a/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml
+++ b/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml
@@ -76,4 +76,18 @@
                  left join vp_disease_ancillary t3 on t1.ancillary_id = t3.id
         where t1.process_id = #{processId}
     </select>
+
+    <select id="queryAskPrimaryListByProcessIds" resultType="com.supervision.vo.ask.DiagnosisPrimaryVO">
+        select t1.*, if(t2.disease_name_alias is null, t2.disease_name, t2.disease_name_alias) as primaryDiseaseName
+        from vp_diagnosis_primary t1
+        left join vp_disease t2 on t1.primary_diagnosis_id = t2.id
+        <where>
+            <if test="processIds != null and processIds.size() > 0">
+                t1.process_id in
+                <foreach item="processId" collection="processIds" open="(" separator="," close=")">
+                    #{processId}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>
diff --git a/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml b/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml
index b6712624..f03f8052 100644
--- a/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml
+++ b/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml
@@ -30,6 +30,7 @@
                pro.user_id                          as userId,
                pro.status                           as status,
                pro.update_time                      as recentTime,
+               mre.id                               as medicalRecId,
                mre.patient_self_desc                as patientSelfDesc,
                mre.patient_id                       as patientId,
                mre.patient_name                     as patientName,
@@ -39,7 +40,12 @@
         from vp_process pro
                  left join vp_medical_rec mre on pro.medical_rec_id = mre.id
                  left join vp_patient pat on mre.patient_id = pat.id
-        where pro.user_id = #{diagnoseProcess.userId} ORDER BY pro.update_time desc
+        where
+            pro.user_id = #{diagnoseProcess.userId}
+        <if test="diagnoseProcess.patientSelfDesc != null and diagnoseProcess.patientSelfDesc != ''">
+            AND mre.patient_self_desc like concat("%",#{diagnoseProcess.patientSelfDesc}, "%")
+        </if>
+        ORDER BY pro.update_time desc
     </sql>
 
     <select id="queryDiagnoseProcessPageList" resultType="com.supervision.vo.result.DiagnoseProcessResVo">
diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/DiagnoseHallServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/DiagnoseHallServiceImpl.java
index 9cb6ab5e..fb2b5418 100644
--- a/virtual-patient-web/src/main/java/com/supervision/service/impl/DiagnoseHallServiceImpl.java
+++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/DiagnoseHallServiceImpl.java
@@ -1,12 +1,17 @@
 package com.supervision.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Assert;
+import cn.hutool.core.lang.Opt;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.lock.annotation.Lock4j;
+import com.supervision.model.DiagnosisPrimary;
 import com.supervision.service.DiagnoseHallService;
+import com.supervision.service.DiagnosisPrimaryService;
 import com.supervision.service.MedicalRecService;
 import com.supervision.service.ProcessService;
+import com.supervision.vo.ask.DiagnosisPrimaryVO;
 import com.supervision.vo.manage.MedicalRecPageResVO;
 import com.supervision.vo.result.DiagnoseProcessReqVo;
 import com.supervision.vo.result.DiagnoseProcessResVo;
@@ -15,6 +20,11 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 
 @Service
 @RequiredArgsConstructor
@@ -27,6 +37,8 @@ public class DiagnoseHallServiceImpl implements DiagnoseHallService {
 
     private final MedicalRecService medicalRecService;
 
+    private final DiagnosisPrimaryService diagnosisPrimaryService;
+
     @Lock4j(name = "achieveDiagnoseResource")
     @Override
     public boolean achieveDiagnoseResource() {
@@ -39,7 +51,26 @@ public class DiagnoseHallServiceImpl implements DiagnoseHallService {
                                                                    DiagnoseProcessReqVo diagnoseProcessReqVo) {
         Assert.notEmpty(diagnoseProcessReqVo.getUserId(),"用户id不允许为空");
 
-        return processService.queryUserDiagnoseProcessPageList(new Page<>(pageNum,pageSize),diagnoseProcessReqVo);
+        // 1.查询诊断列表
+        Page<DiagnoseProcessResVo> diagnoseProcessResVoPage = processService.queryUserDiagnoseProcessPageList(new Page<>(pageNum, pageSize), diagnoseProcessReqVo);
+        if (diagnoseProcessResVoPage.getSize()==0){
+            return diagnoseProcessResVoPage;
+        }
+
+        List<DiagnoseProcessResVo> records = diagnoseProcessResVoPage.getRecords();
+
+        // 2.根据processIds查询诊断疾病名
+        List<String> processIds = records.stream().map(DiagnoseProcessResVo::getProcessId).distinct().collect(Collectors.toList());
+        List<DiagnosisPrimaryVO> diagnosisPrimaryVOS = diagnosisPrimaryService.queryAskPrimaryListByProcessIds(processIds);
+        Map<String, List<DiagnosisPrimaryVO>> diagnosisPrimaryVOsMap = diagnosisPrimaryVOS.stream().collect(Collectors.groupingBy(DiagnosisPrimary::getProcessId));
+
+        // 3.把疾病名填充到诊断列表中
+        diagnoseProcessResVoPage.getRecords().forEach(vo->{
+            List<DiagnosisPrimaryVO> list = diagnosisPrimaryVOsMap.getOrDefault(vo.getProcessId(),new ArrayList<>());
+            vo.setPrimaryDiseaseNameList(list.stream().map(DiagnosisPrimaryVO::getPrimaryDiseaseName).distinct().collect(Collectors.toList()));
+        });
+
+        return diagnoseProcessResVoPage;
     }
 
     @Override