|
@@ -2,16 +2,24 @@ 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.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.QuestionIds2VO;
|
|
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.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
|
+import java.util.LinkedHashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -26,6 +34,10 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
QuestionCacheFacade questionCacheFacade;
|
|
QuestionCacheFacade questionCacheFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ QuestionDetailFacade questionDetailFacade;
|
|
|
|
+ @Autowired
|
|
|
|
+ LisMappingFacade lisMappingFacade;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 根据参数返回标签内容
|
|
* 根据参数返回标签内容
|
|
@@ -92,4 +104,142 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
|
|
return questionInfo;
|
|
return questionInfo;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 查询多个id返回标签内容
|
|
|
|
+ *
|
|
|
|
+ * @param questionIds2VO 获取标签内容参数
|
|
|
|
+ * @return 标签内容
|
|
|
|
+ */
|
|
|
|
+ public Map<Long, Object> getByIds(QuestionIds2VO questionIds2VO) {
|
|
|
|
+ Integer sexType = questionIds2VO.getSexType();
|
|
|
|
+ Integer age = questionIds2VO.getAge();
|
|
|
|
+ Map<Long, Object> data = new LinkedHashMap<>();
|
|
|
|
+ if (ListUtil.isEmpty(questionIds2VO.getIds())) {
|
|
|
|
+ return data;
|
|
|
|
+ }
|
|
|
|
+ // TODO 删除
|
|
|
|
+ data.put(0L, "00000000000000");
|
|
|
|
+
|
|
|
|
+ Map paramMap = new HashMap<>();
|
|
|
|
+ paramMap.put("sexType", sexType);
|
|
|
|
+ paramMap.put("age", age);
|
|
|
|
+ paramMap.put("idList", questionIds2VO.getIds());
|
|
|
|
+
|
|
|
|
+ List<QuestionInfo> questionInfoList = this.getByParam2(paramMap);
|
|
|
|
+ List<Long> questionId = questionInfoList.stream().map(r -> r.getId()).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ // 获取第一层明细项
|
|
|
|
+ Map<Long, List<QuestionDetail>> detailMap = getQuestionDetailWithMap(questionInfoList.stream().filter(r -> r.getTagType() == 1).map(r -> r.getId()).collect(Collectors.toList()));
|
|
|
|
+
|
|
|
|
+ // 获取第二层mapping和明细项
|
|
|
|
+ List<Long> ques2 = new ArrayList<>();
|
|
|
|
+ Map<Long, List<QuestionInfoWrapper>> mapping2 = getQuestionMappingWithMap(sexType, age, questionId, ques2);
|
|
|
|
+ Map<Long, List<QuestionDetail>> detailMap2 = getQuestionDetailWithMap(ques2);
|
|
|
|
+
|
|
|
|
+ // 获取第三层mapping和明细项
|
|
|
|
+ List<Long> ques3 = new ArrayList<>();
|
|
|
|
+ Map<Long, List<QuestionInfoWrapper>> mapping3 = new HashMap<>();
|
|
|
|
+ Map<Long, List<QuestionDetail>> detailMap3 = new HashMap<>();
|
|
|
|
+ if (!ListUtil.isEmpty(ques2)) {
|
|
|
|
+ mapping3 = getQuestionMappingWithMap(sexType, age, ques2, ques3);
|
|
|
|
+ detailMap3 = getQuestionDetailWithMap(ques3);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (QuestionInfo questionInfo : questionInfoList) {
|
|
|
|
+ QuestionDTO res = new QuestionDTO();
|
|
|
|
+ BeanUtil.copyProperties(questionInfo, res);
|
|
|
|
+ // 设置第一层明细
|
|
|
|
+ if (detailMap.get(res.getId()) != null) {
|
|
|
|
+ res.setQuestionDetailList(detailMap.get(res.getId()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 设置第二层mapping
|
|
|
|
+ List<QuestionInfoWrapper> w2 = mapping2.get(res.getId());
|
|
|
|
+ if (ListUtil.isNotEmpty(w2)) {
|
|
|
|
+ List<QuestionDTO> m2 = BeanUtil.listCopyTo(w2, QuestionDTO.class);
|
|
|
|
+ res.setQuestionMapping(m2);
|
|
|
|
+ for (QuestionDTO q2: m2) {
|
|
|
|
+ // 设置第二层明细
|
|
|
|
+ if (detailMap2.get(q2.getId()) != null) {
|
|
|
|
+ q2.setQuestionDetailList(detailMap2.get(q2.getId()));
|
|
|
|
+ }
|
|
|
|
+ List<QuestionInfoWrapper> w3 = mapping3.get(q2.getId());
|
|
|
|
+ if (ListUtil.isNotEmpty(w3)) {
|
|
|
|
+ // 设置第三层mapping
|
|
|
|
+ List<QuestionDTO> m3 = BeanUtil.listCopyTo(w3, QuestionDTO.class);
|
|
|
|
+ q2.setQuestionMapping(m3);
|
|
|
|
+ for (QuestionDTO q3: m3) {
|
|
|
|
+ // 设置第三层明细
|
|
|
|
+ if (detailMap3.get(q3.getId()) != null) {
|
|
|
|
+ q3.setQuestionDetailList(detailMap3.get(q3.getId()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // TODO 优化
|
|
|
|
+ //获取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()));
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+ data.put(res.getId(), res);
|
|
|
|
+ }
|
|
|
|
+ return data;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 根据questionIds获取明细
|
|
|
|
+ *
|
|
|
|
+ * @param questionIds
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public Map<Long, List<QuestionDetail>> getQuestionDetailWithMap(List<Long> questionIds) {
|
|
|
|
+ List<QuestionDetail> detailList = questionDetailFacade.list(new QueryWrapper<QuestionDetail>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .in("question_id", questionIds)
|
|
|
|
+ .orderByAsc("order_no"));
|
|
|
|
+ Map<Long, List<QuestionDetail>> detailMap = EntityUtil.makeEntityListMap(detailList, "questionId");
|
|
|
|
+ return detailMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取下级question
|
|
|
|
+ *
|
|
|
|
+ * @param sexType 性别
|
|
|
|
+ * @param age 年龄
|
|
|
|
+ * @param ids 列表
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public Map getQuestionMappingWithMap(Integer sexType, Integer age, List<Long> ids, List<Long> mappIds) {
|
|
|
|
+ Map paramMap = new HashMap<>();
|
|
|
|
+ paramMap.put("sexType", sexType);
|
|
|
|
+ paramMap.put("age", age);
|
|
|
|
+ paramMap.put("ids", ids);
|
|
|
|
+ List<QuestionInfoWrapper> questionMapping1 = this.getByQuestionMapping(paramMap);
|
|
|
|
+ List<Long> list = questionMapping1.stream().map(r -> r.getId()).collect(Collectors.toList());
|
|
|
|
+ mappIds.addAll(list);
|
|
|
|
+ return EntityUtil.makeEntityListMap(questionMapping1, "parentQuestion");
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|