user paper exam
parent
2866589177
commit
107ae45d48
|
|
@ -8,6 +8,7 @@ import lombok.RequiredArgsConstructor;
|
|||
import org.qinan.cedu.model.dto.AnswerQuestionDTO;
|
||||
import org.qinan.cedu.model.dto.StartExamDTO;
|
||||
import org.qinan.cedu.model.dto.SubmitExamDTO;
|
||||
import org.qinan.cedu.model.vo.PaperExamDetailVO;
|
||||
import org.qinan.cedu.model.vo.PaperExamInfoVO;
|
||||
import org.qinan.cedu.model.vo.StartExamVO;
|
||||
import org.qinan.cedu.service.PaperExamService;
|
||||
|
|
@ -62,12 +63,12 @@ public class PaperExamController {
|
|||
}
|
||||
|
||||
/**
|
||||
* 考试试卷信息查询:根据考试记录id查询试卷考试信息(含试题列表及参考答案)
|
||||
* 考试试卷信息查询:根据考试记录id查询试卷考试信息(含试题列表、参考答案及用户作答信息)
|
||||
*/
|
||||
@ApiOperation("考试试卷信息查询")
|
||||
@GetMapping("/exam/info")
|
||||
public SingleResponse<PaperExamInfoVO> paperExamInfo(@RequestParam("paperExamId") @ApiParam(value = "考试试卷id", required = true) Long paperExamId) {
|
||||
PaperExamInfoVO examInfo = paperExamService.paperExamInfo(paperExamId);
|
||||
public SingleResponse<PaperExamDetailVO> paperExamInfo(@RequestParam("paperExamId") @ApiParam(value = "考试试卷id", required = true) Long paperExamId) {
|
||||
PaperExamDetailVO examInfo = paperExamService.paperExamInfo(paperExamId);
|
||||
return SingleResponse.success(examInfo);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,12 +63,12 @@ public interface QuestionMapper extends BaseMapper<QuestionDO> {
|
|||
List<StartExamQuestionVO> listExamQuestions(@Param("paperId") Long paperId);
|
||||
|
||||
/**
|
||||
* 按考试作答记录查询试题列表(关联试题表,分值取作答记录中的试题分数,仅查询需要的字段)
|
||||
* 按考试作答记录查询试题列表(关联试题表,含用户作答答案、作答状态、正确状态、试题分数及作答得分)
|
||||
*
|
||||
* @param paperExamId 考试记录id
|
||||
* @return 试题VO列表
|
||||
* @return 试题VO列表(含用户作答信息)
|
||||
*/
|
||||
List<QuestionVO> listPaperExamQuestions(@Param("paperExamId") Long paperExamId);
|
||||
List<PaperExamQuestionVO> listPaperExamQuestions(@Param("paperExamId") Long paperExamId);
|
||||
|
||||
/**
|
||||
* 按题型统计试题数量(按关联课件过滤,一条SQL聚合)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
package org.qinan.cedu.model.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 考试试卷详情(含试题列表、参考答案及用户作答信息)
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "PaperExamDetailVO", description = "考试试卷详情(含用户作答信息)")
|
||||
public class PaperExamDetailVO {
|
||||
|
||||
@ApiModelProperty("试卷基本信息")
|
||||
private PaperBasicInfoVO paperBasicInfoVO;
|
||||
|
||||
@ApiModelProperty("试题信息(含用户作答信息)")
|
||||
private List<PaperExamQuestionVO> questionVOList;
|
||||
}
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
package org.qinan.cedu.model.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 考试试卷试题项(试题信息 + 用户作答记录信息)
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "PaperExamQuestionVO", description = "考试试卷试题项(含用户作答信息)")
|
||||
public class PaperExamQuestionVO {
|
||||
|
||||
@ApiModelProperty("用户作答答案")
|
||||
private String userAnswer;
|
||||
|
||||
@ApiModelProperty("用户作答答案选项id 多个逗号隔开")
|
||||
private String userAnswerQuestionOptionIds;
|
||||
|
||||
@ApiModelProperty("作答状态 non 未作答,done 已作答")
|
||||
private String answerStatus;
|
||||
|
||||
@ApiModelProperty("正确状态 false 作答错误,true 作答正确")
|
||||
private String rightStatus;
|
||||
|
||||
@ApiModelProperty("试题分数")
|
||||
private BigDecimal questionScore;
|
||||
|
||||
@ApiModelProperty("作答得分")
|
||||
private BigDecimal answerScore;
|
||||
|
||||
@ApiModelProperty("主键")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("题目内容")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty("题型:single单选/multiple多选/judge判断/fill填空/short简答")
|
||||
private String questionType;
|
||||
|
||||
@ApiModelProperty("参考答案:逗号隔开")
|
||||
private String answer;
|
||||
|
||||
@ApiModelProperty("答案选项id 多个逗号隔开")
|
||||
private String answerQuestionOptionIds;
|
||||
|
||||
@ApiModelProperty("子题 多个逗号分割")
|
||||
private String childrenQuestionIds;
|
||||
|
||||
@ApiModelProperty("分值")
|
||||
private BigDecimal score;
|
||||
|
||||
@ApiModelProperty("答案解析")
|
||||
private String analysis;
|
||||
|
||||
@ApiModelProperty("标签类型")
|
||||
private String tagType;
|
||||
|
||||
@ApiModelProperty("关联课件管理id")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long coursewareManagementId;
|
||||
|
||||
@ApiModelProperty("关联课件管理名称")
|
||||
private String coursewareManagementName;
|
||||
|
||||
@ApiModelProperty("试题选项信息")
|
||||
private List<QuestionOptionVO> questionOptionVOList;
|
||||
/**
|
||||
* 来源(1:管理员添加,2:三方添加)
|
||||
*/
|
||||
private Integer source;
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ import org.qinan.cedu.model.dto.PaperExamPageQueryDTO;
|
|||
import org.qinan.cedu.model.dto.StartExamDTO;
|
||||
import org.qinan.cedu.model.dto.SubmitExamDTO;
|
||||
import org.qinan.cedu.model.entity.PaperExamDO;
|
||||
import org.qinan.cedu.model.vo.PaperExamInfoVO;
|
||||
import org.qinan.cedu.model.vo.PaperExamDetailVO;
|
||||
import org.qinan.cedu.model.vo.PaperExamVO;
|
||||
import org.qinan.cedu.model.vo.StartExamVO;
|
||||
|
||||
|
|
@ -82,10 +82,10 @@ public interface PaperExamService extends IService<PaperExamDO> {
|
|||
void submitExam(SubmitExamDTO dto, Long userId);
|
||||
|
||||
/**
|
||||
* 查询考试试卷的试卷考试信息(含试题列表及参考答案)
|
||||
* 查询考试试卷的试卷考试信息(含试题列表、参考答案及用户作答信息)
|
||||
*
|
||||
* @param paperExamId 考试试卷id
|
||||
* @return 试卷考试信息
|
||||
* @return 试卷考试信息(含用户作答信息)
|
||||
*/
|
||||
PaperExamInfoVO paperExamInfo(Long paperExamId);
|
||||
PaperExamDetailVO paperExamInfo(Long paperExamId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@ public class PaperExamServiceImpl extends ServiceImpl<PaperExamMapper, PaperExam
|
|||
}
|
||||
|
||||
@Override
|
||||
public PaperExamInfoVO paperExamInfo(Long paperExamId) {
|
||||
public PaperExamDetailVO paperExamInfo(Long paperExamId) {
|
||||
PaperExamDO paperExam = this.lambdaQuery()
|
||||
.eq(PaperExamDO::getId, paperExamId)
|
||||
.eq(PaperExamDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
|
||||
|
|
@ -215,13 +215,13 @@ public class PaperExamServiceImpl extends ServiceImpl<PaperExamMapper, PaperExam
|
|||
if (paperExam == null) {
|
||||
throw new IllegalArgumentException("考试试卷不存在");
|
||||
}
|
||||
PaperExamInfoVO examInfoVO = new PaperExamInfoVO();
|
||||
examInfoVO.setPaperBasicInfoVO(paperService.paperBasicInfo(paperExam.getPaperId()));
|
||||
// 试题按考试作答记录关联查询(分值取作答记录中的试题分数)并填充选项
|
||||
List<QuestionVO> questionVOList = questionMapper.listPaperExamQuestions(paperExamId);
|
||||
PaperExamDetailVO examDetailVO = new PaperExamDetailVO();
|
||||
examDetailVO.setPaperBasicInfoVO(paperService.paperBasicInfo(paperExam.getPaperId()));
|
||||
// 试题按考试作答记录关联查询(含用户作答答案、作答状态、得分)并填充选项
|
||||
List<PaperExamQuestionVO> questionVOList = questionMapper.listPaperExamQuestions(paperExamId);
|
||||
fillQuestionOptions(questionVOList);
|
||||
examInfoVO.setQuestionVOList(questionVOList);
|
||||
return examInfoVO;
|
||||
examDetailVO.setQuestionVOList(questionVOList);
|
||||
return examDetailVO;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -229,7 +229,7 @@ public class PaperExamServiceImpl extends ServiceImpl<PaperExamMapper, PaperExam
|
|||
*
|
||||
* @param questionVOList 试题VO列表
|
||||
*/
|
||||
private void fillQuestionOptions(List<QuestionVO> questionVOList) {
|
||||
private void fillQuestionOptions(List<PaperExamQuestionVO> questionVOList) {
|
||||
if (CollectionUtils.isEmpty(questionVOList)) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,10 +91,12 @@
|
|||
ORDER BY pqr.question_num ASC, pqr.id ASC
|
||||
</select>
|
||||
|
||||
<select id="listPaperExamQuestions" resultType="org.qinan.cedu.model.vo.QuestionVO">
|
||||
<select id="listPaperExamQuestions" resultType="org.qinan.cedu.model.vo.PaperExamQuestionVO">
|
||||
SELECT q.id, q.title, q.question_type, q.answer, q.answer_question_option_ids
|
||||
, pequ.question_score AS score, q.analysis, q.tag_type, q.courseware_management_id
|
||||
, cm.courseware_name AS coursewareManagementName
|
||||
, pequ.user_answer, pequ.user_answer_question_option_ids
|
||||
, pequ.answer_status, pequ.right_status, pequ.question_score, pequ.answer_score
|
||||
FROM paper_exam_question_user pequ
|
||||
JOIN question q ON pequ.question_id = q.id
|
||||
LEFT JOIN courseware_management cm ON cm.id = q.courseware_management_id
|
||||
|
|
|
|||
Loading…
Reference in New Issue