| | |
| | | */ |
| | | package org.springblade.modules.exam.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springblade.modules.exam.entity.ExamPaper; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.modules.apply.entity.Apply; |
| | | import org.springblade.modules.exam.entity.*; |
| | | import org.springblade.modules.exam.mapper.ExamPaperMapper; |
| | | import org.springblade.modules.exam.service.ExamPaperService; |
| | | import org.springblade.modules.exam.service.*; |
| | | import org.springblade.modules.exam.vo.ExamPaperSubjectVO; |
| | | import org.springblade.modules.exam.vo.ExamPaperVO; |
| | | import org.springblade.modules.exam.vo.ExamScoreVO; |
| | | import org.springblade.modules.exam.vo.ExamSubjectChoicesVO; |
| | | import org.springblade.modules.training.entity.TrainingRegistration; |
| | | import org.springblade.modules.training.service.TrainingRegistrationService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 服务实现类 |
| | |
| | | @Service |
| | | public class ExamPaperServiceImpl extends ServiceImpl<ExamPaperMapper, ExamPaper> implements ExamPaperService { |
| | | |
| | | @Autowired |
| | | private ExamExaminationSubjectService examExaminationSubjectService; |
| | | |
| | | @Autowired |
| | | private ExamAnswerRecordService examAnswerRecordService; |
| | | |
| | | @Autowired |
| | | private ExamSubjectChoicesService examSubjectChoicesService; |
| | | |
| | | @Autowired |
| | | private ExamScoreService examScoreService; |
| | | |
| | | |
| | | |
| | | @Override |
| | | public IPage<ExamPaperVO> selectExamPaperPages(IPage<ExamScoreVO> page, ExamPaperVO exam) { |
| | | return baseMapper.selectExamPaperPages(page,exam); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 自定义查询 |
| | | * @param page 分页条件 |
| | | * @param examPaperVO 查询参数 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public IPage<ExamPaperVO> selectExamPaperPage(IPage<ExamScoreVO> page, ExamPaperVO examPaperVO) { |
| | | IPage<ExamPaperVO> examPaperVOIPage = baseMapper.selectExamPaperPage(page, examPaperVO); |
| | | List<ExamPaperVO> records = examPaperVOIPage.getRecords(); |
| | | records.forEach(examPaperVO1 -> { |
| | | //查询每个考试的报名人员数量 |
| | | if (examPaperVO1.getExamType()==1) { |
| | | examPaperVO1.setNum(baseMapper.getApplyNumber(examPaperVO1)); |
| | | } |
| | | //模拟考试 |
| | | if (examPaperVO1.getExamType()==2) { |
| | | examPaperVO1.setNum(baseMapper.getTrainNumber(examPaperVO1)); |
| | | } |
| | | }); |
| | | return examPaperVOIPage; |
| | | } |
| | | |
| | | @Override |
| | | public ExamPaperSubjectVO queryPagerSubject(ExamPaper paper) { |
| | | //查询试卷分类信息 |
| | | |
| | | return baseMapper.queryPagerSubject(paper); |
| | | } |
| | | |
| | | @Override |
| | | public List<ExamSubjectChoicesVO> queryRandomSubject(ExamPaperVO paper) { |
| | | //保存题目信息 |
| | | if (null!=paper.getScoreId()){ |
| | | //随机分类信息 |
| | | List<ExamSubjectChoicesVO> examSubjectChoicesVOS = baseMapper.queryRandomSubject(paper); |
| | | // long before = System.currentTimeMillis(); |
| | | List<ExamExaminationSubject> list = new ArrayList<>(); |
| | | examSubjectChoicesVOS.forEach(examSubjectChoicesVO -> { |
| | | //新增个人对应每场考试成绩试卷 |
| | | ExamExaminationSubject ksxtSginup = new ExamExaminationSubject(); |
| | | ksxtSginup.setExaminationId(paper.getScoreId()); |
| | | ksxtSginup.setCategoryId(examSubjectChoicesVO.getChoicesType()); |
| | | ksxtSginup.setSubjectId(examSubjectChoicesVO.getId()); |
| | | //新增 |
| | | // examExaminationSubjectService.save(ksxtSginup); |
| | | list.add(ksxtSginup); |
| | | }); |
| | | //批量新增 |
| | | baseMapper.insertBatch(list); |
| | | // long after = System.currentTimeMillis(); |
| | | // System.out.println("时间差"+(after-before)); |
| | | //新增试卷关联信息 |
| | | return examSubjectChoicesVOS; |
| | | } |
| | | //返回 |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public ExamPaperSubjectVO PagerSubject(ExamPaper paper) { |
| | | //查询试卷分类信息 |
| | | return baseMapper.PagerSubject(paper); |
| | | } |
| | | |
| | | /** |
| | | * 自定义树 |
| | | * @param examPaper 试卷对象 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<ExamPaper> selectExamPaperPageTree(ExamPaper examPaper) { |
| | | return baseMapper.selectExamPaperPageTree(examPaper); |
| | | } |
| | | |
| | | @Override |
| | | public boolean UnbindSubject(String paperid, String subjectid) { |
| | | return baseMapper.UnbindSubject(paperid,subjectid); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询考生考试信息 |
| | | * @param userId 用户id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<ExamPaperVO> getExamDetail(String userId) { |
| | | //查询考试信息 |
| | | return baseMapper.getExamDetail(userId); |
| | | } |
| | | |
| | | /** |
| | | * 查询是当前前缀已生成准考证号码最大的一位 |
| | | * @param result 前缀 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public int getCandidateNoCount(String result) { |
| | | return baseMapper.getCandidateNoCount(result); |
| | | } |
| | | |
| | | /** |
| | | * 查询当前考试已报名的人员培训报名数据集合 |
| | | * @param id 考试id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<TrainingRegistration> getTrainList(Long id) { |
| | | return baseMapper.getTrainList(id); |
| | | } |
| | | |
| | | /** |
| | | * 使用考试名称匹配考试信息 |
| | | * @param examName 考试名称 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ExamPaper getExamInfoByExamName(String examName) { |
| | | return baseMapper.getExamInfoByExamName(examName); |
| | | } |
| | | |
| | | /** |
| | | * 根据用户id查询报名信息 |
| | | * @param userId 用户id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<Apply> getApplyDetail(String userId) { |
| | | return baseMapper.getApplyDetail(userId); |
| | | } |
| | | |
| | | /** |
| | | * 考试中页面刷新,1查询所有的答题信息,2查询所有的已答信息 3.下一题信息 3其他信息 |
| | | * @param examPaperVO 必须包含 scoreId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Map<String, Object> getExamRefreshInfo(ExamPaperVO examPaperVO) { |
| | | if (null!=examPaperVO.getScoreId()) { |
| | | Map<String, Object> map = new HashMap<>(4); |
| | | //1.查询当前人员当前考试的考试题目信息 |
| | | List<ExamSubjectChoicesVO> examSubjectChoicesVOSList = baseMapper.getExaminationSubjectList(examPaperVO); |
| | | |
| | | //2.查询当前人员已答的题目信息 |
| | | ExamAnswerRecord examAnswerRecord = new ExamAnswerRecord(); |
| | | examAnswerRecord.setScoreId(examPaperVO.getScoreId()); |
| | | List<ExamAnswerRecord> examAnswerRecordList = examAnswerRecordService.list(Condition.getQueryWrapper(examAnswerRecord)); |
| | | |
| | | //3.查询正在答题的信息 |
| | | int count = examAnswerRecordList.size(); |
| | | //查询下一题题目信息 |
| | | ExamSubjectChoicesVO examSubjectChoicesVO = new ExamSubjectChoicesVO(); |
| | | ExamSubjectChoices examSubjectChoices = new ExamSubjectChoices(); |
| | | if (count>0) { |
| | | examSubjectChoices.setId(examSubjectChoicesVOSList.get(count).getId()); |
| | | examSubjectChoicesVO = examSubjectChoicesService.selectExamSubjectChoicesInfo(examSubjectChoices); |
| | | } |
| | | if (count==0) { |
| | | examSubjectChoices.setId(examSubjectChoicesVOSList.get(0).getId()); |
| | | examSubjectChoicesVO = examSubjectChoicesService.selectExamSubjectChoicesInfo(examSubjectChoices); |
| | | } |
| | | |
| | | //4.其他信息 |
| | | ExamScore examScore = examScoreService.getById(examPaperVO.getScoreId()); |
| | | |
| | | |
| | | //5.数据封装 |
| | | map.put("examSubjectChoicesVOSList",examSubjectChoicesVOSList); |
| | | map.put("examAnswerRecordList",examAnswerRecordList); |
| | | map.put("examSubjectChoicesVO",examSubjectChoicesVO); |
| | | map.put("examScore",examScore); |
| | | |
| | | //6.返回数据 |
| | | return map; |
| | | } |
| | | return null; |
| | | } |
| | | } |