1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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;
- }
- }
|