From 8b375fe00a241b3a769b82fe3dac8d1c9dce8a02 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Thu, 16 Jun 2022 14:36:07 +0800
Subject: [PATCH] 模拟考试修改

---
 src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java |  148 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 138 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java b/src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java
index ec87cdb..03baa44 100644
--- a/src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/org/springblade/modules/exam/service/impl/ExamPaperServiceImpl.java
@@ -18,21 +18,22 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import liquibase.pro.packaged.L;
 import org.springblade.common.utils.TimeSwitchUtil;
 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.*;
-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.exam.vo.*;
 import org.springblade.modules.training.entity.TrainingRegistration;
 import org.springblade.modules.training.service.TrainingRegistrationService;
+import org.springblade.modules.vip.entity.VipTopic;
+import org.springblade.modules.vip.service.VipTopicService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -45,7 +46,7 @@
 public class ExamPaperServiceImpl extends ServiceImpl<ExamPaperMapper, ExamPaper> implements ExamPaperService {
 
 	@Autowired
-	private ExamExaminationSubjectService examExaminationSubjectService;
+	private VipTopicService vipTopicService;
 
 	@Autowired
 	private ExamAnswerRecordService examAnswerRecordService;
@@ -55,6 +56,9 @@
 
 	@Autowired
 	private ExamScoreService examScoreService;
+
+	@Autowired
+	private TrainingRegistrationService trainingRegistrationService;
 
 
 
@@ -113,8 +117,45 @@
 	public List<ExamSubjectChoicesVO> queryRandomSubject(ExamPaperVO paper) {
 		//保存题目信息
 		if (null!=paper.getScoreId()){
-			//随机分类信息
-			List<ExamSubjectChoicesVO> examSubjectChoicesVOS = baseMapper.queryRandomSubject(paper);
+			//查询该保安员是否为会员
+			ExamScore score = examScoreService.getById(paper.getScoreId());
+			TrainingRegistration trainingRegistration = trainingRegistrationService.getById(score.getApplyId());
+
+			List<ExamSubjectChoicesVO> examSubjectChoicesVOS = new ArrayList<>();
+			if (null!=trainingRegistration.getVipStatus()){
+				//如果是会员,从会员库里取题目
+				if (trainingRegistration.getVipStatus().equals(1)){
+					//查询该vip 用户的 vip 库,从该120题中取出题目
+					VipTopic vipTopic = new VipTopic();
+					vipTopic.setUserId(Long.parseLong(score.getUserId()));
+//					vipTopic.setApplyId(score.getApplyId());
+					VipTopic topic = vipTopicService.getOne(Condition.getQueryWrapper(vipTopic));
+					if (null!=topic){
+						List<String> list = Arrays.asList(topic.getTopicIds().split(","));
+//						System.out.println("list.size() = " + list.size());
+						List<String> radio = list.subList(0, 49);
+						List<String> checkbox = list.subList(50, 69);
+						List<String> judge = list.subList(70, 109);
+						List<String> sort = list.subList(110, 119);
+						//随机题目
+						List<ExamSubjectChoicesVO> radioRandomSubjectList = baseMapper.queryRandomSubjectList(radio,25);
+						List<ExamSubjectChoicesVO> checkboxRandomSubjectList = baseMapper.queryRandomSubjectList(checkbox,10);
+						List<ExamSubjectChoicesVO> judgeRandomSubjectList = baseMapper.queryRandomSubjectList(judge,20);
+						List<ExamSubjectChoicesVO> sortRandomSubjectList = baseMapper.queryRandomSubjectList(sort,5);
+						//合并集合数据
+						examSubjectChoicesVOS.addAll(radioRandomSubjectList);
+						examSubjectChoicesVOS.addAll(checkboxRandomSubjectList);
+						examSubjectChoicesVOS.addAll(judgeRandomSubjectList);
+						examSubjectChoicesVOS.addAll(sortRandomSubjectList);
+					}
+				}else {
+					//随机分类信息
+					examSubjectChoicesVOS = baseMapper.queryRandomSubject(paper);
+				}
+			}else {
+				//随机分类信息
+				examSubjectChoicesVOS = baseMapper.queryRandomSubject(paper);
+			}
 //			long before = System.currentTimeMillis();
 			List<ExamExaminationSubject> list = new ArrayList<>();
 			examSubjectChoicesVOS.forEach(examSubjectChoicesVO -> {
@@ -164,13 +205,13 @@
 
 	/**
 	 * 查询考生考试信息
-	 * @param userId 用户id
+	 * @param examPaper 用户id
 	 * @return
 	 */
 	@Override
-	public List<ExamPaperVO> getExamDetail(String userId) {
+	public List<ExamPaperVO> getExamDetail(ExamPaperVO examPaper) {
 		//查询考试信息
-		return baseMapper.getExamDetail(userId);
+		return baseMapper.getExamDetail(examPaper);
 	}
 
 	/**
@@ -259,4 +300,91 @@
 		}
 		return null;
 	}
+
+
+	/**
+	 * 查询考试统计信息
+	 * @param examPaperVO
+	 * @param page
+	 * @return
+	 */
+	@Override
+	public IPage<ExamStatisticsVO> getExamStatistics(IPage<ExamStatisticsVO> page, ExamPaperVO examPaperVO) {
+		return page.setRecords(baseMapper.getExamStatistics(page,examPaperVO));
+	}
+
+	/**
+	 * 根据考试id 统计查询考试信息
+	 * @param examPaperVO
+	 * @return
+	 */
+	@Override
+	public IPage<ExamStatisticsVO> getExamInfoByExamId(IPage<ExamStatisticsVO> page, ExamStatisticsVO examPaperVO) {
+		List<ExamStatisticsVO> statisticsVOS = baseMapper.getExamInfoByExamId(page, examPaperVO);
+		//遍历,计算占比
+		if (statisticsVOS.size()>0){
+			statisticsVOS.forEach(examStatisticsVO -> {
+				//格式化小数
+				DecimalFormat df = new DecimalFormat("0.00");
+				//返回的是String类型
+				examStatisticsVO.setAbsentProportion(df.format((float)examStatisticsVO.getQknum()/examStatisticsVO.getZnum()*100));
+				DecimalFormat df1 = new DecimalFormat("0.00");
+				examStatisticsVO.setQualifiedProportion(df1.format((float)examStatisticsVO.getYknum()/examStatisticsVO.getZnum()*100));
+			});
+		}
+		return page.setRecords(statisticsVOS);
+	}
+
+	/**
+	 * 根据考试id 统计查询考试信息
+	 * @param examScoreVO
+	 * @return
+	 */
+	@Override
+	public List<ExamStatisticsVO> getExamInfoByExamIdList(ExamScoreVO examScoreVO) {
+		List<ExamStatisticsVO> statisticsVOS = baseMapper.getExamInfoByExamIdList(examScoreVO);
+		//遍历,计算占比
+		if (statisticsVOS.size()>0){
+			statisticsVOS.forEach(examStatisticsVO -> {
+				//格式化小数
+				DecimalFormat df = new DecimalFormat("0.00");
+				//返回的是String类型
+				examStatisticsVO.setAbsentProportion(df.format((float)examStatisticsVO.getQknum()/examStatisticsVO.getZnum()*100));
+				DecimalFormat df1 = new DecimalFormat("0.00");
+				examStatisticsVO.setQualifiedProportion(df1.format((float)examStatisticsVO.getYknum()/examStatisticsVO.getZnum()*100));
+			});
+		}
+		return statisticsVOS;
+	}
+
+	/**
+	 * 查询考试成绩明细
+	 * @param examScoreVO
+	 * @return
+	 */
+	@Override
+	public List<ExamScoreVO> getExamScoreList(ExamScoreVO examScoreVO) {
+		return baseMapper.getExamScoreList(examScoreVO);
+	}
+
+
+	/**
+	 * 根据id 取出题目信息(随机取)
+	 * @param list 题目id集合
+	 * @param number 题目梳理
+	 * @return
+	 */
+	@Override
+	public List<ExamSubjectChoicesVO> queryRandomSubjectList(List<String> list, int number) {
+		return baseMapper.queryRandomSubjectList(list,number);
+	}
+
+	/**
+	 * 模拟考试随机抽题,未缴费人员
+	 * @return
+	 */
+	@Override
+	public List<ExamSubjectChoicesVO> simulateQueryRandomSubjectList() {
+		return baseMapper.simulateQueryRandomSubjectList();
+	}
 }

--
Gitblit v1.9.3