QuestionUsualFacade.java 3.8 KB

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