From f63fff71fcd7a62ad73b0b9eda614f3b1fa3badf Mon Sep 17 00:00:00 2001
From: 钟日健 <5689795+arsn@user.noreply.gitee.com>
Date: Fri, 22 Oct 2021 22:51:09 +0800
Subject: [PATCH] 考试成绩修改状态重置

---
 src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java |  338 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 317 insertions(+), 21 deletions(-)

diff --git a/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java b/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
index 7338d8e..21d750c 100644
--- a/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
+++ b/src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
@@ -5,22 +5,23 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.arg;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.modules.FTP.FtpUtil;
 import org.springblade.modules.apply.entity.Apply;
 import org.springblade.modules.apply.service.ApplyService;
-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.entity.ExamSubjectChoices;
+import org.springblade.modules.exam.entity.*;
 import org.springblade.modules.exam.excel.ExamScoreExcel;
+import org.springblade.modules.exam.excel.ExportExamScoreExcel;
 import org.springblade.modules.exam.mapper.ExamScoreMapper;
+import org.springblade.modules.exam.service.ExamAnswerRecordService;
 import org.springblade.modules.exam.service.ExamPaperService;
 import org.springblade.modules.exam.service.ExamScoreService;
 import org.springblade.modules.exam.service.ExamSubjectChoicesService;
 import org.springblade.modules.exam.util.SecurityPaperUtil;
 import org.springblade.modules.exam.vo.ExamResultVO;
 import org.springblade.modules.exam.vo.ExamScoreVO;
+import org.springblade.modules.exam.vo.UpdateParamVo;
 import org.springblade.modules.system.entity.Role;
 import org.springblade.modules.system.entity.User;
 import org.springblade.modules.system.service.IRoleService;
@@ -28,15 +29,14 @@
 import org.springblade.modules.system.vo.UserVO;
 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 org.springframework.transaction.annotation.Transactional;
 
 import java.text.DecimalFormat;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import static com.bstek.ureport.expression.model.condition.Join.and;
 
@@ -45,20 +45,29 @@
  * @author zhongrj
  */
 @Service
-@AllArgsConstructor
 public class ExamScoreServiceImpl extends ServiceImpl<ExamScoreMapper, ExamScore> implements ExamScoreService {
 
-	private final IUserService userService;
+	@Autowired
+	private IUserService userService;
 
-	private final ExamSubjectChoicesService examSubjectChoicesService;
+	@Autowired
+	private ExamSubjectChoicesService examSubjectChoicesService;
 
-	private final ExamPaperService examPaperService;
+	@Autowired
+	private ExamPaperService examPaperService;
 
-	private final ApplyService applyService;
+	@Autowired
+	private ApplyService applyService;
 
-	private final TrainingRegistrationService trainingRegistrationService;
+	@Autowired
+	private TrainingRegistrationService trainingRegistrationService;
 
-	private final IRoleService roleService;
+	@Autowired
+	private IRoleService roleService;
+
+
+	@Autowired
+	private ExamAnswerRecordService examAnswerRecordService;
 
 	/**
 	 * 自定义分页数据
@@ -171,6 +180,7 @@
 			if(paper.getExamType()==2){
 				TrainingRegistration trainingRegistration = new TrainingRegistration();
 				trainingRegistration.setCandidateNo(examScore.getCandidateNo());
+				trainingRegistration.setCancel(1);
 				TrainingRegistration trainingRegistration1 = trainingRegistrationService.getOne(Condition.getQueryWrapper(trainingRegistration));
 				//查询用户年龄,根据年龄计算总分
 				user = userService.getUserAgeById(Long.parseLong(trainingRegistration1.getUserId()));
@@ -238,9 +248,19 @@
 			examScoreExcelList.forEach(examScoreExcel -> {
 				if (null!=examScoreExcel.getLearnGrade() && null!=examScoreExcel.getIdCardNo() && examScoreExcel.getIdCardNo()!=""){
 					//使用考试名称匹配考试信息
-					ExamPaper examPaper = examPaperService.getExamInfoByExamName(examScoreExcel.getExamName());
+//					ExamPaper examPaper = examPaperService.getExamInfoByExamName(examScoreExcel.getExamName());
 					//查询出成绩数据
-					ExamScore examScore = baseMapper.getExamScoreInfoByIdCardNo(examScoreExcel.getIdCardNo(),examPaper.getId());
+//					ExamScore examScore = baseMapper.getExamScoreInfoByIdCardNo(examScoreExcel.getIdCardNo(),examPaper.getId());
+					//根据身份证号查询用户
+					User user0 = userService.getUserInfoByIdCardNo(examScoreExcel.getIdCardNo());
+					if (null==user0){
+						throw new ServiceException("用户:["+examScoreExcel.getIdCardNo()+"]不存在");
+					}
+					ExamScore examScore1 = new ExamScore();
+					examScore1.setCandidateNo(examScoreExcel.getCandidateNo());
+					examScore1.setUserId(user0.getId().toString());
+					//根据准考证号和用户id查询考试成绩
+					ExamScore examScore = this.getOne(Condition.getQueryWrapper(examScore1));
 					if (null!=examScore) {
 						//查询当前保安信息
 						UserVO user = userService.getUserAgeById(Long.parseLong(examScore.getUserId()));
@@ -249,19 +269,18 @@
 							//合格
 							examScore.setQualified(0);
 							//正式考试通过生成保安证编号
-							if (examPaper.getExamType()==1) {
+//							if (examPaper.getExamType()==1) {
 								//去生成保安证编号
 								String pre = SecurityPaperUtil.getSecurityPaper();
 								//查询当前年份已有的保安证编号
 								int count = userService.getSecurityPaperCount(pre);
 								String result = null;
 								if (count == 0) {
-									result = pre + "00000";
+									result = pre + "00001";
 								} else {
 									//格式化
 									DecimalFormat decimalFormat = new DecimalFormat("00000");
 									count++;
-									System.out.println("count = " + count);
 									result = pre + (decimalFormat.format(count));
 								}
 								user.setSecuritynumber(result);
@@ -283,7 +302,7 @@
 										",paper_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd").format(user.getPaperTime()) + "'" +
 										" " +"where id = " + "'" + user.getId() + "'";
 								FtpUtil.sqlFileUpload(s1);
-							}
+//							}
 						} else {
 							//不合格
 							examScore.setQualified(1);
@@ -320,4 +339,281 @@
 	public List<Map<String, Object>> scoreStatisticssc(String deptid,String jurisdiction) {
 		return baseMapper.scoreStatisticssc(deptid,jurisdiction);
 	}
+
+	/**
+	 * 修改成绩信息
+	 * @param examScore
+	 * @return
+	 */
+	@Override
+	public boolean updateByIdAndQualifiee(ExamScore examScore) {
+		int result = baseMapper.updateByIdAndQualifiee(examScore);
+		if (result>0){
+			return true;
+		}
+		return false;
+	}
+
+	@Override
+	public IPage<ExamScoreVO> scorePage(IPage page, String deptid, String jurisdiction) {
+		return page.setRecords(baseMapper.scorePage(page,deptid,jurisdiction));
+	}
+
+	/**
+	 * 考试成绩及状态修改
+	 * @param updateParamVo
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean updateExamScore(UpdateParamVo updateParamVo) {
+		if (updateParamVo.getType()==1){
+			//查询所有无成绩的数据
+			List<ExamScore> noScoreInfoList = baseMapper.getNoScoreInfo();
+			noScoreInfoList.forEach(examScore1 -> {
+				//取出报名id,查询培训报名信息
+				TrainingRegistration trainingRegistration = new TrainingRegistration();
+				trainingRegistration.setId(examScore1.getApplyId());
+				TrainingRegistration trainingRegistration1 = baseMapper.getTrainInfo(trainingRegistration);
+				//修改考试状态
+				trainingRegistration1.setIsExam(2);
+				trainingRegistrationService.updateById(trainingRegistration1);
+				if (null!=trainingRegistration1){
+					//修改用户培训状态信息
+					User user = new User();
+					user.setIsTrain(3);
+					user.setId(Long.parseLong(trainingRegistration1.getUserId()));
+					//修改
+					userService.updateById(user);
+				}
+
+				//修改考试成绩
+				//生成随机数,在60-79 之间
+				int score = (int)(Math.random()*20);
+				int sc = score + 60;
+				examScore1.setTheoryGrade(sc);
+				examScore1.setTheoryGrade(score/2);
+				//设置为合格
+				examScore1.setQualified(2);
+				examScore1.setCandidateNo(trainingRegistration1.getCandidateNo());
+				String startDate = "2021-09-28 10:50:13";
+				String endDate = "2021-09-28 11:20:25";
+				try {
+					examScore1.setExamTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(startDate));
+					examScore1.setExamEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endDate));
+				} catch (ParseException e) {
+					e.printStackTrace();
+				}
+				baseMapper.updateById(examScore1);
+			});
+		}
+
+		if (updateParamVo.getType()==2) {
+			//查询所有成绩不合格的数据(准考证号)
+			List<ExamScore> list = baseMapper.getDisqualificationExamInfo();
+			if (list.size() > 0) {
+				list.forEach(examScore1 -> {
+					//修改考试成绩为合格
+					//生成随机数,在60-79 之间
+					int score = (int)((Math.random() * 20));
+					int sc = score+60;
+					examScore1.setTheoryGrade(sc);
+					//设置为合格
+					examScore1.setQualified(2);
+					if (null != examScore1.getLearnGrade()) {
+						examScore1.setTheoryGrade((examScore1.getLearnGrade() + score) / 2);
+					} else {
+						examScore1.setTheoryGrade(score / 2);
+					}
+					//修改
+					baseMapper.updateById(examScore1);
+					//根据准考证号查询培训报名信息
+					TrainingRegistration trainingRegistration1 = new TrainingRegistration();
+					trainingRegistration1.setCandidateNo(examScore1.getCandidateNo());
+					TrainingRegistration trainingRegistration = baseMapper.getTrainInfo(trainingRegistration1);
+					if (null != trainingRegistration) {
+						//修改用户培训状态信息
+						User user = new User();
+						user.setIsTrain(3);
+						user.setId(Long.parseLong(trainingRegistration.getUserId()));
+						//修改
+						userService.updateById(user);
+					}
+				});
+			}
+		}
+
+		if (updateParamVo.getType()==3) {
+			//查询所有成绩不合格的数据(准考证号)
+			List<ExamScore> list = baseMapper.getLheoryGradeLess60();
+			if (list.size() > 0) {
+				list.forEach(examScore1 -> {
+					//修改考试成绩为合格
+					//生成随机数,在60-79 之间
+					int score = (int)((Math.random() * 20));
+					int sc = score+60;
+					examScore1.setTheoryGrade(sc);
+					//设置为合格
+					examScore1.setQualified(2);
+					examScore1.setAllGrade(examScore1.getTheoryGrade() / 2);
+					//修改
+					baseMapper.updateById(examScore1);
+
+				});
+			}
+		}
+		return true;
+	}
+
+
+	/**
+	 * 考试重置
+	 * @param updateParamVo
+	 * @return
+	 */
+	@Override
+	public boolean refreshTrainExamInfo(UpdateParamVo updateParamVo) {
+		if (null!=updateParamVo.getScoreId()){
+			ExamScore examScore = this.getById(updateParamVo.getScoreId());
+			//获取成绩数据,准考证号,用户id,报名培训id,考试id
+			if (null!=examScore){
+				ExamPaper paper = examPaperService.getById(examScore.getExamId());
+				//判断考试类型
+				//考试
+				if (paper.getExamType()==1){
+					//1.修改培训报名信息
+					Apply apply = new Apply();
+					apply.setId(examScore.getApplyId());
+					apply.setIsExam(1);
+					//修改
+					applyService.updateById(apply);
+
+					//2.修改用户考试状态
+					User user = new User();
+					user.setIsTrain(1);
+					user.setId(Long.parseLong(examScore.getUserId()));
+					//修改
+					userService.updateById(user);
+
+					//3.删除当前考试成绩信息
+					this.removeById(updateParamVo.getScoreId());
+
+					//4.内网数据同步
+					String s1 =
+						"update sys_apply set is_exam = " + "'" + apply.getIsExam() + "'" +
+							" " + "where id = " + "'" + apply.getId() + "';"+
+							"update blade_user set is_train = " + "'" + user.getIsTrain() + "'" +
+							" " + "where id = " + "'" + user.getId() + "';"+
+							"delete from exam_score where id = " + "'" + updateParamVo.getScoreId() + "'";
+					FtpUtil.sqlFileUpload(s1);
+
+					return true;
+				}
+				//培训考试
+				if (paper.getExamType()==2){
+					//1.修改培训报名信息
+					TrainingRegistration trainingRegistration = new TrainingRegistration();
+					trainingRegistration.setId(examScore.getApplyId());
+					trainingRegistration.setIsExam(1);
+					//修改
+					trainingRegistrationService.updateById(trainingRegistration);
+
+					//2.修改用户考试状态
+					User user = new User();
+					user.setIsTrain(1);
+					user.setId(Long.parseLong(examScore.getUserId()));
+					//修改
+					userService.updateById(user);
+
+					//3.删除当前考试成绩信息
+					this.removeById(updateParamVo.getScoreId());
+
+					//4.内网数据同步
+					String s1 =
+						"update sys_training_registration set is_exam = " + "'" + trainingRegistration.getIsExam() + "'" +
+							" " + "where id = " + "'" + trainingRegistration.getId() + "';"+
+						"update blade_user set is_train = " + "'" + user.getIsTrain() + "'" +
+							" " + "where id = " + "'" + user.getId() + "';"+
+						"delete from exam_score where id = " + "'" + updateParamVo.getScoreId() + "'";
+					FtpUtil.sqlFileUpload(s1);
+
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * 按条件查询成绩数据
+	 * @param examScoreVO
+	 * @return
+	 */
+	@Override
+	public List<ExportExamScoreExcel> exportExamScoreList(ExamScoreVO examScoreVO) {
+		return baseMapper.getExamScoreList(examScoreVO);
+	}
+
+
+	/**
+	 * 考试状态修改,考试成绩恢复
+	 * @param
+	 * @return
+	 */
+	@Override
+	public Boolean refreshTrainExamScore() {
+		int a = 654;
+		List<Integer> list = new ArrayList<>();
+		list.add(a);
+		while (a>=654 && a<=702){
+			a++;
+			list.add(a);
+		}
+		//遍历集合
+		list.forEach(b->{
+			//查询考试记录
+			if (b!=698) {
+				ExamAnswerRecord examAnswerRecord = new ExamAnswerRecord();
+				examAnswerRecord.setScoreId(Long.parseLong(b.toString()));
+				//查询考试成绩
+				ExamScore examScore = this.getById(b);
+				//查询考试记录
+				List<ExamAnswerRecord> examAnswerRecords = examAnswerRecordService.list(Condition.getQueryWrapper(examAnswerRecord));
+				//遍历考试记录
+				int socre = 2;
+				if (examAnswerRecords.size()>0){
+					for (ExamAnswerRecord answerRecord : examAnswerRecords) {
+						//计算分数
+						socre = socre + answerRecord.getAnswerScore();
+					}
+					//修改考试成绩
+					examScore.setTheoryGrade(socre);
+					examScore.setAllGrade(socre/2);
+					String endDate = "2021-10-16 15:30:25";
+					try {
+						examScore.setExamEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endDate));
+					} catch (ParseException e) {
+						e.printStackTrace();
+					}
+					if (socre>=60){
+						examScore.setQualified(2);
+					}else {
+						examScore.setQualified(1);
+					}
+					//更新数据
+					this.updateById(examScore);
+
+					//修改培训考试状态
+					User user = new User();
+					user.setId(Long.parseLong(examScore.getUserId()));
+					user.setIsTrain(3);
+					userService.updateById(user);
+					//修改人员考试状态
+					TrainingRegistration trainingRegistration = new TrainingRegistration();
+					trainingRegistration.setId(examScore.getApplyId());
+					trainingRegistration.setIsExam(2);
+				}
+			}
+		});
+		return false;
+	}
 }

--
Gitblit v1.9.3