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/ExamScoreServiceImpl.java |  369 +++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 261 insertions(+), 108 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 2ef6f1c..536904e 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
@@ -1,6 +1,7 @@
 
 package org.springblade.modules.exam.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
@@ -257,8 +258,43 @@
 		return false;
 	}
 
+//	/**
+//	 * 导入实操成绩
+//	 *
+//	 * @param examScoreExcelList
+//	 * @param isCovered          是否覆盖
+//	 */
+//	@Override
+//	public void importExamScore(List<ExamScoreExcel> examScoreExcelList, Boolean isCovered) {
+//		if (examScoreExcelList.size() > 0) {
+//			//遍历
+//			examScoreExcelList.forEach(examScoreExcel -> {
+//				if (null != examScoreExcel.getLearnGrade() && null != examScoreExcel.getIdCardNo() && examScoreExcel.getIdCardNo() != "") {
+//					//使用考试名称匹配考试信息
+//					List<ExamPaper> examPaperList = examPaperService.getExamInfoByExamName(examScoreExcel.getExamName());
+//					ExamPaper examPaper = examPaperList.get(0);
+//					//查询出成绩数据
+//					if (examPaperList.size() > 0) {
+//						ExamScore score = new ExamScore();
+//						score.setCandidateNo(examScoreExcel.getIdCardNo());
+//						score.setLearnGrade(examScoreExcel.getLearnGrade());
+//						score.setExamTime(examPaper.getStartTime());
+//						//生成随机数
+//						String uuid = UUID.randomUUID().toString();
+//						//数据推送
+//						Map<String, Object> map = new HashMap<>(1);
+//						map.put(uuid, score);
+//						myAsyncService.FTPObjectExamScore(map);
+//					} else {
+//						throw new ServiceException("导入失败!考试名称:[" + examScoreExcel.getExamName() + "]不存在!请核对!");
+//					}
+//				}
+//			});
+//		}
+//	}
+
 	/**
-	 * 导入实操成绩
+	 * 导入实操成绩(按准考证编号导入版)
 	 *
 	 * @param examScoreExcelList
 	 * @param isCovered          是否覆盖
@@ -270,30 +306,22 @@
 			//导入状态,默认为true ,如果有一个出现问题则为 false
 			AtomicBoolean status = new AtomicBoolean(true);
 			//遍历
-			examScoreExcelList.forEach(examScoreExcel -> {
-				if (null != examScoreExcel.getLearnGrade() && null != examScoreExcel.getIdCardNo() && examScoreExcel.getIdCardNo() != "") {
+			for (ExamScoreExcel examScoreExcel : examScoreExcelList) {
+				if (null != examScoreExcel.getLearnGrade() && null != examScoreExcel.getCandidateNo() && examScoreExcel.getCandidateNo() != "") {
 					//使用考试名称匹配考试信息
 					List<ExamPaper> examPaperList = examPaperService.getExamInfoByExamName(examScoreExcel.getExamName());
-					ExamPaper examPaper = examPaperList.get(0);
 					//查询出成绩数据
 					if (examPaperList.size() > 0) {
-						//取第一个
-						List<ExamScore> examScoreList = baseMapper.getExamScoreInfoByIdCardNo(examScoreExcel.getIdCardNo(), new SimpleDateFormat("yyyy-MM-dd").format(examPaper.getStartTime()));
+						ExamScore score = new ExamScore();
+						score.setCandidateNo(examScoreExcel.getCandidateNo());
+						List<ExamScore> examScoreList = this.list(new QueryWrapper<>(score));
 						if (examScoreList.size() == 0) {
-							//根据身份证号查询用户
-							User user0 = userService.getUserInfoByIdCardNo(examScoreExcel.getIdCardNo());
-							if (null == user0) {
-								throw new ServiceException("没有找到用户:[" + examScoreExcel.getIdCardNo() + "]相关考试成绩信息,请检查身份证是否有误!");
-//								throw new ServiceException("用户:["+examScoreExcel.getIdCardNo()+"]不存在");
-							}
+							errorList.add(examScoreExcel.getName());
+							status.set(false);
+							break;
 						}
 						//遍历集合
 						examScoreList.forEach(examScore -> {
-//							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()));
@@ -307,97 +335,11 @@
 										user.setUserType(7);
 										//如果已有保安证编号,不更新用户信息
 										if (null == user.getSecuritynumber() || user.getSecuritynumber().equals("")) {
-											//去生成保安证编号
-											String pre = SecurityPaperUtil.getSecurityPaper();
-											//查询当前年份已有的保安证编号
-//											int count = userService.getSecurityPaperCount(pre);
-											//需调用内网查询
-											//生成随机数
-											String uuid = UUID.randomUUID().toString();
-
+											//去内网生成保安证编号,由内网生成,无需返回
 											//数据推送
 											Map<String, Object> map = new HashMap<>(1);
-											map.put(uuid,pre);
+											map.put("key",examScore);
 											myAsyncService.FTPSecurityNumberBit(map);
-
-											int count = 0;
-											Result result0 = new Result();
-											//调用ftp获取返回数据
-											while (true){
-												try {
-													Thread.sleep(1000);
-												} catch (InterruptedException e) {
-													e.printStackTrace();
-												}
-												//调用ftp获取返回数据
-												result0 = Monitor.getSecurityNumberBit(uuid);
-												//如果返回true,就退处
-												if (result0.getCode()==200){
-													break;
-												}else{
-													//计数
-													count++;
-													//如果超过100s 没有读取到,则退出
-													if (count == 100) {
-														break;
-													}
-												}
-											}
-											int max = Integer.parseInt(result0.getMsg());
-											String result = null;
-											if (max == 0) {
-												result = pre + "00001";
-											} else {
-												//格式化
-												DecimalFormat decimalFormat = new DecimalFormat("00000");
-												max++;
-												result = pre + (decimalFormat.format(max));
-											}
-											//脱敏处理
-											user.setSecuritynumber(DesensitizedUtil.desensitizedSecurityNumber(result));
-											//修改为持证保安
-											user.setHold("1");
-											user.setUpdateTime(new Date());
-											//更新保安数据
-											userService.updateById(user);
-
-											//生成保安证的同时向保安证管理表中插入一条数据
-											SecurityPaper securityPaper = new SecurityPaper();
-											securityPaper.setUserId(user.getId());
-											securityPaper.setNumber(result);
-											securityPaper.setCreateTime(new Date());
-											securityPaper.setIdCardNo(user.getCardid());
-											securityPaper.setPeopleName(user.getRealName());
-											securityPaper.setExamId(Long.parseLong(examScore.getExamId()));
-											securityPaper.setApplyId(examScore.getApplyId());
-											securityPaper.setSource(1);
-											//内网对象
-											SecurityPaper paper = Objects.requireNonNull(BeanUtil.copy(securityPaper,SecurityPaper.class));
-											//新增保安员证信息
-											securityPaper.setNumber(DesensitizedUtil.desensitizedSecurityNumber(result));
-											securityPaper.setIdCardNo("");
-											securityPaperService.save(securityPaper);
-
-											//设置id
-											paper.setId(securityPaper.getId());
-											//内网同步
-											String s1 =
-												"insert into sys_security_paper(id,number,create_time,people_name,id_card_no,user_id,apply_id,exam_id,source) " +
-													"values(" + "'" + paper.getId() + "'"
-													+ "," + "'" + paper.getNumber() +"'"
-													+ "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(paper.getCreateTime()) +"'"
-													+ "," + "'" + paper.getPeopleName() + "'"
-													+ "," + "'" + paper.getIdCardNo() + "'"
-													+ "," + "'" + paper.getUserId() + "'"
-													+ "," + "'" + paper.getApplyId() + "'"
-													+ "," + "'" + paper.getExamId() + "'"
-													+ "," +"'" + paper.getSource() + "'" + ");" +
-												"update blade_user set hold = " + "'" + user.getHold() + "'" +
-													",securitynumber = " + "'" + result + "'" +
-													",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" +
-													",user_type = " + "'" + user.getUserType() + "'" +
-													" " + "where id = " + "'" + user.getId() + "'";
-											myAsyncService.FTP(s1);
 										}
 									}
 								} else {
@@ -427,7 +369,6 @@
 										",all_grade = " + "'" + examScore.getAllGrade() + "'" +
 										",qualified = " + "'" + examScore.getQualified() + "'" +
 										" " + "where id = " + "'" + examScore.getId() + "'";
-								//FtpUtil.sqlFileUpload(s1);
 								myAsyncService.FTP(s1);
 								//更新成绩数据
 								baseMapper.updateById(examScore);
@@ -436,12 +377,11 @@
 								status.set(false);
 							}
 						});
-
 					} else {
 						throw new ServiceException("导入失败!考试名称:[" + examScoreExcel.getExamName() + "]不存在!请核对!");
 					}
 				}
-			});
+			}
 			//如果所有数据导入有一个异常
 			if (!status.get()) {
 				String errorAccount = StringUtils.join(errorList, "\\\n");
@@ -449,6 +389,200 @@
 			}
 		}
 	}
+
+
+//	/**
+//	 * 导入实操成绩
+//	 *
+//	 * @param examScoreExcelList
+//	 * @param isCovered          是否覆盖
+//	 */
+//	@Override
+//	public void importExamScore(List<ExamScoreExcel> examScoreExcelList, Boolean isCovered) {
+//		if (examScoreExcelList.size() > 0) {
+//			List<Object> errorList = new ArrayList<>();
+//			//导入状态,默认为true ,如果有一个出现问题则为 false
+//			AtomicBoolean status = new AtomicBoolean(true);
+//			//遍历
+//			examScoreExcelList.forEach(examScoreExcel -> {
+//				if (null != examScoreExcel.getLearnGrade() && null != examScoreExcel.getIdCardNo() && examScoreExcel.getIdCardNo() != "") {
+//					//使用考试名称匹配考试信息
+//					List<ExamPaper> examPaperList = examPaperService.getExamInfoByExamName(examScoreExcel.getExamName());
+//					ExamPaper examPaper = examPaperList.get(0);
+//					//查询出成绩数据
+//					if (examPaperList.size() > 0) {
+//						//取第一个
+//						List<ExamScore> examScoreList = baseMapper.getExamScoreInfoByIdCardNo(examScoreExcel.getIdCardNo(), new SimpleDateFormat("yyyy-MM-dd").format(examPaper.getStartTime()));
+//						if (examScoreList.size() == 0) {
+//							//根据身份证号查询用户
+//							User user0 = userService.getUserInfoByIdCardNo(examScoreExcel.getIdCardNo());
+//							if (null == user0) {
+//								throw new ServiceException("没有找到用户:[" + examScoreExcel.getIdCardNo() + "]相关考试成绩信息,请检查身份证是否有误!");
+////								throw new ServiceException("用户:["+examScoreExcel.getIdCardNo()+"]不存在");
+//							}
+//						}
+//						//遍历集合
+//						examScoreList.forEach(examScore -> {
+////							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()));
+//								//设置实操成绩
+//								examScore.setLearnGrade(examScoreExcel.getLearnGrade());
+//								if (null != examScore.getTheoryGrade()) {
+//									if (examScore.getTheoryGrade() >= 60 && examScore.getLearnGrade() >= 60) {
+//										//合格
+//										examScore.setQualified(0);
+//										//修改制证状态为未制证
+//										user.setUserType(7);
+//										//如果已有保安证编号,不更新用户信息
+//										if (null == user.getSecuritynumber() || user.getSecuritynumber().equals("")) {
+//											//去生成保安证编号
+//											String pre = SecurityPaperUtil.getSecurityPaper();
+//											//查询当前年份已有的保安证编号
+//											int count = userService.getSecurityPaperCount(pre);
+//											//需调用内网查询
+//											//生成随机数
+//											String uuid = UUID.randomUUID().toString();
+//
+//											//数据推送
+//											Map<String, Object> map = new HashMap<>(1);
+//											map.put(uuid,pre);
+//											myAsyncService.FTPSecurityNumberBit(map);
+//
+//											int count = 0;
+//											Result result0 = new Result();
+//											//调用ftp获取返回数据
+//											while (true){
+//												try {
+//													Thread.sleep(1000);
+//												} catch (InterruptedException e) {
+//													e.printStackTrace();
+//												}
+//												//调用ftp获取返回数据
+//												result0 = Monitor.getSecurityNumberBit(uuid);
+//												//如果返回true,就退处
+//												if (result0.getCode()==200){
+//													break;
+//												}else{
+//													//计数
+//													count++;
+//													//如果超过100s 没有读取到,则退出
+//													if (count == 100) {
+//														break;
+//													}
+//												}
+//											}
+//											int max = Integer.parseInt(result0.getMsg());
+//											String result = null;
+//											if (max == 0) {
+//												result = pre + "00001";
+//											} else {
+//												//格式化
+//												DecimalFormat decimalFormat = new DecimalFormat("00000");
+//												max++;
+//												result = pre + (decimalFormat.format(max));
+//											}
+//											//脱敏处理
+//											user.setSecuritynumber(DesensitizedUtil.desensitizedSecurityNumber(result));
+//											//修改为持证保安
+//											user.setHold("1");
+//											user.setUpdateTime(new Date());
+//											//更新保安数据
+//											userService.updateById(user);
+//
+//											//生成保安证的同时向保安证管理表中插入一条数据
+//											SecurityPaper securityPaper = new SecurityPaper();
+//											securityPaper.setUserId(user.getId());
+//											securityPaper.setNumber(result);
+//											securityPaper.setCreateTime(new Date());
+//											securityPaper.setIdCardNo(user.getCardid());
+//											securityPaper.setPeopleName(user.getRealName());
+//											securityPaper.setExamId(Long.parseLong(examScore.getExamId()));
+//											securityPaper.setApplyId(examScore.getApplyId());
+//											securityPaper.setSource(1);
+//											//内网对象
+//											SecurityPaper paper = Objects.requireNonNull(BeanUtil.copy(securityPaper,SecurityPaper.class));
+//											//新增保安员证信息
+//											securityPaper.setNumber(DesensitizedUtil.desensitizedSecurityNumber(result));
+//											securityPaper.setIdCardNo("");
+//											securityPaperService.save(securityPaper);
+//
+//											//设置id
+//											paper.setId(securityPaper.getId());
+//											//内网同步
+//											String s1 =
+//												"insert into sys_security_paper(id,number,create_time,people_name,id_card_no,user_id,apply_id,exam_id,source) " +
+//													"values(" + "'" + paper.getId() + "'"
+//													+ "," + "'" + paper.getNumber() +"'"
+//													+ "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(paper.getCreateTime()) +"'"
+//													+ "," + "'" + paper.getPeopleName() + "'"
+//													+ "," + "'" + paper.getIdCardNo() + "'"
+//													+ "," + "'" + paper.getUserId() + "'"
+//													+ "," + "'" + paper.getApplyId() + "'"
+//													+ "," + "'" + paper.getExamId() + "'"
+//													+ "," +"'" + paper.getSource() + "'" + ");" +
+//												"update blade_user set hold = " + "'" + user.getHold() + "'" +
+//													",securitynumber = " + "'" + result + "'" +
+//													",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" +
+//													",user_type = " + "'" + user.getUserType() + "'" +
+//													" " + "where id = " + "'" + user.getId() + "'";
+//											myAsyncService.FTP(s1);
+//										}
+//									}
+//								} else {
+//									//不合格
+//									examScore.setQualified(1);
+//								}
+//								//总成绩
+//								if (user.getAge() <= 50) {
+//									if (null != examScore.getTheoryGrade()) {
+//										examScore.setAllGrade(Math.round((examScore.getTheoryGrade() + examScoreExcel.getLearnGrade()) / 2));
+//									} else {
+//										examScore.setAllGrade(Math.round(examScoreExcel.getLearnGrade() / 2));
+//									}
+//								}
+//								if (user.getAge() > 50) {
+//									if (null != examScore.getTheoryGrade()) {
+//										examScore.setAllGrade(Integer.parseInt(String.valueOf(Math.round(examScore.getTheoryGrade() * 0.5)))
+//											+ Integer.parseInt(String.valueOf(Math.round(examScoreExcel.getLearnGrade() * 0.5))));
+//									} else {
+//										examScore.setAllGrade(Math.round(examScoreExcel.getLearnGrade() / 2));
+//									}
+//								}
+//
+//								//内网同步
+//								String s1 =
+//									"update exam_score set learn_grade = " + "'" + examScore.getLearnGrade() + "'" +
+//										",all_grade = " + "'" + examScore.getAllGrade() + "'" +
+//										",qualified = " + "'" + examScore.getQualified() + "'" +
+//										" " + "where id = " + "'" + examScore.getId() + "'";
+//								//FtpUtil.sqlFileUpload(s1);
+//								myAsyncService.FTP(s1);
+//								//更新成绩数据
+//								baseMapper.updateById(examScore);
+//							} else {
+//								errorList.add(examScoreExcel.getName());
+//								status.set(false);
+//							}
+//						});
+//
+//					} else {
+//						throw new ServiceException("导入失败!考试名称:[" + examScoreExcel.getExamName() + "]不存在!请核对!");
+//					}
+//				}
+//			});
+//			//如果所有数据导入有一个异常
+//			if (!status.get()) {
+//				String errorAccount = StringUtils.join(errorList, "\\\n");
+//				throw new ServiceException("用户:[" + errorAccount + "]实操成绩导入失败!账号与准考证号不匹配!");
+//			}
+//		}
+//	}
 
 
 //	/**
@@ -945,4 +1079,23 @@
 		//返回数据
 		return objectList;
 	}
+
+	/**
+	 * 查询考试成绩
+	 * @return
+	 */
+	@Override
+	public List<ExamScore> getExamScoreList() {
+		return baseMapper.getExamScoreLists();
+	}
+
+	/**
+	 * 查询考试成绩
+	 * @param time
+	 * @return
+	 */
+	@Override
+	public List<ExamScore> getExamScoreListByTime(String time) {
+		return baseMapper.getExamScoreListByTime(time);
+	}
 }

--
Gitblit v1.9.3