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