From b661bcf7e065092c876e052bad0bfaecb9dc0c17 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期二, 12 十一月 2024 21:21:06 +0800
Subject: [PATCH] 优化错题查询

---
 src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java |   70 +++++------------------------------
 1 files changed, 10 insertions(+), 60 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java
index 70aa8fe..03736e3 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/WrongServiceImpl.java
@@ -1,19 +1,24 @@
 package com.ycl.jxkg.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.ycl.jxkg.domain.entity.ExamPaperScore;
 import com.ycl.jxkg.domain.entity.Question;
+import com.ycl.jxkg.domain.entity.QuestionAnswerRecord;
 import com.ycl.jxkg.domain.vo.DoQuestionVO;
 import com.ycl.jxkg.domain.vo.PaperFixQuestionVO;
 import com.ycl.jxkg.domain.vo.student.wrong.WrongPageVo;
 import com.ycl.jxkg.domain.vo.student.wrong.WrongRequestVo;
 import com.ycl.jxkg.domain.vo.student.wrong.WrongResponseVO;
 import com.ycl.jxkg.mapper.ExamPaperScoreMapper;
+import com.ycl.jxkg.mapper.QuestionAnswerRecordMapper;
 import com.ycl.jxkg.mapper.QuestionMapper;
 import com.ycl.jxkg.service.WrongService;
 import com.ycl.jxkg.utils.JsonUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -30,6 +35,8 @@
     private ExamPaperScoreMapper examPaperScoreMapper;
     @Autowired
     private QuestionMapper questionMapper;
+    @Autowired
+    private QuestionAnswerRecordMapper questionAnswerRecordMapper;
 
 
 
@@ -37,66 +44,9 @@
      * 鏉′欢鏌ヨ閿欓
      * */
     @Override
-    public WrongResponseVO list(WrongRequestVo wrongRequestVo) {
-        WrongResponseVO wrongResponseVO = new WrongResponseVO();
-        // 鏌ヨ璇ョ敤鎴风殑鎵�鏈夎�冭瘯
-        List<ExamPaperScore> examPaperScores = examPaperScoreMapper.selectByUserId(wrongRequestVo.getUserId());
-        List<DoQuestionVO> questions = new ArrayList<>();
-        // 閬嶅巻鎵�鏈夎�冭瘯鑾峰緱鑰冭瘯璇︽儏
-        examPaperScores.stream().forEach(examPaperScore -> {
-            try{
-                // 瑙f瀽json瀛楃涓�
-                List<PaperFixQuestionVO> paperFixQuestionVOS = JsonUtil.toJsonListObject(examPaperScore.getPaperContent(), PaperFixQuestionVO.class);
-                paperFixQuestionVOS.stream().forEach(paperFixQuestionVO -> {
-                    List<DoQuestionVO> doQuestionVOS = paperFixQuestionVO.getQuestionList().stream()
-                            .filter(doQuestionVO -> !doQuestionVO.getRight())
-                            .map(doQuestionVO -> {
-                                // 鏍规嵁id鏌ヨ棰樺共
-                                Question question = questionMapper.selectOne(new LambdaQueryWrapper<>(Question.class).eq(Question::getId, doQuestionVO.getId()));
-//                                Question question = questionMapper.selectById(doQuestionVO.getId());
-                                doQuestionVO.setExamId(examPaperScore.getExamId());
-                                doQuestionVO.setExamName(examPaperScore.getExamName());
-                                doQuestionVO.setTitle(question.getTitle());
-                                // 鑰冭瘯缁撴灉璁板綍id
-                                doQuestionVO.setId(examPaperScore.getId());
-                                return doQuestionVO;
-                            })
-                            .collect(Collectors.toList());
-                    questions.addAll(doQuestionVOS);
-                });
-            }catch (Exception e){
-                e.printStackTrace();
-            }
+    public PageInfo<WrongResponseVO> list(WrongRequestVo wrongRequestVo) {
+        return PageHelper.startPage(wrongRequestVo.getPageIndex(), wrongRequestVo.getPageSize()).doSelectPageInfo(() -> {
+            questionAnswerRecordMapper.selectWrongQuestion(wrongRequestVo);
         });
-        // 鏉′欢鏌ヨ
-        // 瀵归泦鍚堜腑鐨勯鐩繘琛屾ā绯婃煡璇㈣繃婊�
-        List<DoQuestionVO> doQuestionVOS = questions.stream()
-                // 鏍囬涓嶄负绌烘垨绌哄瓧绗︿覆锛屾ā绯婃煡璇�
-                .filter(question -> {
-                    if (wrongRequestVo.getTitle() == null || wrongRequestVo.getTitle().trim().isEmpty()) {
-                        return true;
-                    }
-                    return Optional.ofNullable(question.getTitle()).orElse("").toLowerCase().contains(wrongRequestVo.getTitle().toLowerCase());
-                })
-                .filter(question -> {
-                    if (wrongRequestVo.getQuestionType() == null) {
-                        return true;
-                    }
-                    return question.getQuestionType().equals(wrongRequestVo.getQuestionType());
-                })
-                .filter(question -> {
-                    if (wrongRequestVo.getExamName() == null || wrongRequestVo.getExamName().trim().isEmpty()) {
-                        return true;
-                    }
-                    return Optional.ofNullable(question.getExamName()).orElse("").toLowerCase().contains(wrongRequestVo.getExamName().toLowerCase());
-                })
-                .collect(Collectors.toList());
-        // 鍒嗛〉
-        List<DoQuestionVO> list = doQuestionVOS.stream().skip((wrongRequestVo.getPageIndex() - 1) * wrongRequestVo.getPageSize()).collect(Collectors.toList()).stream().limit(wrongRequestVo.getPageSize()).collect(Collectors.toList());
-        wrongResponseVO.setList(list);
-        wrongResponseVO.setTotal(doQuestionVOS.size());
-        wrongResponseVO.setPageSize(wrongRequestVo.getPageSize());
-        wrongResponseVO.setPageIndex(wrongRequestVo.getPageIndex());
-        return wrongResponseVO;
     }
 }

--
Gitblit v1.8.0