user paper exam

dev-tmp1
luotaiqian 2026-08-24 15:18:41 +08:00
parent b040539746
commit 502c83667a
4 changed files with 39 additions and 8 deletions

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.qinan.cedu.model.entity.PaperExamQuestionUserDO;
import org.qinan.cedu.model.vo.PaperExamQuestionStatVO;
import java.math.BigDecimal;
@ -20,4 +21,12 @@ public interface PaperExamQuestionUserMapper extends BaseMapper<PaperExamQuestio
* @return 0
*/
BigDecimal sumAnswerScore(@Param("paperExamId") Long paperExamId);
/**
* SQL
*
* @param paperExamId id
* @return
*/
PaperExamQuestionStatVO countTotalAndCorrect(@Param("paperExamId") Long paperExamId);
}

View File

@ -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;
}

View File

@ -25,6 +25,7 @@ import org.qinan.cedu.model.entity.PaperDO;
import org.qinan.cedu.model.entity.PaperExamDO;
import org.qinan.cedu.model.entity.PaperExamQuestionUserDO;
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.StartExamQuestionVO;
import org.qinan.cedu.model.vo.StartExamVO;
@ -239,14 +240,10 @@ public class PaperExamServiceImpl extends ServiceImpl<PaperExamMapper, PaperExam
if (examRecord == null) {
return;
}
// 统计总题数与答对题数,错误题数=总题数-答对题数(未作答按错误计),正确率=答对/总数*100
long total = paperExamQuestionUserService.count(new LambdaQueryWrapper<PaperExamQuestionUserDO>()
.eq(PaperExamQuestionUserDO::getPaperExamId, paperExam.getId())
.eq(PaperExamQuestionUserDO::getDeleteEnum, DeleteEnum.FALSE.getCode()));
long correct = paperExamQuestionUserService.count(new LambdaQueryWrapper<PaperExamQuestionUserDO>()
.eq(PaperExamQuestionUserDO::getPaperExamId, paperExam.getId())
.eq(PaperExamQuestionUserDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
.eq(PaperExamQuestionUserDO::getRightStatus, BooleanQAEnum.TRUE.getValue()));
// 一条统计SQL取总题数与答对题数错误题数=总题数-答对题数(未作答按错误计),正确率=答对/总数*100
PaperExamQuestionStatVO stat = paperExamQuestionUserMapper.countTotalAndCorrect(paperExam.getId());
long total = stat.getTotal();
long correct = stat.getCorrect();
examRecord.setScore(examScore);
examRecord.setPassed(paperExam.getPassed());
examRecord.setWrongCount((int) (total - correct));

View File

@ -8,4 +8,12 @@
WHERE paper_exam_id = #{paperExamId}
AND delete_enum = 'false'
</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>