考试,获取考试试题
This commit is contained in:
parent
a9a2a16618
commit
796f1502b6
@ -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<String> questionIds;
|
||||||
|
List<PaperQuestion> paperQuestions = new ArrayList<>();
|
||||||
|
//随机组卷
|
||||||
|
if(paper.getGenerateMode()==1){
|
||||||
|
List<QuestionRepo> list = questionRepoService.list(
|
||||||
|
new LambdaQueryWrapper<QuestionRepo>().
|
||||||
|
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<Question> questions = questionService.listByIds(questionIds);
|
||||||
|
|
||||||
|
List<Question> sortedQuestions = questions;
|
||||||
|
// 将试题内容按试卷中的顺序排序
|
||||||
|
if(paper.getGenerateMode()==0){
|
||||||
|
Map<String, Question> 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -76,6 +76,19 @@ public class PaperController extends JeecgController<Paper, IPaperService> {
|
|||||||
return Result.OK(pageList);
|
return Result.OK(pageList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//查询教师名下的试卷
|
||||||
|
@GetMapping(value = "/listByTeacher/{teacherId}")
|
||||||
|
public Result<IPage<Paper>> queryPageListByTeacher(@PathVariable String teacherId,
|
||||||
|
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||||
|
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize
|
||||||
|
) {
|
||||||
|
QueryWrapper<Paper> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("teacher_id", teacherId);
|
||||||
|
Page<Paper> page = new Page<Paper>(pageNo, pageSize);
|
||||||
|
IPage<Paper> pageList = paperService.page(page, queryWrapper);
|
||||||
|
return Result.OK(pageList);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加
|
* 添加
|
||||||
*
|
*
|
||||||
|
@ -2,6 +2,7 @@ package org.jeecg.modules.gen.paperquestion.mapper;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.jeecg.modules.gen.paperquestion.entity.PaperQuestion;
|
import org.jeecg.modules.gen.paperquestion.entity.PaperQuestion;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
@ -12,6 +13,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|||||||
* @Date: 2025-08-26
|
* @Date: 2025-08-26
|
||||||
* @Version: V1.0
|
* @Version: V1.0
|
||||||
*/
|
*/
|
||||||
|
@Mapper
|
||||||
public interface PaperQuestionMapper extends BaseMapper<PaperQuestion> {
|
public interface PaperQuestionMapper extends BaseMapper<PaperQuestion> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ package org.jeecg.modules.gen.paperquestion.service;
|
|||||||
import org.jeecg.modules.gen.paperquestion.entity.PaperQuestion;
|
import org.jeecg.modules.gen.paperquestion.entity.PaperQuestion;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 试卷试题
|
* @Description: 试卷试题
|
||||||
* @Author: jeecg-boot
|
* @Author: jeecg-boot
|
||||||
@ -11,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
*/
|
*/
|
||||||
public interface IPaperQuestionService extends IService<PaperQuestion> {
|
public interface IPaperQuestionService extends IService<PaperQuestion> {
|
||||||
|
|
||||||
|
List<PaperQuestion> getQuestions(String id);
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
package org.jeecg.modules.gen.paperquestion.service.impl;
|
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.entity.PaperQuestion;
|
||||||
import org.jeecg.modules.gen.paperquestion.mapper.PaperQuestionMapper;
|
import org.jeecg.modules.gen.paperquestion.mapper.PaperQuestionMapper;
|
||||||
import org.jeecg.modules.gen.paperquestion.service.IPaperQuestionService;
|
import org.jeecg.modules.gen.paperquestion.service.IPaperQuestionService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 试卷试题
|
* @Description: 试卷试题
|
||||||
* @Author: jeecg-boot
|
* @Author: jeecg-boot
|
||||||
@ -16,4 +20,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
@Service
|
@Service
|
||||||
public class PaperQuestionServiceImpl extends ServiceImpl<PaperQuestionMapper, PaperQuestion> implements IPaperQuestionService {
|
public class PaperQuestionServiceImpl extends ServiceImpl<PaperQuestionMapper, PaperQuestion> implements IPaperQuestionService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PaperQuestionMapper paperQuestionMapper;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PaperQuestion> getQuestions(String id) {
|
||||||
|
return paperQuestionMapper.selectList(new LambdaQueryWrapper<PaperQuestion>().eq(PaperQuestion::getPaperId, id));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user