|
@@ -0,0 +1,92 @@
|
|
|
+package com.diagbot.facade;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.diagbot.client.AiptServiceClient;
|
|
|
+import com.diagbot.dto.ConceptBaseDTO;
|
|
|
+import com.diagbot.dto.QuestionUsualDTO;
|
|
|
+import com.diagbot.dto.RespDTO;
|
|
|
+import com.diagbot.entity.QuestionInfo;
|
|
|
+import com.diagbot.enums.IsDeleteEnum;
|
|
|
+import com.diagbot.enums.QuestionTypeEnum;
|
|
|
+import com.diagbot.util.BeanUtil;
|
|
|
+import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.util.RespDTOUtil;
|
|
|
+import com.diagbot.vo.ConceptUsualVO;
|
|
|
+import com.diagbot.vo.QuestionUsualVO;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Iterator;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description:
|
|
|
+ * @author: wangyu
|
|
|
+ * @time: 2018/11/22 16:16
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class QuestionUsualFacade {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ AiptServiceClient aiptServiceClient;
|
|
|
+ @Autowired
|
|
|
+ QuestionFacade questionFacade;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取常用标签
|
|
|
+ *
|
|
|
+ * @param questionUsualVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<QuestionUsualDTO> getQuestionUsual(QuestionUsualVO questionUsualVO) {
|
|
|
+ ConceptUsualVO conceptUsualVO = new ConceptUsualVO();
|
|
|
+ BeanUtil.copyProperties(questionUsualVO,conceptUsualVO);
|
|
|
+ Integer type = QuestionTypeEnum.Symptom.getKey();
|
|
|
+ conceptUsualVO.setType(type);
|
|
|
+ List<QuestionUsualDTO> questionUsualDTOList = new ArrayList<>();
|
|
|
+ //从知识库获取常用标签
|
|
|
+ RespDTO<List<ConceptBaseDTO>> conceptBaseDTORespDTO = aiptServiceClient.getConceptUsual(conceptUsualVO);
|
|
|
+ //如果该科室没有常用,返回全科常用
|
|
|
+ if( conceptBaseDTORespDTO != null && ListUtil.isEmpty(conceptBaseDTORespDTO.data)){
|
|
|
+ conceptUsualVO.setDeptName("全科");
|
|
|
+ conceptBaseDTORespDTO = aiptServiceClient.getConceptUsual(conceptUsualVO);
|
|
|
+ }
|
|
|
+ RespDTOUtil.respNGDeal(conceptBaseDTORespDTO,"获取常用标签失败");
|
|
|
+ if( conceptBaseDTORespDTO.data != null
|
|
|
+ && ListUtil.isNotEmpty(conceptBaseDTORespDTO.data)){
|
|
|
+ //提取标签名称
|
|
|
+ List<String> conceptName = conceptBaseDTORespDTO.data.stream()
|
|
|
+ .map(ConceptBaseDTO::getName)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ //与question标签匹配
|
|
|
+ QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
|
|
|
+ questionInfoQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey())
|
|
|
+ .in("tag_name",conceptName)
|
|
|
+ .ne("tag_type",8)
|
|
|
+ .eq("item_type",0)
|
|
|
+ .eq("type",type);
|
|
|
+ List<QuestionInfo> questionInfoList = questionFacade.list(questionInfoQueryWrapper);
|
|
|
+ Map<String,QuestionInfo> questionInfoMap
|
|
|
+ = questionInfoList.stream()
|
|
|
+ .collect(Collectors.toMap(QuestionInfo::getTagName,questionInfo -> questionInfo));
|
|
|
+ questionUsualDTOList = BeanUtil.listCopyTo(conceptBaseDTORespDTO.data,QuestionUsualDTO.class);
|
|
|
+ for (QuestionUsualDTO questionUsualDTO: questionUsualDTOList) {
|
|
|
+ if(null != questionInfoMap.get(questionUsualDTO.getName())){
|
|
|
+ questionUsualDTO.setQuestionId(questionInfoMap.get(questionUsualDTO.getName()).getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //如何没有匹配到questionId就移除
|
|
|
+ Iterator<QuestionUsualDTO> questionUsualDTOIterator = questionUsualDTOList.iterator();
|
|
|
+ while (questionUsualDTOIterator.hasNext()){
|
|
|
+ if(questionUsualDTOIterator.next().getQuestionId() == null){
|
|
|
+ questionUsualDTOIterator.remove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return questionUsualDTOList;
|
|
|
+ }
|
|
|
+ return questionUsualDTOList;
|
|
|
+ }
|
|
|
+}
|