Ver código fonte

诊断依据-获取详情

kongwz 4 anos atrás
pai
commit
cccd2a8be8

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/dto/DiseaseDetailDTO.java

@@ -16,5 +16,5 @@ import java.util.List;
 public class DiseaseDetailDTO implements Serializable {
     private Long sid;
     private String disName;
-    List<List<DiseaseSubDetailDTO>> datas;
+    List<DiseaseSubDetailDTO> datas;
 }

+ 3 - 2
cdssman-service/src/main/java/com/diagbot/dto/DiseaseSubDetailDTO.java

@@ -1,9 +1,11 @@
 package com.diagbot.dto;
 
+import com.diagbot.entity.KlConcept;
 import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @author kwz
@@ -15,6 +17,5 @@ import java.io.Serializable;
 public class DiseaseSubDetailDTO implements Serializable {
     private Integer rid;
     private String rname;
-    private Long eid;
-    private String itemName;
+    List<KlConcept> details;
 }

+ 49 - 24
cdssman-service/src/main/java/com/diagbot/facade/KlDiseaseFacade.java

@@ -1,11 +1,15 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.DiseaseAllDetailDTO;
 import com.diagbot.dto.DiseaseDetailDTO;
 import com.diagbot.dto.DiseasePageDTO;
 import com.diagbot.dto.DiseaseSubDetailDTO;
+import com.diagbot.entity.KlConcept;
+import com.diagbot.entity.KlLexiconRelationship;
 import com.diagbot.service.KlDiseaseService;
+import com.diagbot.service.KlLexiconRelationshipService;
 import com.diagbot.service.impl.KlDiseaseServiceImpl;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.DiseasePageVO;
@@ -13,6 +17,7 @@ import com.diagbot.vo.GetDiseaseDetailVO;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.compress.utils.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.LinkedHashMap;
@@ -27,51 +32,71 @@ import java.util.stream.Collectors;
  */
 @Component
 public class KlDiseaseFacade extends KlDiseaseServiceImpl {
+    @Autowired
+    KlLexiconRelationshipFacade klLexiconRelationshipFacade;
 
     public IPage<DiseasePageDTO> getDiseasePageAll(DiseasePageVO klConceptInfoVO) {
-        return  this.getDiseasePage(klConceptInfoVO);
+        return this.getDiseasePage(klConceptInfoVO);
     }
 
 
     public DiseaseDetailDTO getDetail(GetDiseaseDetailVO getDiseaseDetailVO) {
         DiseaseDetailDTO diseaseDetailDTO = new DiseaseDetailDTO();
 
-        Map<Integer,List<DiseaseSubDetailDTO>> disSubDetailMap = Maps.newHashMap();
+        List<Integer> types = getDiseaseDetailVO.getTypes();
+        Map<Integer, String> type_nameMap = klLexiconRelationshipFacade.getTypeNameMap(getDiseaseDetailVO);
+
+        Map<Integer, DiseaseSubDetailDTO> disSubDetailMap = Maps.newHashMap();
         List<DiseaseAllDetailDTO> diseaseAllDetailDTOS = this.getDiseaseDetail(getDiseaseDetailVO);
-        if(ListUtil.isNotEmpty(diseaseAllDetailDTOS)){
-            diseaseAllDetailDTOS.forEach(x ->{
+        if (ListUtil.isNotEmpty(diseaseAllDetailDTOS)) {
+            diseaseAllDetailDTOS.forEach(x -> {
                 diseaseDetailDTO.setSid(x.getSid());
                 diseaseDetailDTO.setDisName(x.getDisName());
-                if(disSubDetailMap.containsKey(x.getRid())){
-                    List<DiseaseSubDetailDTO> diseaseSubDetailDTOS = disSubDetailMap.get(x.getRid());
-                    DiseaseSubDetailDTO diseaseSubDetailDTO = new DiseaseSubDetailDTO();
-                    diseaseSubDetailDTO.setEid(x.getEid());
-                    diseaseSubDetailDTO.setItemName(x.getItemName());
+                if (disSubDetailMap.containsKey(x.getRid())) {
+                    DiseaseSubDetailDTO diseaseSubDetailDTO = disSubDetailMap.get(x.getRid());
+
                     diseaseSubDetailDTO.setRid(x.getRid());
                     diseaseSubDetailDTO.setRname(x.getRname());
-                    diseaseSubDetailDTOS.add(diseaseSubDetailDTO);
-                    disSubDetailMap.put(x.getRid(),diseaseSubDetailDTOS);
-                }else {
-                    List<DiseaseSubDetailDTO> diseaseSubDetailDTOS = Lists.newArrayList();
+                    List<KlConcept> details = diseaseSubDetailDTO.getDetails();
+                    diseaseSubDetailDTO.setDetails(details);
+                    KlConcept klConcept = new KlConcept();
+                    klConcept.setId(x.getEid());
+                    klConcept.setLibName(x.getItemName());
+                    details.add(klConcept);
+
+                    disSubDetailMap.put(x.getRid(), diseaseSubDetailDTO);
+                } else {
                     DiseaseSubDetailDTO diseaseSubDetailDTO = new DiseaseSubDetailDTO();
-                    diseaseSubDetailDTO.setEid(x.getEid());
-                    diseaseSubDetailDTO.setItemName(x.getItemName());
+
                     diseaseSubDetailDTO.setRid(x.getRid());
                     diseaseSubDetailDTO.setRname(x.getRname());
-                    diseaseSubDetailDTOS.add(diseaseSubDetailDTO);
-                    disSubDetailMap.put(x.getRid(),diseaseSubDetailDTOS);
+                    List<KlConcept> details = Lists.newArrayList();
+                    diseaseSubDetailDTO.setDetails(details);
+                    KlConcept klConcept = new KlConcept();
+                    klConcept.setId(x.getEid());
+                    klConcept.setLibName(x.getItemName());
+                    details.add(klConcept);
+
+                    disSubDetailMap.put(x.getRid(), diseaseSubDetailDTO);
                 }
 
             });
         }
-        if(MapUtils.isNotEmpty(disSubDetailMap)){
-            Map<Integer, List<DiseaseSubDetailDTO>> collect = disSubDetailMap.entrySet().stream().sorted(Map.Entry.comparingByKey())
-                    .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
-                            (oldValue, newValue) -> newValue, LinkedHashMap::new));
-            List<List<DiseaseSubDetailDTO>> datas = Lists.newArrayList();
-            collect.forEach((x,y)->datas.add(y));
-            diseaseDetailDTO.setDatas(datas);
+        List<DiseaseSubDetailDTO> datas = Lists.newArrayList();
+        if (MapUtils.isNotEmpty(disSubDetailMap)) {
+            for (Integer type : types) {
+                if (disSubDetailMap.containsKey(type)) {
+                    datas.add(disSubDetailMap.get(type));
+                } else {
+                    DiseaseSubDetailDTO diseaseSubDetailDTO = new DiseaseSubDetailDTO();
+                    diseaseSubDetailDTO.setRid(type);
+                    diseaseSubDetailDTO.setRname(type_nameMap.get(type));
+                    datas.add(diseaseSubDetailDTO);
+                }
+            }
+
         }
+        diseaseDetailDTO.setDatas(datas);
         return diseaseDetailDTO;
     }
 }

+ 17 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlLexiconRelationshipFacade.java

@@ -1,12 +1,17 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.KlLexiconRelationshipDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.KlLexiconRelationship;
 import com.diagbot.service.impl.KlLexiconRelationshipServiceImpl;
+import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.GetDiseaseDetailVO;
 import com.diagbot.vo.KlLexiconRelationshipVO;
+import com.google.common.collect.Maps;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -35,4 +40,16 @@ public class KlLexiconRelationshipFacade extends KlLexiconRelationshipServiceImp
         });
         return iPage;
     }
+
+    public Map<Integer,String> getTypeNameMap(GetDiseaseDetailVO getDiseaseDetailVO){
+        Map<Integer,String> typeNameMap = Maps.newHashMap();
+        List<Integer> types = getDiseaseDetailVO.getTypes();
+        List<KlLexiconRelationship> klLexiconRelationships = this.list(new QueryWrapper<KlLexiconRelationship>()
+                .in("code", types)
+                .eq("is_deleted", "N"));
+        if (ListUtil.isNotEmpty(klLexiconRelationships)) {
+            typeNameMap = klLexiconRelationships.stream().collect(Collectors.toMap(KlLexiconRelationship::getCode, KlLexiconRelationship::getName));
+        }
+        return typeNameMap;
+    }
 }

+ 2 - 0
cdssman-service/src/main/java/com/diagbot/vo/GetDiseaseDetailVO.java

@@ -6,6 +6,7 @@ import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * 诊断依据表入参
@@ -19,4 +20,5 @@ public class GetDiseaseDetailVO implements Serializable {
     @ApiModelProperty(value = "诊断依据主键")
     @NotNull(message="诊断依据id不能为空")
     private Long id;
+    private List<Integer> types;
 }

+ 29 - 32
cdssman-service/src/main/resources/mapper/KlDiseaseMapper.xml

@@ -39,37 +39,34 @@
 
     <select id="getDiseaseAllDetaill" resultType="com.diagbot.dto.DiseaseAllDetailDTO">
         SELECT
-	kr.start_id as sid,
-	klc1.lib_name as disName,
-	kr.relation_id as rid,
-	klex.name as rname,
-	kr.end_id as eid,
-	klc2.lib_name as itemName
-FROM
-	kl_relation kr,
-	kl_relation_order kro,
-	kl_concept klc1,
-	kl_concept klc2,
-	kl_lexicon_relationship klex
-WHERE
-	kr.id = kro.t_relation_id
-AND klc1.id = kr.start_id
-AND klc2.id = kr.end_id
-AND kr.relation_id = klex. CODE
-<if test="id != null">
-    AND kr.start_id = #{id}
-</if>
-AND kr.relation_id IN (
-	501,
-	502,
-	503,
-	504,
-	505,
-	506,
-	507,
-	508
-)
-ORDER BY
-	rid,kro.order_no
+        kr.start_id as sid,
+        klc1.lib_name as disName,
+        kr.relation_id as rid,
+        klex.name as rname,
+        kr.end_id as eid,
+        klc2.lib_name as itemName
+        FROM
+        kl_relation kr,
+        kl_relation_order kro,
+        kl_concept klc1,
+        kl_concept klc2,
+        kl_lexicon_relationship klex
+        WHERE
+        kr.id = kro.t_relation_id
+        AND klc1.id = kr.start_id
+        AND klc2.id = kr.end_id
+        AND kr.relation_id = klex. CODE
+        <if test="id != null">
+            AND kr.start_id = #{id}
+        </if>
+        <if test="types!=null and types.size() > 0">
+            AND kr.relation_id IN
+            <foreach collection="types" item="item" index="index" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+
+        ORDER BY
+        rid,kro.order_no
     </select>
 </mapper>