From bd024f2081dd68ddd2289b3f8fcbacfae1a6d104 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Sat, 11 Jun 2022 21:31:33 +0800
Subject: [PATCH] 新增定时任务重新计算当天成绩

---
 src/main/java/org/springblade/modules/exam/service/ExamScoreService.java                         |    6 +
 src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java                           |    6 +
 src/main/java/org/springblade/modules/training/service/impl/TrainingRegistrationServiceImpl.java |    5 
 src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java                |  221 ++++++++++++++++++++++++++++++++++++++++++-
 src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml                            |    5 +
 src/main/java/org/springblade/modules/quartz/task/Task.java                                      |   52 ++++++++++
 6 files changed, 282 insertions(+), 13 deletions(-)

diff --git a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java
index 90e0112..bd13b4a 100644
--- a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java
+++ b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.java
@@ -108,4 +108,10 @@
 	 * @return
 	 */
     List<ExamSocreStatis> getExamStatisInfo(@Param("information") InformationVO information);
+
+	/**
+	 * 查询考试成绩
+	 * @return
+	 */
+	List<ExamScore> getExamScoreLists();
 }
diff --git a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml
index 76f85f6..579cd4b 100644
--- a/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml
+++ b/src/main/java/org/springblade/modules/exam/mapper/ExamScoreMapper.xml
@@ -527,5 +527,10 @@
             id
     </select>
 
+    <!--查询考试成绩-->
+    <select id="getExamScoreLists" resultType="org.springblade.modules.exam.entity.ExamScore">
+        SELECT * from exam_score where date_format(exam_time,'%Y-%M-%d') = date_format(now(),'%Y-%M-%d')
+    </select>
+
 
 </mapper>
diff --git a/src/main/java/org/springblade/modules/exam/service/ExamScoreService.java b/src/main/java/org/springblade/modules/exam/service/ExamScoreService.java
index c40d96a..fe6bbcb 100644
--- a/src/main/java/org/springblade/modules/exam/service/ExamScoreService.java
+++ b/src/main/java/org/springblade/modules/exam/service/ExamScoreService.java
@@ -105,4 +105,10 @@
 	 * @param
 	 */
     Object getExamStatisInfo(InformationVO information);
+
+	/**
+	 * 查询考试成绩
+	 * @return
+	 */
+	List<ExamScore> getExamScoreList();
 }
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 fddc494..77e4c90 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
@@ -317,13 +317,13 @@
 
 											//数据推送
 											Map<String, Object> map = new HashMap<>(1);
-											map.put(uuid,pre);
+											map.put(uuid, pre);
 											myAsyncService.FTPSecurityNumberBit(map);
 
 											int count = 0;
 											Result result0 = new Result();
 											//调用ftp获取返回数据
-											while (true){
+											while (true) {
 												try {
 													Thread.sleep(1000);
 												} catch (InterruptedException e) {
@@ -332,9 +332,9 @@
 												//调用ftp获取返回数据
 												result0 = Monitor.getSecurityNumberBit(uuid);
 												//如果返回true,就退处
-												if (result0.getCode()==200){
+												if (result0.getCode() == 200) {
 													break;
-												}else{
+												} else {
 													//计数
 													count++;
 													//如果超过100s 没有读取到,则退出
@@ -372,7 +372,7 @@
 											securityPaper.setApplyId(examScore.getApplyId());
 											securityPaper.setSource(1);
 											//内网对象
-											SecurityPaper paper = Objects.requireNonNull(BeanUtil.copy(securityPaper,SecurityPaper.class));
+											SecurityPaper paper = Objects.requireNonNull(BeanUtil.copy(securityPaper, SecurityPaper.class));
 											//新增保安员证信息
 											securityPaper.setNumber(DesensitizedUtil.desensitizedSecurityNumber(result));
 											securityPaper.setIdCardNo("");
@@ -384,15 +384,15 @@
 											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.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() + "'" +
+													+ "," + "'" + 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() + "'" +
@@ -449,6 +449,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 +1139,13 @@
 		//返回数据
 		return objectList;
 	}
+
+	/**
+	 * 查询考试成绩
+	 * @return
+	 */
+	@Override
+	public List<ExamScore> getExamScoreList() {
+		return baseMapper.getExamScoreLists();
+	}
 }
diff --git a/src/main/java/org/springblade/modules/quartz/task/Task.java b/src/main/java/org/springblade/modules/quartz/task/Task.java
index 004bcd9..0ee03de 100644
--- a/src/main/java/org/springblade/modules/quartz/task/Task.java
+++ b/src/main/java/org/springblade/modules/quartz/task/Task.java
@@ -9,6 +9,10 @@
 import org.apache.commons.net.ftp.FTPReply;
 import org.springblade.common.utils.DesensitizedUtil;
 import org.springblade.modules.FTP.*;
+import org.springblade.modules.exam.entity.ExamAnswerRecord;
+import org.springblade.modules.exam.entity.ExamScore;
+import org.springblade.modules.exam.service.ExamAnswerRecordService;
+import org.springblade.modules.exam.service.ExamScoreService;
 import org.springblade.modules.log.entity.HandlerLog;
 import org.springblade.modules.log.service.HandlerLogService;
 import org.springblade.modules.system.entity.User;
@@ -56,6 +60,13 @@
 
 	@Autowired
 	private MyAsyncService myAsyncService;
+
+
+	@Autowired
+	private ExamAnswerRecordService examAnswerRecordService;
+
+	@Autowired
+	private ExamScoreService examScoreService;
 
 	public void testTask(){
         System.out.println("测试定时任务执行-----------------");
@@ -866,5 +877,46 @@
 		}
 	}
 
+	/**
+	 * 考试成绩同步
+	 * @return
+	 */
+	public void examScoreSync() {
+		System.out.println("考试成绩同步"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+		//查询当天的考试成绩
+		List<ExamScore> examScoreList = examScoreService.getExamScoreList();
+		if (examScoreList.size()>0) {
+			//遍历计算成绩
+			for (ExamScore examScore : examScoreList) {
+				ExamAnswerRecord record = new ExamAnswerRecord();
+				record.setScoreId(examScore.getId());
+				List<ExamAnswerRecord> list = examAnswerRecordService.list(new QueryWrapper<>(record));
+				if (list.size()>0){
+					int num = 0;
+					for (ExamAnswerRecord examAnswerRecord : list) {
+						num = num + examAnswerRecord.getAnswerScore();
+						examScore.setExamEndTime(examAnswerRecord.getAnswerTime());
+					}
+					examScore.setTheoryGrade(num);
+					examScore.setAllGrade(Math.round(num/2));
+					//设置状态
+					if (num >= 60) {
+						examScore.setQualified(2);
+					} else {
+						examScore.setQualified(1);
+					}
+					String s1 =
+						"update exam_score set exam_id = " + examScore.getExamId() +
+							",theory_grade = " + "'" + examScore.getTheoryGrade() + "'" +
+							",all_grade = " + "'" + examScore.getAllGrade() + "'" +
+							",exam_end_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(examScore.getExamEndTime()) + "'" +
+							",qualified = " + "'" + examScore.getQualified() + "'" +
+							" " + "where id = " + "'" + examScore.getId() + "'";
+					myAsyncService.FTP(s1);
+				}
+			}
+		}
+	}
+
 
 }
diff --git a/src/main/java/org/springblade/modules/training/service/impl/TrainingRegistrationServiceImpl.java b/src/main/java/org/springblade/modules/training/service/impl/TrainingRegistrationServiceImpl.java
index f6c31cc..44ba19e 100644
--- a/src/main/java/org/springblade/modules/training/service/impl/TrainingRegistrationServiceImpl.java
+++ b/src/main/java/org/springblade/modules/training/service/impl/TrainingRegistrationServiceImpl.java
@@ -470,7 +470,6 @@
 									+ "'" + examScore.getUserId() + "'" + ","
 									+ "'" + examScore.getApplyId() + "'" + ","
 									+ "'" + examScore.getExamId() + "'" + ")";
-							//FtpUtil.sqlFileUpload(s);
 							myAsyncService.FTP(s);
 						}
 					}
@@ -525,7 +524,7 @@
 							examScore1.setQualified(1);
 						}
 						//更新成绩数据
-						examScoreService.updateById(examScore1);
+//						examScoreService.updateById(examScore1);
 
 						//数据同步
 						String s =
@@ -534,7 +533,6 @@
 							"update exam_score set theory_grade = " + examScore1.getTheoryGrade() +
 								",qualified = " + "'" + examScore1.getQualified() + "'" +
 								" " + "where id = " + "'" + examScore1.getId() + "'";
-						//FtpUtil.sqlFileUpload(s);
 						myAsyncService.FTP(s);
 					});
 				}else {
@@ -542,7 +540,6 @@
 					String s =
 						"update sys_training_registration set is_exam = " + trainingRegistration1.getIsExam() +
 							" " + "where id = " + "'" + trainingRegistration1.getId() + "'";
-					//FtpUtil.sqlFileUpload(s);
 					myAsyncService.FTP(s);
 				}
 			});

--
Gitblit v1.9.3