user paper exam
parent
b040539746
commit
502c83667a
|
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.qinan.cedu.model.entity.PaperExamQuestionUserDO;
|
import org.qinan.cedu.model.entity.PaperExamQuestionUserDO;
|
||||||
|
import org.qinan.cedu.model.vo.PaperExamQuestionStatVO;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
|
@ -20,4 +21,12 @@ public interface PaperExamQuestionUserMapper extends BaseMapper<PaperExamQuestio
|
||||||
* @return 作答总得分(无记录时返回0)
|
* @return 作答总得分(无记录时返回0)
|
||||||
*/
|
*/
|
||||||
BigDecimal sumAnswerScore(@Param("paperExamId") Long paperExamId);
|
BigDecimal sumAnswerScore(@Param("paperExamId") Long paperExamId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一条SQL统计一次考试的总题数与答对题数(未作答按错误计)
|
||||||
|
*
|
||||||
|
* @param paperExamId 考试记录id
|
||||||
|
* @return 总题数与答对题数(聚合查询恒返回一条记录)
|
||||||
|
*/
|
||||||
|
PaperExamQuestionStatVO countTotalAndCorrect(@Param("paperExamId") Long paperExamId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
package org.qinan.cedu.model.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 考试试题作答统计结果
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PaperExamQuestionStatVO {
|
||||||
|
|
||||||
|
@ApiModelProperty("总题数")
|
||||||
|
private Long total;
|
||||||
|
|
||||||
|
@ApiModelProperty("答对题数")
|
||||||
|
private Long correct;
|
||||||
|
}
|
||||||
|
|
@ -25,6 +25,7 @@ import org.qinan.cedu.model.entity.PaperDO;
|
||||||
import org.qinan.cedu.model.entity.PaperExamDO;
|
import org.qinan.cedu.model.entity.PaperExamDO;
|
||||||
import org.qinan.cedu.model.entity.PaperExamQuestionUserDO;
|
import org.qinan.cedu.model.entity.PaperExamQuestionUserDO;
|
||||||
import org.qinan.cedu.model.entity.QuestionDO;
|
import org.qinan.cedu.model.entity.QuestionDO;
|
||||||
|
import org.qinan.cedu.model.vo.PaperExamQuestionStatVO;
|
||||||
import org.qinan.cedu.model.vo.PaperExamVO;
|
import org.qinan.cedu.model.vo.PaperExamVO;
|
||||||
import org.qinan.cedu.model.vo.StartExamQuestionVO;
|
import org.qinan.cedu.model.vo.StartExamQuestionVO;
|
||||||
import org.qinan.cedu.model.vo.StartExamVO;
|
import org.qinan.cedu.model.vo.StartExamVO;
|
||||||
|
|
@ -239,14 +240,10 @@ public class PaperExamServiceImpl extends ServiceImpl<PaperExamMapper, PaperExam
|
||||||
if (examRecord == null) {
|
if (examRecord == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 统计总题数与答对题数,错误题数=总题数-答对题数(未作答按错误计),正确率=答对/总数*100
|
// 一条统计SQL取总题数与答对题数,错误题数=总题数-答对题数(未作答按错误计),正确率=答对/总数*100
|
||||||
long total = paperExamQuestionUserService.count(new LambdaQueryWrapper<PaperExamQuestionUserDO>()
|
PaperExamQuestionStatVO stat = paperExamQuestionUserMapper.countTotalAndCorrect(paperExam.getId());
|
||||||
.eq(PaperExamQuestionUserDO::getPaperExamId, paperExam.getId())
|
long total = stat.getTotal();
|
||||||
.eq(PaperExamQuestionUserDO::getDeleteEnum, DeleteEnum.FALSE.getCode()));
|
long correct = stat.getCorrect();
|
||||||
long correct = paperExamQuestionUserService.count(new LambdaQueryWrapper<PaperExamQuestionUserDO>()
|
|
||||||
.eq(PaperExamQuestionUserDO::getPaperExamId, paperExam.getId())
|
|
||||||
.eq(PaperExamQuestionUserDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
|
|
||||||
.eq(PaperExamQuestionUserDO::getRightStatus, BooleanQAEnum.TRUE.getValue()));
|
|
||||||
examRecord.setScore(examScore);
|
examRecord.setScore(examScore);
|
||||||
examRecord.setPassed(paperExam.getPassed());
|
examRecord.setPassed(paperExam.getPassed());
|
||||||
examRecord.setWrongCount((int) (total - correct));
|
examRecord.setWrongCount((int) (total - correct));
|
||||||
|
|
|
||||||
|
|
@ -8,4 +8,12 @@
|
||||||
WHERE paper_exam_id = #{paperExamId}
|
WHERE paper_exam_id = #{paperExamId}
|
||||||
AND delete_enum = 'false'
|
AND delete_enum = 'false'
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="countTotalAndCorrect" resultType="org.qinan.cedu.model.vo.PaperExamQuestionStatVO">
|
||||||
|
SELECT COUNT(*) AS total,
|
||||||
|
IFNULL(SUM(CASE WHEN right_status = 'true' THEN 1 ELSE 0 END), 0) AS correct
|
||||||
|
FROM paper_exam_question_user
|
||||||
|
WHERE paper_exam_id = #{paperExamId}
|
||||||
|
AND delete_enum = 'false'
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue