|
@@ -2,23 +2,15 @@ package com.diagbot.facade;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.diagbot.dto.QuestionDTO;
|
|
import com.diagbot.dto.QuestionDTO;
|
|
-import com.diagbot.entity.QuestionDetail;
|
|
|
|
import com.diagbot.entity.QuestionInfo;
|
|
import com.diagbot.entity.QuestionInfo;
|
|
-import com.diagbot.entity.wrapper.QuestionInfoWrapper;
|
|
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
-import com.diagbot.enums.QuestionTypeEnum;
|
|
|
|
import com.diagbot.service.impl.QuestionInfoServiceImpl;
|
|
import com.diagbot.service.impl.QuestionInfoServiceImpl;
|
|
-import com.diagbot.util.BeanUtil;
|
|
|
|
-import com.diagbot.util.EntityUtil;
|
|
|
|
-import com.diagbot.util.ListUtil;
|
|
|
|
import com.diagbot.util.StringUtil;
|
|
import com.diagbot.util.StringUtil;
|
|
import com.diagbot.vo.QuestionIdsVO;
|
|
import com.diagbot.vo.QuestionIdsVO;
|
|
import com.diagbot.vo.QuestionVO;
|
|
import com.diagbot.vo.QuestionVO;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
-import org.springframework.cache.annotation.Cacheable;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -33,9 +25,7 @@ import java.util.stream.Collectors;
|
|
public class QuestionFacade extends QuestionInfoServiceImpl {
|
|
public class QuestionFacade extends QuestionInfoServiceImpl {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- QuestionDetailFacade questionDetailFacade;
|
|
|
|
- @Autowired
|
|
|
|
- LisMappingFacade lisMappingFacade;
|
|
|
|
|
|
+ QuestionCacheFacade questionCacheFacade;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 根据参数返回标签内容
|
|
* 根据参数返回标签内容
|
|
@@ -43,91 +33,8 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
|
|
* @param questionVO 获取标签内容参数
|
|
* @param questionVO 获取标签内容参数
|
|
* @return 标签内容
|
|
* @return 标签内容
|
|
*/
|
|
*/
|
|
- @Cacheable(value = "tagCache", key = "'tag:'+#p0['id']+'_'+#p0['sexType']")
|
|
|
|
public QuestionDTO getById(QuestionVO questionVO) {
|
|
public QuestionDTO getById(QuestionVO questionVO) {
|
|
- Map paramMap = new HashMap<>();
|
|
|
|
- paramMap.put("sexType", questionVO.getSexType());
|
|
|
|
- paramMap.put("age", questionVO.getAge());
|
|
|
|
- paramMap.put("id", questionVO.getId());
|
|
|
|
- QuestionInfo questionInfo = this.getByParam(paramMap);
|
|
|
|
- if (questionInfo == null) { //无数据直接返回,不通过报错的形式返回
|
|
|
|
- return new QuestionDTO();
|
|
|
|
- }
|
|
|
|
- QuestionDTO res = new QuestionDTO();
|
|
|
|
- BeanUtil.copyProperties(questionInfo, res);
|
|
|
|
-
|
|
|
|
- if (questionInfo.getTagType().equals(1)){
|
|
|
|
- //获取明细项
|
|
|
|
- List<QuestionDetail> questionDetailList = questionDetailFacade.getByQuestionId(questionVO.getId());
|
|
|
|
- res.setQuestionDetailList(questionDetailList);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //获取子标签
|
|
|
|
- List<QuestionInfoWrapper> questionMapping = this.getByQuestionMapping(paramMap);
|
|
|
|
- List<QuestionDTO> sonQuestionList = BeanUtil.listCopyTo(questionMapping, QuestionDTO.class);
|
|
|
|
- res.setQuestionMapping(sonQuestionList);
|
|
|
|
- //获取子标签的明细项
|
|
|
|
- if (ListUtil.isNotEmpty(sonQuestionList)) {
|
|
|
|
- Map paramMap1 = new HashMap<>();
|
|
|
|
- paramMap1.put("sexType", questionVO.getSexType());
|
|
|
|
- paramMap1.put("age", questionVO.getAge());
|
|
|
|
- List<Long> sonQuestionIds = sonQuestionList.stream()
|
|
|
|
- .map(artist -> artist.getId())
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
- Map<Long, List<QuestionDetail>> sonQuestionMap = questionDetailFacade.getByQuestionIds(sonQuestionIds);
|
|
|
|
- paramMap1.put("ids", sonQuestionIds);
|
|
|
|
- //获取第二级子标签
|
|
|
|
- List<QuestionInfoWrapper> questionMapping1 = this.getByQuestionMapping(paramMap1);
|
|
|
|
- Map<Long, List<QuestionInfoWrapper>> qm1 = EntityUtil.makeEntityListMap(questionMapping1, "parentQuestion");
|
|
|
|
- for (QuestionDTO bean : sonQuestionList) {
|
|
|
|
- List<QuestionDetail> questionDetailList1 = sonQuestionMap.get(bean.getId());
|
|
|
|
- if (ListUtil.isEmpty(questionDetailList1)) {
|
|
|
|
- questionDetailList1 = new ArrayList<>();
|
|
|
|
- }
|
|
|
|
- bean.setQuestionDetailList(questionDetailList1);
|
|
|
|
- List<QuestionDTO> sonQuestionList1 = new ArrayList<>();
|
|
|
|
- if (ListUtil.isNotEmpty(qm1.get(bean.getId()))) {
|
|
|
|
- sonQuestionList1 = BeanUtil.listCopyTo(qm1.get(bean.getId()), QuestionDTO.class);
|
|
|
|
- }
|
|
|
|
- bean.setQuestionMapping(sonQuestionList1);
|
|
|
|
-
|
|
|
|
- List<Long> sonQuestionIds1 = sonQuestionList1.stream()
|
|
|
|
- .map(artist -> artist.getId())
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
- Map<Long, List<QuestionDetail>> sonQuestionMap1 = questionDetailFacade.getByQuestionIds(sonQuestionIds1);
|
|
|
|
- for (QuestionDTO questionDTO : sonQuestionList1) {
|
|
|
|
- //获取二级子明细项
|
|
|
|
- List<QuestionDetail> questionDetailList2 = sonQuestionMap1.get(questionDTO.getId());
|
|
|
|
- if (ListUtil.isEmpty(questionDetailList2)) {
|
|
|
|
- questionDetailList2 = new ArrayList<>();
|
|
|
|
- }
|
|
|
|
- questionDTO.setQuestionDetailList(questionDetailList2);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //获取uniqueName
|
|
|
|
- if (res != null && res.getType() != null &&
|
|
|
|
- QuestionTypeEnum.Lis.getKey() == res.getType().intValue()) {
|
|
|
|
- String project = res.getName();
|
|
|
|
- List<String> details = new ArrayList<>();
|
|
|
|
- if (ListUtil.isNotEmpty(res.getQuestionMapping())) {
|
|
|
|
- details = res.getQuestionMapping().stream().map(row -> row.getName()).collect(Collectors.toList());
|
|
|
|
- }
|
|
|
|
- Map<String, Map<String, String>> map = lisMappingFacade.getLisMappingByQuestion(project, details);
|
|
|
|
- if (map != null) {
|
|
|
|
- if (map.get("project") != null) {
|
|
|
|
- res.setUniqueName(map.get("project").get(res.getName()));
|
|
|
|
- }
|
|
|
|
- if (map.get("details") != null) {
|
|
|
|
- for (QuestionDTO bean : res.getQuestionMapping()) {
|
|
|
|
- bean.setUniqueName(map.get("details").get(bean.getName()));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return res;
|
|
|
|
|
|
+ return questionCacheFacade.getById(questionVO);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -148,7 +55,7 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
|
|
questionVO.setId(Long.parseLong(id));
|
|
questionVO.setId(Long.parseLong(id));
|
|
questionVO.setAge(questionIdsVO.getAge());
|
|
questionVO.setAge(questionIdsVO.getAge());
|
|
questionVO.setSexType(questionIdsVO.getSexType());
|
|
questionVO.setSexType(questionIdsVO.getSexType());
|
|
- QuestionDTO item = this.getById(questionVO);
|
|
|
|
|
|
+ QuestionDTO item = questionCacheFacade.getById(questionVO);
|
|
if (item != null && item.getId() != null) {
|
|
if (item != null && item.getId() != null) {
|
|
data.put(item.getId(), item);
|
|
data.put(item.getId(), item);
|
|
}
|
|
}
|