package org.springblade.modules.exam.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import org.springblade.modules.exam.entity.ExamExaminationSubject; import org.springblade.modules.exam.entity.ExamPaper; import org.springblade.modules.exam.entity.ExamScore; import org.springblade.modules.exam.mapper.ExamScoreMapper; import org.springblade.modules.exam.service.ExamPaperService; import org.springblade.modules.exam.service.ExamScoreService; import org.springblade.modules.exam.vo.ExamPaperSubjectVO; import org.springblade.modules.exam.vo.ExamResultVO; import org.springblade.modules.exam.vo.ExamScoreVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; /** * 考试成绩服务实现类 * @author zhongrj */ @Service @AllArgsConstructor public class ExamScoreServiceImpl extends ServiceImpl implements ExamScoreService { private final ExamPaperService examPaperService; /** * 自定义分页数据 * @param page 分页条件 * @param examScore 考试成绩对象 * @return */ @Override public IPage selectExamScorePage(IPage page, ExamScoreVO examScore) { return page.setRecords(baseMapper.selectExamScorePage(page, examScore)); } /** * 详情 * @param examScore 考试成绩信息对象 */ @Override public ExamScoreVO selectExamScoreInfo(ExamScore examScore) { return baseMapper.selectExamScoreInfo(examScore); } /** * 保存考试成绩 * @param examScore 考试成绩信息对象 * @return */ @Override @Transactional(rollbackFor = Exception.class) public Boolean saveExamScore(ExamScoreVO examScore) { //取出考试结果 if (examScore.getExamResultVOS().size()>0){ List examResultVOS = examScore.getExamResultVOS(); //获取试卷的内容(题号,答案) ExamPaper examPaper = new ExamPaper(); examPaper.setId(examScore.getPapersId()); List examExaminationSubjects = examPaperService.queryPagerSubject(examPaper).getExamExaminationSubjects(); //比对考试结果 //声明理论得分 int theoryGrade = 0; for (int i = 0; i < examResultVOS.size(); i++) { if (examResultVOS.get(i).getValue().equals(examExaminationSubjects.get(i).getExamSubjectChoices().getAnswer())){ theoryGrade += examResultVOS.get(i).getGrade(); } } //设置理论得分 examScore.setTheoryGrade(theoryGrade); //计算总成绩 examScore.setAllGrade(theoryGrade + examScore.getLearnGrade()); //保存成绩数据 int i = baseMapper.insert(examScore); if (i>0){ //返回结果 return true; } } //返回结果 return false; } }