QuestionUsualFacade.java 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package com.diagbot.facade;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.diagbot.client.AiptServiceClient;
  4. import com.diagbot.dto.ConceptBaseDTO;
  5. import com.diagbot.dto.QuestionUsualDTO;
  6. import com.diagbot.dto.RespDTO;
  7. import com.diagbot.entity.QuestionInfo;
  8. import com.diagbot.enums.IsDeleteEnum;
  9. import com.diagbot.enums.QuestionTypeEnum;
  10. import com.diagbot.service.impl.QuestionUsualServiceImpl;
  11. import com.diagbot.util.BeanUtil;
  12. import com.diagbot.util.ListUtil;
  13. import com.diagbot.util.RespDTOUtil;
  14. import com.diagbot.vo.ConceptUsualVO;
  15. import com.diagbot.vo.QuestionUsualVO;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Component;
  18. import java.util.ArrayList;
  19. import java.util.Iterator;
  20. import java.util.List;
  21. import java.util.Map;
  22. import java.util.stream.Collectors;
  23. /**
  24. * @Description:
  25. * @author: wangyu
  26. * @time: 2018/11/22 16:16
  27. */
  28. @Component
  29. public class QuestionUsualFacade extends QuestionUsualServiceImpl {
  30. @Autowired
  31. AiptServiceClient aiptServiceClient;
  32. @Autowired
  33. QuestionFacade questionFacade;
  34. /**
  35. * 获取常用标签
  36. *
  37. * @param questionUsualVO
  38. * @return
  39. */
  40. public List<QuestionUsualDTO> getQuestionUsual(QuestionUsualVO questionUsualVO) {
  41. ConceptUsualVO conceptUsualVO = new ConceptUsualVO();
  42. BeanUtil.copyProperties(questionUsualVO,conceptUsualVO);
  43. List<QuestionUsualDTO> questionUsualDTOList = new ArrayList<>();
  44. //从知识库获取常用标签
  45. RespDTO<List<ConceptBaseDTO>> conceptBaseDTORespDTO = aiptServiceClient.getConceptUsual(conceptUsualVO);
  46. //如果该科室没有常用,返回全科常用
  47. if( conceptBaseDTORespDTO != null && ListUtil.isEmpty(conceptBaseDTORespDTO.data)){
  48. conceptUsualVO.setDeptName("全科");
  49. conceptBaseDTORespDTO = aiptServiceClient.getConceptUsual(conceptUsualVO);
  50. }
  51. RespDTOUtil.respNGDeal(conceptBaseDTORespDTO,"获取常用标签失败");
  52. if( conceptBaseDTORespDTO.data != null
  53. && ListUtil.isNotEmpty(conceptBaseDTORespDTO.data)){
  54. //提取标签名称
  55. List<String> conceptName = conceptBaseDTORespDTO.data.stream()
  56. .map(ConceptBaseDTO::getName)
  57. .collect(Collectors.toList());
  58. //与question标签匹配
  59. QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
  60. questionInfoQueryWrapper.eq("is_deleted",IsDeleteEnum.N.getKey())
  61. .in("tag_name",conceptName)
  62. .eq("type",questionUsualVO.getType());
  63. List<QuestionInfo> questionInfoList = questionFacade.list(questionInfoQueryWrapper);
  64. Map<String,QuestionInfo> questionInfoMap
  65. = questionInfoList.stream()
  66. .collect(Collectors.toMap(QuestionInfo::getTagName,questionInfo -> questionInfo));
  67. questionUsualDTOList = BeanUtil.listCopyTo(conceptBaseDTORespDTO.data,QuestionUsualDTO.class);
  68. for (QuestionUsualDTO questionUsualDTO: questionUsualDTOList) {
  69. if(null != questionInfoMap.get(questionUsualDTO.getName())){
  70. questionUsualDTO.setQuestionId(questionInfoMap.get(questionUsualDTO.getName()).getId());
  71. }
  72. }
  73. return questionUsualDTOList;
  74. }
  75. //如何没有匹配到questionId就移除
  76. Iterator<QuestionUsualDTO> questionUsualDTOIterator = questionUsualDTOList.iterator();
  77. while (questionUsualDTOIterator.hasNext()){
  78. if(questionUsualDTOIterator.next().getQuestionId() == null
  79. && questionUsualVO.getType().intValue() != QuestionTypeEnum.Pacs.getKey()
  80. && questionUsualVO.getType().intValue() != QuestionTypeEnum.Disease.getKey()){
  81. questionUsualDTOIterator.remove();
  82. }
  83. }
  84. return questionUsualDTOList;
  85. }
  86. }