From 9d302111702046f508c45080b5fcb3b8fd54e247 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 09 Mar 2022 13:42:45 +0800
Subject: [PATCH] 开始模拟考试,根据人员是否缴费来判断加载考试的题库

---
 src/main/java/org/springblade/modules/simulateexam/service/impl/SimulateExamRecordServiceImpl.java |  118 ++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 85 insertions(+), 33 deletions(-)

diff --git a/src/main/java/org/springblade/modules/simulateexam/service/impl/SimulateExamRecordServiceImpl.java b/src/main/java/org/springblade/modules/simulateexam/service/impl/SimulateExamRecordServiceImpl.java
index 8e646bd..936640a 100644
--- a/src/main/java/org/springblade/modules/simulateexam/service/impl/SimulateExamRecordServiceImpl.java
+++ b/src/main/java/org/springblade/modules/simulateexam/service/impl/SimulateExamRecordServiceImpl.java
@@ -6,11 +6,14 @@
 import org.redisson.misc.Hash;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
+import org.springblade.modules.apply.entity.Apply;
 import org.springblade.modules.exam.entity.ExamAnswerRecord;
+import org.springblade.modules.exam.entity.ExamPaper;
 import org.springblade.modules.exam.entity.ExamScore;
 import org.springblade.modules.exam.entity.ExamSubjectChoices;
 import org.springblade.modules.exam.service.ExamPaperService;
 import org.springblade.modules.exam.service.ExamSubjectChoicesService;
+import org.springblade.modules.exam.vo.ExamResultVO;
 import org.springblade.modules.exam.vo.ExamSubjectChoicesVO;
 import org.springblade.modules.simulateexam.entity.SimulateExamAnswerRecord;
 import org.springblade.modules.simulateexam.entity.SimulateExamRecord;
@@ -18,15 +21,19 @@
 import org.springblade.modules.simulateexam.service.SimulateExamAnswerRecordService;
 import org.springblade.modules.simulateexam.service.SimulateExamRecordService;
 import org.springblade.modules.simulateexam.vo.SimulateExamRecordVO;
+import org.springblade.modules.simulateexam.vo.SimulateExamScoreVO;
 import org.springblade.modules.system.entity.User;
 import org.springblade.modules.system.service.IUserService;
+import org.springblade.modules.system.vo.UserVO;
 import org.springblade.modules.training.entity.TrainingRegistration;
 import org.springblade.modules.vip.entity.VipTopic;
+import org.springblade.modules.vip.service.UserVipService;
 import org.springblade.modules.vip.service.VipTopicService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.lang.reflect.Array;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -44,6 +51,9 @@
 
 	@Autowired
 	private VipTopicService vipTopicService;
+
+	@Autowired
+	private UserVipService userVipService;
 
 	@Autowired
 	private IUserService userService;
@@ -81,9 +91,10 @@
 		user.setCardid(simulateExamRecord.getIdCardNo());
 		List<User> list = userService.list(Condition.getQueryWrapper(user));
 		List<ExamSubjectChoicesVO> choicesVOList = new ArrayList<>();
+		boolean status = false;
 		if (list.size()>0){
 			User user1 = list.get(0);
-			//查询当前人员的考试题库,已缴费id
+			//查询当前人员是否已缴费
 			VipTopic vipTopic = new VipTopic();
 			vipTopic.setUserId(user1.getId());
 			VipTopic topic = vipTopicService.getOne(Condition.getQueryWrapper(vipTopic));
@@ -99,44 +110,44 @@
 				List<ExamSubjectChoicesVO> radioRandomSubjectList = examPaperService.queryRandomSubjectList(radio,25);
 				List<ExamSubjectChoicesVO> checkboxRandomSubjectList = examPaperService.queryRandomSubjectList(checkbox,10);
 				List<ExamSubjectChoicesVO> judgeRandomSubjectList = examPaperService.queryRandomSubjectList(judge,20);
-//				List<ExamSubjectChoicesVO> sortRandomSubjectList = examPaperService.queryRandomSubjectList(sort,5);
+				List<ExamSubjectChoicesVO> sortRandomSubjectList = examPaperService.queryRandomSubjectList(sort,5);
 
 				//合并集合数据
 				choicesVOList.addAll(radioRandomSubjectList);
 				choicesVOList.addAll(checkboxRandomSubjectList);
 				choicesVOList.addAll(judgeRandomSubjectList);
-//				choicesVOList.addAll(sortRandomSubjectList);
-
-				//取出考试id
-				List<Long> longList = choicesVOList.stream().map(ExamSubjectChoicesVO::getId).collect(Collectors.toList());
-				//装换为字符串
-				List<String> list2 = new ArrayList<>();
-				for (Long aLong : longList) {
-					list2.add(aLong.toString());
-				}
-				String collect = list2.stream().collect(Collectors.joining(","));
-				//设置题目信息
-				simulateExamRecord.setSubjectIds(collect);
-				simulateExamRecord.setStartTime(new Date());
-				//考试剩余时长初始值为60分钟
-				simulateExamRecord.setAnswerTime(60*60*1000L);
-				//考试中,开始计时
-				simulateExamRecord.setStatus(1);
-				//新增模拟考试记录信息
-				boolean status = this.save(simulateExamRecord);
-
-				ExamSubjectChoices examSubjectChoices = new ExamSubjectChoices();
-				examSubjectChoices.setId(choicesVOList.get(0).getId());
-				ExamSubjectChoicesVO examSubjectChoicesVO = examSubjectChoicesService.selectExamSubjectChoicesInfo(examSubjectChoices);
-				if (status){
-					map.put("simulateExamRecord",simulateExamRecord);
-					map.put("examSubjectInfo",choicesVOList);
-					map.put("examSubjectChoicesVO",examSubjectChoicesVO);
-					//返回信息
-					return map;
-				}
+				choicesVOList.addAll(sortRandomSubjectList);
 			}else {
-				throw new ServiceException("未查询到该人员缴费信息");
+				//未缴费人员从大题库随机抽取60道题目
+				choicesVOList = examPaperService.simulateQueryRandomSubjectList();
+			}
+			//取出考试id
+			List<Long> longList = choicesVOList.stream().map(ExamSubjectChoicesVO::getId).collect(Collectors.toList());
+			//装换为字符串
+			List<String> list2 = new ArrayList<>();
+			for (Long aLong : longList) {
+				list2.add(aLong.toString());
+			}
+			String collect = list2.stream().collect(Collectors.joining(","));
+			//设置题目信息
+			simulateExamRecord.setSubjectIds(collect);
+			simulateExamRecord.setStartTime(new Date());
+			//考试剩余时长初始值为60分钟
+			simulateExamRecord.setAnswerTime(60*60*1000L);
+			//考试中,开始计时
+			simulateExamRecord.setStatus(1);
+			//新增模拟考试记录信息
+			status = this.save(simulateExamRecord);
+
+//				ExamSubjectChoices examSubjectChoices = new ExamSubjectChoices();
+//				examSubjectChoices.setId(choicesVOList.get(0).getId());
+//				ExamSubjectChoicesVO examSubjectChoicesVO = examSubjectChoicesService.selectExamSubjectChoicesInfo(examSubjectChoices);
+			if (status){
+				map.put("simulateExamRecord",simulateExamRecord);
+				map.put("examSubjectInfo",choicesVOList);
+//					map.put("examSubjectChoicesVO",examSubjectChoicesVO);
+				//返回信息
+				return map;
 			}
 		}else {
 			throw new ServiceException("未查询到该人员信息");
@@ -240,4 +251,45 @@
 		}
 		return null;
 	}
+
+	/**
+	 * 提交考试
+	 * @param simulateExamScore 模拟考试成绩信息对象
+	 * @return
+	 */
+	@Override
+	public Object saveSimulateExam(SimulateExamScoreVO simulateExamScore) {
+		//取出考试结果
+		if (simulateExamScore.getExamResultVOS().size() > 0) {
+			List<ExamResultVO> examResultVOS = simulateExamScore.getExamResultVOS();
+			//查询模拟考试信息
+			SimulateExamRecord simulateExamRecord = this.getById(simulateExamScore.getSimulateExamId());
+			int count = 0;
+			//计算考试得分,并存入考试答题记录
+			for (ExamResultVO examResultVO : examResultVOS) {
+				SimulateExamAnswerRecord answerRecord = new SimulateExamAnswerRecord();
+				answerRecord.setSimulateExamId(simulateExamScore.getSimulateExamId());
+				answerRecord.setSubjectChoicesId(examResultVO.getSubjectChoicesId());
+				answerRecord.setAnswerOption(examResultVO.getValue());
+				answerRecord.setAnswerScore(examResultVO.getGrade());
+				if (examResultVO.getGrade() > 0) {
+					answerRecord.setAnswerResult(1);
+				} else {
+					answerRecord.setAnswerResult(2);
+				}
+				count = count + examResultVO.getGrade();
+				answerRecord.setAnswerTime(new Date());
+				//新增
+				simulateExamAnswerRecordService.save(answerRecord);
+			}
+			//设置总分
+			simulateExamRecord.setScore(count);
+			//更新模拟考试信息
+			this.updateById(simulateExamRecord);
+			//返回
+			return true;
+		}
+		//返回结果
+		return false;
+	}
 }

--
Gitblit v1.9.3