浏览代码

icss-service标签检索

wangyu 6 年之前
父节点
当前提交
e68e8fed42

+ 1 - 1
aipt-service/src/main/java/com/diagbot/dto/RetrievalDTO.java

@@ -10,7 +10,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-public class RetrievalDTO {
+public class ConceptRetrievalDTO {
     private Long selfId;//本身概念id
     private String selfName;//本身名称
     private Long parentId;//父级id

+ 1 - 0
aipt-service/src/main/java/com/diagbot/facade/ConceptDetailFacade.java

@@ -12,6 +12,7 @@ import com.diagbot.service.impl.ConceptDetailServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.ParamConvertUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptIntroduceVO;

+ 11 - 7
aipt-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -3,15 +3,18 @@ package com.diagbot.facade;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptWithOrderRes;
-import com.diagbot.dto.RetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconRSTypeEnum;
+import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.ConceptServiceImpl;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.ParamConvertUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptUsualVO;
@@ -165,15 +168,16 @@ public class ConceptFacade extends ConceptServiceImpl {
      * @param retrievalVO
      * @return
      */
-    public List<RetrievalDTO> retrivelConceptInfo(RetrievalVO retrievalVO){
-        List<RetrievalDTO> retrievalDTOS = this.retrievalConcept(retrievalVO);
+    public List<ConceptRetrievalDTO> retrivelConceptInfo(RetrievalVO retrievalVO){
+        retrievalVO.setType(ParamConvertUtil.conceptConvert2Lib(retrievalVO.getType()));//标签类型
+        List<ConceptRetrievalDTO> conceptRetrievalDTOS = this.retrievalConcept(retrievalVO);
         //把本体的sameName过滤掉
-        for (RetrievalDTO retrievalDTO: retrievalDTOS) {
-            if(retrievalDTO.getSameName() != null && retrievalDTO.getSameName().equals(retrievalDTO.getSelfName())){
-                retrievalDTO.setSameName(null);
+        for (ConceptRetrievalDTO conceptRetrievalDTO : conceptRetrievalDTOS) {
+            if(conceptRetrievalDTO.getSameName() != null && conceptRetrievalDTO.getSameName().equals(conceptRetrievalDTO.getSelfName())){
+                conceptRetrievalDTO.setSameName(null);
             }
         }
-        return retrievalDTOS;
+        return conceptRetrievalDTOS;
     }
 
 }

+ 1 - 0
aipt-service/src/main/java/com/diagbot/facade/PatientInfoFacade.java

@@ -1,5 +1,6 @@
 package com.diagbot.facade;
 
+import com.diagbot.enums.LexiconTypeEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;

+ 2 - 2
aipt-service/src/main/java/com/diagbot/mapper/ConceptMapper.java

@@ -3,7 +3,7 @@ package com.diagbot.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptWithOrderRes;
-import com.diagbot.dto.RetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.vo.RetrievalVO;
@@ -42,5 +42,5 @@ public interface ConceptMapper extends BaseMapper<Concept> {
      * @param retrievalVO
      * @return
      */
-    List<RetrievalDTO> retrievalConcept(RetrievalVO retrievalVO);
+    List<ConceptRetrievalDTO> retrievalConcept(RetrievalVO retrievalVO);
 }

+ 2 - 2
aipt-service/src/main/java/com/diagbot/service/ConceptService.java

@@ -3,7 +3,7 @@ package com.diagbot.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptWithOrderRes;
-import com.diagbot.dto.RetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.vo.RetrievalVO;
@@ -42,5 +42,5 @@ public interface ConceptService extends IService<Concept> {
      * @param retrievalVO
      * @return
      */
-    List<RetrievalDTO> retrievalConcept(RetrievalVO retrievalVO);
+    List<ConceptRetrievalDTO> retrievalConcept(RetrievalVO retrievalVO);
 }

+ 2 - 2
aipt-service/src/main/java/com/diagbot/service/impl/ConceptServiceImpl.java

@@ -3,7 +3,7 @@ package com.diagbot.service.impl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptWithOrderRes;
-import com.diagbot.dto.RetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.mapper.ConceptMapper;
@@ -42,7 +42,7 @@ public class ConceptServiceImpl extends ServiceImpl<ConceptMapper, Concept> impl
      * @return
      */
     @Override
-    public List<RetrievalDTO> retrievalConcept(RetrievalVO retrievalVO) {
+    public List<ConceptRetrievalDTO> retrievalConcept(RetrievalVO retrievalVO) {
         return baseMapper.retrievalConcept(retrievalVO);
     }
 

+ 3 - 0
aipt-service/src/main/java/com/diagbot/util/ParamConvertUtil.java

@@ -1,5 +1,8 @@
 package com.diagbot.util;
 
+import com.diagbot.enums.ConceptTypeEnum;
+import com.diagbot.enums.LexiconTypeEnum;
+
 /**
  * @Description:参数转换
  * @Author:zhaops

+ 3 - 3
aipt-service/src/main/java/com/diagbot/web/ConceptController.java

@@ -3,8 +3,8 @@ package com.diagbot.web;
 
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.ConceptBaseDTO;
+import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.facade.ConceptFacade;
 import com.diagbot.util.ParamConvertUtil;
 import com.diagbot.vo.ConceptBaseVO;
@@ -91,8 +91,8 @@ public class ConceptController {
                     "inputIds:需要去重的id<br>")
     @PostMapping("/retrivelConceptInfo")
     @SysLogger("retrivelConceptInfo")
-    public RespDTO<List<RetrievalDTO>> retrivelConceptInfo(@RequestBody @Valid RetrievalVO retrievalVO) {
-        List<RetrievalDTO> data = conceptFacade.retrivelConceptInfo(retrievalVO);
+    public RespDTO<List<ConceptRetrievalDTO>> retrivelConceptInfo(@RequestBody @Valid RetrievalVO retrievalVO) {
+        List<ConceptRetrievalDTO> data = conceptFacade.retrivelConceptInfo(retrievalVO);
         return RespDTO.onSuc(data);
     }
 }

+ 1 - 1
aipt-service/src/main/resources/mapper/ConceptMapper.xml

@@ -186,7 +186,7 @@
         ORDER BY t4.order_no
     </select>
 
-    <select id="retrievalConcept" resultType="com.diagbot.dto.RetrievalDTO">
+    <select id="retrievalConcept" resultType="com.diagbot.dto.ConceptRetrievalDTO">
         SELECT a1.* from (
         SELECT t1.id selfId,t1.lib_name selfName,t5.id parentId,t5.lib_name parentName,null sameName,t2.is_concept showType FROM kl_concept t1
         LEFT JOIN kl_library_info t2 ON t1.id = t2.concept_id

+ 11 - 0
icss-service/src/main/java/com/diagbot/client/AiptServiceClient.java

@@ -9,6 +9,7 @@ import com.diagbot.client.bean.SearchData;
 import com.diagbot.client.hystrix.AiptServiceHystrix;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptIntroduceDTO;
+import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.DeptInfoDTO;
 import com.diagbot.dto.DisScaleDTO;
 import com.diagbot.dto.DisTypeDTO;
@@ -28,6 +29,7 @@ import com.diagbot.vo.EvaluationdiseaseNameVO;
 import com.diagbot.vo.GetDiseaseIcdVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
 import com.diagbot.vo.IndexConfigdiseaseNameVO;
+import com.diagbot.vo.RetrievalVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -160,4 +162,13 @@ public interface AiptServiceClient {
      */
     @PostMapping("/disType/verifyDisType")
     RespDTO<Boolean> verifyDisType(@Valid @RequestBody DisTypeVO disTypeVO);
+
+    /**
+     * 标签检索
+     *
+     * @param retrievalVO
+     * @return
+     */
+    @PostMapping("/concept/retrivelConceptInfo")
+    RespDTO<List<ConceptRetrievalDTO>> retrivelConceptInfo(@RequestBody @Valid RetrievalVO retrievalVO);
 }

+ 8 - 1
icss-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java

@@ -9,6 +9,7 @@ import com.diagbot.client.bean.ResponseData;
 import com.diagbot.client.bean.SearchData;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptIntroduceDTO;
+import com.diagbot.dto.ConceptRetrievalDTO;
 import com.diagbot.dto.DeptInfoDTO;
 import com.diagbot.dto.DisScaleDTO;
 import com.diagbot.dto.DisTypeDTO;
@@ -28,9 +29,9 @@ import com.diagbot.vo.EvaluationdiseaseNameVO;
 import com.diagbot.vo.GetDiseaseIcdVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
 import com.diagbot.vo.IndexConfigdiseaseNameVO;
+import com.diagbot.vo.RetrievalVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -207,4 +208,10 @@ public class AiptServiceHystrix implements AiptServiceClient {
         log.error("【hystrix】调用{}异常", "verifyDisType");
         return null;
     }
+
+    @Override
+    public RespDTO<List<ConceptRetrievalDTO>> retrivelConceptInfo(@Valid RetrievalVO retrievalVO) {
+        log.error("【hystrix】调用{}异常", "retrivelConceptInfo");
+        return null;
+    }
 }

+ 20 - 0
icss-service/src/main/java/com/diagbot/dto/ConceptRetrievalDTO.java

@@ -0,0 +1,20 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2019/5/10 10:20
+ */
+@Getter
+@Setter
+public class ConceptRetrievalDTO {
+    private Long selfId;//本身概念id
+    private String selfName;//本身名称
+    private Long parentId;//父级id
+    private String parentName;//父级名称
+    private String sameName;//同义词名称
+    private Integer showType;//显示类型(1本体,2同义词)
+}

+ 2 - 0
icss-service/src/main/java/com/diagbot/dto/RetrievalDTO.java

@@ -19,4 +19,6 @@ public class RetrievalDTO {
     private Integer showType;
     //Tag名称
     private String retrievalName;
+    //概念id
+    private Long conceptId;
 }

+ 48 - 37
icss-service/src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -1,9 +1,16 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.client.AiptServiceClient;
+import com.diagbot.dto.ConceptRetrievalDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.entity.QuestionInfo;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.RetrievalServiceImpl;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.RetrievalVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -25,6 +32,8 @@ public class RetrievalFacade extends RetrievalServiceImpl {
 
     @Autowired
     QuestionFacade questionFacade;
+    @Autowired
+    AiptServiceClient aiptServiceClient;
 
     /**
      * 获取标签信息
@@ -33,46 +42,48 @@ public class RetrievalFacade extends RetrievalServiceImpl {
      * @return
      */
     public List<RetrievalDTO> getTagInfos(@Valid @RequestBody RetrievalVO retrievalVO) {
-        if (retrievalVO.getInputStr() == null || retrievalVO.getInputStr() == "") {
-            retrievalVO.setInputStr(" ");
-        }
-        //过滤传来的空值
-        if(ListUtil.isNotEmpty(retrievalVO.getInputIds())){
-            List<Long> questionIds = new ArrayList<>();
-            for (Long questionId:retrievalVO.getInputIds()) {
-                if (null != questionId){
-                    questionIds.add(questionId);
+        List<RetrievalDTO> retrievalDTOS = new ArrayList<>();
+        //调用aipt-服务
+        RespDTO<List<ConceptRetrievalDTO>> conceptInfos = aiptServiceClient.retrivelConceptInfo(retrievalVO);
+        RespDTOUtil.respNGDeal(conceptInfos,"获取检索信息失败");
+        //获取questionId
+        List<String> questionNames = new ArrayList<>();
+        if(ListUtil.isNotEmpty(conceptInfos.data)){
+            for (ConceptRetrievalDTO conceptRetrievalDTO: conceptInfos.data) {
+                if(!questionNames.contains(conceptRetrievalDTO.getSameName())){
+                        questionNames.add(conceptRetrievalDTO.getSelfName());
+                    }
+                    if(!questionNames.contains(conceptRetrievalDTO.getParentName())){
+                        questionNames.add(conceptRetrievalDTO.getParentName());
+                    }
                 }
-            }
-            retrievalVO.setInputIds(questionIds);
-        }
-        //获取同义词标签信息
-        List<RetrievalDTO> data = this.getSymptopInfo(retrievalVO);
-        List<Long> selfIds = new ArrayList<>();
-        for (RetrievalDTO bean : data) {//筛选本身的id
-            if ((1 == bean.getShowType())
-                    && !selfIds.contains(bean.getQuestionId())) {
-                selfIds.add(bean.getQuestionId());
-            }
-        }
-        List<RetrievalDTO> resultSubitemData = new ArrayList<>();
-        for (RetrievalDTO bean : data) {//当出现本体和同义词时,不显示同义词
-            if (1 == bean.getShowType()) {
-                resultSubitemData.add(bean);
-            } else {
-                if (!selfIds.contains(bean.getQuestionId())) {
-                    resultSubitemData.add(bean);
+            QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
+            questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("tag_name",questionNames)
+                    .eq("type",retrievalVO.getType());
+            List<QuestionInfo> questionInfoList = questionFacade.list(questionInfoQueryWrapper);
+            Map<String,QuestionInfo> questionInfoMap = questionInfoList.stream().collect(Collectors.toMap(QuestionInfo::getTagName,questionInfo -> questionInfo));
+            RetrievalDTO retrievalDTO = new RetrievalDTO();
+            //封装
+            for (ConceptRetrievalDTO conceptRetrievalDTO: conceptInfos.data) {
+                retrievalDTO = new RetrievalDTO();
+                retrievalDTO.setConceptId(conceptRetrievalDTO.getSelfId());
+                retrievalDTO.setName(conceptRetrievalDTO.getSelfName());
+                if(StringUtil.isNotEmpty(conceptRetrievalDTO.getParentName())){//parent不为空时说明有子项,返回父级id
+                    retrievalDTO.setQuestionId(questionInfoMap.get(conceptRetrievalDTO.getParentName()).getId());
+                }else {//parent为空时说明没有子项返回本体id
+                    retrievalDTO.setQuestionId(questionInfoMap.get(conceptRetrievalDTO.getSelfName()).getId());
+                }
+                if(StringUtil.isNotEmpty(conceptRetrievalDTO.getSameName())){//同义词
+                    retrievalDTO.setRetrievalName(conceptRetrievalDTO.getSameName());
                 }
+                if(StringUtil.isNotEmpty(conceptRetrievalDTO.getParentName())){//子项
+                    retrievalDTO.setRetrievalName(conceptRetrievalDTO.getParentName());
+                }
+                retrievalDTO.setShowType(conceptRetrievalDTO.getShowType());
+                retrievalDTOS.add(retrievalDTO);
             }
         }
-        List<Long> questionIdList = resultSubitemData.stream()
-                .map(r -> r.getQuestionId())
-                .collect(Collectors.toList());
-        //将标签名放入实体
-        Map<Long, QuestionInfo> map = questionFacade.getQuestionInfos(questionIdList);
-        for (RetrievalDTO retrievalDTO : resultSubitemData) {
-            retrievalDTO.setName(map.get(retrievalDTO.getQuestionId()).getTagName());
-        }
-        return resultSubitemData;
+        return retrievalDTOS;
     }
 }