gaodm 6 years ago
parent
commit
abd141d336

+ 128 - 0
icss-service/src/main/java/com/diagbot/facade/QuestionCacheFacade.java

@@ -0,0 +1,128 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.entity.QuestionDetail;
+import com.diagbot.entity.QuestionInfo;
+import com.diagbot.entity.wrapper.QuestionInfoWrapper;
+import com.diagbot.enums.QuestionTypeEnum;
+import com.diagbot.service.impl.QuestionInfoServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.QuestionVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 标签业务层
+ * @author: zhoutg
+ * @time: 2018/8/6 9:11
+ */
+@Component
+public class QuestionCacheFacade extends QuestionInfoServiceImpl {
+
+    @Autowired
+    QuestionDetailFacade questionDetailFacade;
+    @Autowired
+    LisMappingFacade lisMappingFacade;
+
+    /**
+     * 根据参数返回标签内容
+     *
+     * @param questionVO 获取标签内容参数
+     * @return 标签内容
+     */
+    @Cacheable(value = "tagCache", key = "'tag:'+#p0['id']+'_'+#p0['sexType']")
+    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;
+    }
+}

+ 3 - 96
icss-service/src/main/java/com/diagbot/facade/QuestionFacade.java

@@ -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);
             }
             }