From 21d411b26cb87af628de399695a1bc006efb84d2 Mon Sep 17 00:00:00 2001
From: liu <liujiatong112@163.com>
Date: Thu, 14 Dec 2023 16:40:20 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AF=8A=E6=AF=95=E6=8E=A5?=
 =?UTF-8?q?=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/AskPrimaryController.java      | 20 +++++++++------
 .../pojo/vo/PrimaryConfirmReqVO.java          |  6 ++---
 .../service/AskPrimaryService.java            |  2 +-
 .../service/impl/AskPrimaryServiceImpl.java   | 25 ++++++++++++++++---
 4 files changed, 36 insertions(+), 17 deletions(-)

diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java b/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java
index 65094f15..92bcde3a 100644
--- a/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java
+++ b/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java
@@ -12,6 +12,7 @@ import com.supervision.service.AskPrimaryService;
 import com.supervision.vo.ask.DiagnosisPrimaryVO;
 import com.supervision.vo.ask.ModifyPrimaryDiseaseInfoReqVO;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.RequiredArgsConstructor;
@@ -59,11 +60,7 @@ public class AskPrimaryController {
     }
 
 
-    @ApiOperation("诊毕时,保存初步诊断以及鉴别依据")
-    @PostMapping("confirmPrimaryByAskEnd")
-    public void confirmPrimaryByAskEnd(@RequestBody List<PrimaryConfirmReqVO> reqVOList) {
-        askPrimaryService.confirmPrimaryByAskEnd(reqVOList);
-    }
+
 
     @ApiOperation("删除初步诊断")
     @GetMapping("deletePrimary")
@@ -71,9 +68,16 @@ public class AskPrimaryController {
         askPrimaryService.deletePrimary(id);
     }
 
-    @ApiOperation("查询初步诊断需要填写的诊断依据")
+    @ApiOperation("诊毕时,查询初步诊断关联的诊断项")
     @GetMapping("queryDiagnosticBasisListForPrimary")
-    public List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(@NotBlank(message = "流程ID不能为空") String processId) {
-        return askPrimaryService.queryDiagnosticBasisListForPrimary(processId);
+    public List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(@ApiParam(value = "流程ID",required = true) @NotBlank(message = "流程ID不能为空") String processId,
+                                                                                   @ApiParam(value = "初步诊断ID,不填查所有",required = false) String primaryId) {
+        return askPrimaryService.queryDiagnosticBasisListForPrimary(processId,primaryId);
+    }
+
+    @ApiOperation("诊毕时,保存初步诊断以及鉴别依据")
+    @PostMapping("confirmPrimaryByAskEnd")
+    public void confirmPrimaryByAskEnd(@RequestBody List<PrimaryConfirmReqVO> reqVOList) {
+        askPrimaryService.confirmPrimaryByAskEnd(reqVOList);
     }
 }
diff --git a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/PrimaryConfirmReqVO.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/PrimaryConfirmReqVO.java
index 26bc49cb..ae7b01b8 100644
--- a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/PrimaryConfirmReqVO.java
+++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/PrimaryConfirmReqVO.java
@@ -8,10 +8,8 @@ import java.util.List;
 @Data
 public class PrimaryConfirmReqVO {
 
-    /**
-     * 主键
-     */
-    private String id;
+    @ApiModelProperty("初步诊断ID")
+    private String primaryId;
 
     private String processId;
 
diff --git a/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java b/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java
index 7d9eabd3..e7753b41 100644
--- a/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java
+++ b/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java
@@ -29,6 +29,6 @@ public interface AskPrimaryService {
 
     void deletePrimary(String id);
 
-    List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(String processId);
+    List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(String processId,String primaryId);
 
 }
diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java
index 79c0a8e0..63d06d77 100644
--- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java
+++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java
@@ -158,7 +158,7 @@ public class AskPrimaryServiceImpl implements AskPrimaryService {
         for (PrimaryConfirmReqVO reqVO : reqVOList) {
             // 修改初步诊断是否被排除
             diagnosisPrimaryService.lambdaUpdate().set(DiagnosisPrimary::getExcludeFlag, reqVO.getExcludeFlag())
-                    .eq(DiagnosisPrimary::getId, reqVO.getId()).update();
+                    .eq(DiagnosisPrimary::getId, reqVO.getPrimaryId()).update();
             // 保存证实诊断依据
             saveDiagnosticBasis(reqVO.getDiagnosticBasisList());
         }
@@ -211,7 +211,7 @@ public class AskPrimaryServiceImpl implements AskPrimaryService {
      * @return 结果
      */
     @Override
-    public List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(String processId) {
+    public List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(String processId,String primaryId) {
         List<DiagnosticBasisForPrimaryResVO> resList = diagnosisPrimaryService.queryDiagnosticBasisListForPrimary(processId);
         if (CollUtil.isEmpty(resList)) {
             return resList;
@@ -221,22 +221,39 @@ public class AskPrimaryServiceImpl implements AskPrimaryService {
         Map<String, String> diseaseNameMap = diagnosisPrimaryVOS.stream().collect(Collectors.toMap(DiagnosisPrimaryVO::getId, DiagnosisPrimaryVO::getPrimaryDiseaseName));
         // 首先根据诊断记录,找到对应的关联关系
         Set<String> relationIdSet = resList.stream().map(DiagnosticBasisForPrimaryResVO::getId).collect(Collectors.toSet());
-        List<DiagnosisPrimaryRelation> relationList = diagnosisPrimaryRelationService.lambdaQuery().in(DiagnosisPrimaryRelation::getRelationId, relationIdSet).list();
+        // 查询诊疗记录对应的初步诊断关系
+        List<DiagnosisPrimaryRelation> relationList = diagnosisPrimaryRelationService.lambdaQuery()
+                .in(DiagnosisPrimaryRelation::getRelationId, relationIdSet)
+                .list();
         // 根据relationId进行分组
         Map<String, List<DiagnosisPrimaryRelation>> relationMap = relationList.stream().collect(Collectors.groupingBy(DiagnosisPrimaryRelation::getRelationId));
+
+        List<DiagnosticBasisForPrimaryResVO> result = new ArrayList<>();
         for (DiagnosticBasisForPrimaryResVO node : resList) {
             List<DiagnosisPrimaryRelation> relationPrimaryList = relationMap.get(node.getId());
             Set<String> primarySet = relationPrimaryList.stream().map(DiagnosisPrimaryRelation::getPrimaryId).collect(Collectors.toSet());
+
             if (CollUtil.isNotEmpty(primarySet)) {
+                // 如果初步诊断ID的参数不为空,那么说明只查某一个初步诊断的数据
+                if (StrUtil.isNotBlank(primaryId)){
+                    if (primarySet.contains(primaryId)){
+                        // 如果有,就只保留这一个初步诊断依据的
+                        primarySet.removeIf(e -> !e.equals(primaryId));
+                    }else {
+                        // 如果没有,就直接跳过
+                        continue;
+                    }
+                }
                 List<String> diseaseNameList = new ArrayList<>();
                 primarySet.forEach(e -> diseaseNameList.add(diseaseNameMap.get(e)));
                 node.setPrimaryIdList(new ArrayList<>(primarySet));
                 node.setPrimaryName(StrUtil.join(";", diseaseNameList));
+                result.add(node);
             }
 
         }
 
-        return resList;
+        return result;
     }