소스 검색

优化代码

gaodm 6 년 전
부모
커밋
5958f58ffb

+ 20 - 4
icss-service/src/main/java/com/diagbot/facade/ModuleFacade.java

@@ -8,13 +8,19 @@ import com.diagbot.entity.ModuleInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.ModuleInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
 import com.diagbot.vo.ModuleVO;
 import com.diagbot.vo.QuestionVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 模型业务层
@@ -41,13 +47,23 @@ public class ModuleFacade extends ModuleInfoServiceImpl {
         queryWrapper.orderByAsc("id");
         List<ModuleInfo> list = this.list(queryWrapper);
         data = BeanUtil.listCopyTo(list, ModuleInfoDTO.class);
-        for (ModuleInfoDTO bean : data) {
+        List<Long> ids = data.stream()
+                .map(artist -> artist.getId())
+                .collect(Collectors.toList());
+        Map<Long, List<ModuleDetail>> moduleDetailMap = new LinkedHashMap<>();
+        if (ListUtil.isNotEmpty(ids)){
             QueryWrapper wrapper = new QueryWrapper();
             wrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
-            wrapper.eq("module_id", bean.getId());
-            wrapper.orderByAsc("order_no");
+            wrapper.in("module_id", ids);
+            wrapper.orderByAsc("module_id", "order_no");
             List<ModuleDetail> moduleDetailList = moduleDetailFacade.list(wrapper);
-            List<ModuleDetailDTO> moduleDetailDTOList = BeanUtil.listCopyTo(moduleDetailList, ModuleDetailDTO.class);
+            if (ListUtil.isNotEmpty(moduleDetailList)){
+                moduleDetailMap = EntityUtil.makeEntityListMap(moduleDetailList, "moduleId");
+            }
+
+        }
+        for (ModuleInfoDTO bean : data) {
+            List<ModuleDetailDTO> moduleDetailDTOList = BeanUtil.listCopyTo(moduleDetailMap.get(bean.getId()), ModuleDetailDTO.class);
             bean.setModuleDetailDTOList(moduleDetailDTOList);
             for (ModuleDetailDTO detailDTO : moduleDetailDTOList) {
                 if (null != detailDTO.getQuestionId()) {

+ 27 - 0
icss-service/src/main/java/com/diagbot/facade/QuestionDetailFacade.java

@@ -4,10 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.entity.QuestionDetail;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.QuestionDetailServiceImpl;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 标签业务层
@@ -36,4 +41,26 @@ public class QuestionDetailFacade extends QuestionDetailServiceImpl {
         questionDetailList = this.list(queryWrapper);
         return questionDetailList;
     }
+
+    /**
+     * 根据id获取标签明细
+     *
+     * @param questionIds 标签ids
+     * @return 标签内容
+     */
+    public Map<Long, List<QuestionDetail>> getByQuestionIds(List<Long> questionIds) {
+        Map<Long, List<QuestionDetail>> map = new LinkedHashMap<>();
+        if(ListUtil.isEmpty(questionIds)) {
+            return map;
+        }
+        QueryWrapper queryWrapper = new QueryWrapper();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
+        queryWrapper.in("question_id", questionIds);
+        queryWrapper.orderByAsc("question_id", "order_no");
+        List<QuestionDetail>  questionDetailList = this.list(queryWrapper);
+        if (ListUtil.isNotEmpty(questionDetailList)){
+            map = EntityUtil.makeEntityListMap(questionDetailList, "questionId");
+        }
+        return map;
+    }
 }

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

@@ -13,9 +13,11 @@ import com.diagbot.vo.QuestionVO;
 import org.springframework.beans.factory.annotation.Autowired;
 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: 标签业务层
@@ -59,9 +61,15 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
             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);
             for(QuestionDTO bean : sonQuestionList) {
-                List<QuestionDetail> questionDetailList1 = questionDetailFacade.getByQuestionId(bean.getId());
+                List<QuestionDetail> questionDetailList1 = sonQuestionMap.get(bean.getId());
+                if (ListUtil.isEmpty(questionDetailList1)){
+                    questionDetailList1 = new ArrayList<>();
+                }
                 bean.setQuestionDetailList(questionDetailList1);
                 paramMap1.put("id", bean.getId());
                 //获取第二级子标签
@@ -69,9 +77,16 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
                 List<QuestionDTO> sonQuestionList1 = BeanUtil.listCopyTo(questionMapping1, 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 = questionDetailFacade.getByQuestionId(questionDTO.getId());
+                    List<QuestionDetail> questionDetailList2 = sonQuestionMap1.get(questionDTO.getId());
+                    if (ListUtil.isEmpty(questionDetailList2)){
+                        questionDetailList2 = new ArrayList<>();
+                    }
                     questionDTO.setQuestionDetailList(questionDetailList2);
                 }