From 796f1502b6e51678a0f98a8619fad5fd19f2046c Mon Sep 17 00:00:00 2001 From: Lqc Date: Tue, 26 Aug 2025 14:07:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E8=AF=95=EF=BC=8C=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E8=80=83=E8=AF=95=E8=AF=95=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/controller/ExamBizController.java | 109 ++++++++++++++++++ .../gen/paper/controller/PaperController.java | 13 +++ .../mapper/PaperQuestionMapper.java | 2 + .../service/IPaperQuestionService.java | 3 + .../impl/PaperQuestionServiceImpl.java | 12 ++ 5 files changed, 139 insertions(+) create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ExamBizController.java diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ExamBizController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ExamBizController.java new file mode 100644 index 00000000..27548cb6 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ExamBizController.java @@ -0,0 +1,109 @@ +package org.jeecg.modules.biz.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.gen.exam.entity.Exam; +import org.jeecg.modules.gen.exam.service.IExamService; +import org.jeecg.modules.gen.examanswer.service.IExamAnswerService; +import org.jeecg.modules.gen.examrecord.service.IExamRecordService; +import org.jeecg.modules.gen.paper.entity.Paper; +import org.jeecg.modules.gen.paper.service.IPaperService; +import org.jeecg.modules.gen.paperquestion.entity.PaperQuestion; +import org.jeecg.modules.gen.paperquestion.service.IPaperQuestionService; +import org.jeecg.modules.gen.question.entity.Question; +import org.jeecg.modules.gen.question.service.IQuestionService; +import org.jeecg.modules.gen.questionrepo.entity.QuestionRepo; +import org.jeecg.modules.gen.questionrepo.service.IQuestionRepoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("/biz/exam") +@Tag(name = "考试") +@Slf4j +public class ExamBizController { + @Autowired + private IPaperService paperService; + @Autowired + private IExamService examService; + @Autowired + private IPaperQuestionService paperQuestionService; + @Autowired + private IExamAnswerService examAnswerService; + @Autowired + private IExamRecordService examRecordService; + @Autowired + private IQuestionService questionService; + @Autowired + private IQuestionRepoService questionRepoService; + + //获取考试试题 + @RequestMapping("/getExamQuestions/{examId}") + @Operation(summary = "获取考试试题") + public Result getExamQuestions(@PathVariable String examId, @RequestParam String studentId) { + Exam exam = examService.getById(examId); + if(exam.getPaperId().isEmpty()){ + return Result.error("考试未关联试卷"); + } + Paper paper = paperService.getById(exam.getPaperId()); + //题目id集合 + List questionIds; + List paperQuestions = new ArrayList<>(); + //随机组卷 + if(paper.getGenerateMode()==1){ + List list = questionRepoService.list( + new LambdaQueryWrapper(). + eq(QuestionRepo::getRepoId, paper.getRepoId()) + ); + questionIds = list.stream() + .map(QuestionRepo::getQuestionId) + .collect(Collectors.toList()); + }else { + //固定组卷 + // 获取试卷中的试题关联信息 + paperQuestions = paperQuestionService.getQuestions(paper.getId()); + + // 如果没有试题关联信息,直接返回空列表 + if (CollectionUtils.isEmpty(paperQuestions)) { + return Result.OK("试卷中没有试题"); + } + // 提取所有试题ID + questionIds = paperQuestions.stream() + .map(PaperQuestion::getQuestionId) + .collect(Collectors.toList()); + } + if (CollectionUtils.isEmpty(questionIds)) { + return Result.OK("试卷中没有试题"); + } + // 从题目表查询试题内容 + List questions = questionService.listByIds(questionIds); + + List sortedQuestions = questions; + // 将试题内容按试卷中的顺序排序 + if(paper.getGenerateMode()==0){ + Map questionMap = questions.stream() + .collect(Collectors.toMap(Question::getId, question -> question)); + sortedQuestions = paperQuestions.stream() + .sorted(Comparator.comparing(PaperQuestion::getOrderNo)) + .map(paperQuestion -> questionMap.get(paperQuestion.getQuestionId())) + .collect(Collectors.toList()); + } + // 返回排序后的试题列表 + return Result.OK(sortedQuestions); + } + + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paper/controller/PaperController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paper/controller/PaperController.java index 224ba97a..593522a3 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paper/controller/PaperController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paper/controller/PaperController.java @@ -75,6 +75,19 @@ public class PaperController extends JeecgController { IPage pageList = paperService.page(page, queryWrapper); return Result.OK(pageList); } + + //查询教师名下的试卷 + @GetMapping(value = "/listByTeacher/{teacherId}") + public Result> queryPageListByTeacher(@PathVariable String teacherId, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize + ) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("teacher_id", teacherId); + Page page = new Page(pageNo, pageSize); + IPage pageList = paperService.page(page, queryWrapper); + return Result.OK(pageList); + } /** * 添加 diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/mapper/PaperQuestionMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/mapper/PaperQuestionMapper.java index 8c7b41e4..d8ad66ee 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/mapper/PaperQuestionMapper.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/mapper/PaperQuestionMapper.java @@ -2,6 +2,7 @@ package org.jeecg.modules.gen.paperquestion.mapper; import java.util.List; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.gen.paperquestion.entity.PaperQuestion; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -12,6 +13,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @Date: 2025-08-26 * @Version: V1.0 */ +@Mapper public interface PaperQuestionMapper extends BaseMapper { } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/service/IPaperQuestionService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/service/IPaperQuestionService.java index 69a160f8..6daa9fad 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/service/IPaperQuestionService.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/service/IPaperQuestionService.java @@ -3,6 +3,8 @@ package org.jeecg.modules.gen.paperquestion.service; import org.jeecg.modules.gen.paperquestion.entity.PaperQuestion; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * @Description: 试卷试题 * @Author: jeecg-boot @@ -11,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IPaperQuestionService extends IService { + List getQuestions(String id); } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/service/impl/PaperQuestionServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/service/impl/PaperQuestionServiceImpl.java index 8a4c4c4c..594ef789 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/service/impl/PaperQuestionServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/paperquestion/service/impl/PaperQuestionServiceImpl.java @@ -1,12 +1,16 @@ package org.jeecg.modules.gen.paperquestion.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.jeecg.modules.gen.paperquestion.entity.PaperQuestion; import org.jeecg.modules.gen.paperquestion.mapper.PaperQuestionMapper; import org.jeecg.modules.gen.paperquestion.service.IPaperQuestionService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; + /** * @Description: 试卷试题 * @Author: jeecg-boot @@ -16,4 +20,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class PaperQuestionServiceImpl extends ServiceImpl implements IPaperQuestionService { + @Autowired + private PaperQuestionMapper paperQuestionMapper; + + + @Override + public List getQuestions(String id) { + return paperQuestionMapper.selectList(new LambdaQueryWrapper().eq(PaperQuestion::getPaperId, id)); + } }