From f6eeb01e5a77965facfb0ae9a517b09681b3f69f Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Mon, 13 Jun 2022 14:45:29 +0800
Subject: [PATCH] 实操成绩修改申请,成绩修改申请修改,保安员证编号由内网处理

---
 src/main/java/org/springblade/modules/quartz/task/Task.java |  241 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 219 insertions(+), 22 deletions(-)

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 56253d2..8a84ee1 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;
@@ -57,6 +61,13 @@
 	@Autowired
 	private MyAsyncService myAsyncService;
 
+
+	@Autowired
+	private ExamAnswerRecordService examAnswerRecordService;
+
+	@Autowired
+	private ExamScoreService examScoreService;
+
 	public void testTask(){
         System.out.println("测试定时任务执行-----------------");
     }
@@ -104,7 +115,8 @@
 				return false;
 			}
 
-			ftp.enterLocalActiveMode();
+			//主动模式
+//			ftp.enterLocalActiveMode();
 
 			// 设置文件类型为二进制,与ASCII有区别
 			ftp.setFileType(FTP.BINARY_FILE_TYPE);
@@ -115,12 +127,11 @@
 			// 检验文件是否存在
 			ftp.changeWorkingDirectory(ftpPath);
 
-			// Use passive mode as default
+			// Use passive mode as default 被动模式
 			ftp.enterLocalPassiveMode();
 
 			FTPFile[] files = ftp.listFiles();
 			if (files.length==0){
-				ftp.logout();
 				return false;
 			}
 			else {
@@ -166,13 +177,18 @@
 					}
 				}
 				//关闭流
-				ftp.completePendingCommand();
-				ftp.logout();
+//				ftp.completePendingCommand();
+//				ftp.logout();
 			}
 		} catch (Exception e) {
 			System.out.println("ftp连接失败");
 			e.printStackTrace();
 		} finally {
+			try {
+				ftp.logout();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
 			if (ftp.isConnected()) {
 				try {
 					ftp.disconnect();
@@ -206,7 +222,7 @@
 				return false;
 			}
 
-			ftp.enterLocalActiveMode();
+//			ftp.enterLocalActiveMode();
 
 			// 设置文件类型为二进制,与ASCII有区别
 			ftp.setFileType(FTP.BINARY_FILE_TYPE);
@@ -224,7 +240,7 @@
 			//文件个数大于10个时开始处理
 //			if (files.length==0 || files.length<10){
 			if (files.length==0){
-				ftp.logout();
+//				ftp.logout();
 				return false;
 			}
 			else {
@@ -269,13 +285,18 @@
 					}
 				}
 				//关闭流
-				ftp.completePendingCommand();
-				ftp.logout();
+//				ftp.completePendingCommand();
+//				ftp.logout();
 			}
 		} catch (Exception e) {
 			System.out.println("ftp连接失败");
 			e.printStackTrace();
 		} finally {
+			try {
+				ftp.logout();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
 			if (ftp.isConnected()) {
 				try {
 					ftp.disconnect();
@@ -309,7 +330,7 @@
 				return false;
 			}
 
-			ftp.enterLocalActiveMode();
+//			ftp.enterLocalActiveMode();
 
 			// 设置文件类型为二进制,与ASCII有区别
 			ftp.setFileType(FTP.BINARY_FILE_TYPE);
@@ -326,7 +347,7 @@
 			FTPFile[] files = ftp.listFiles();
 			//文件个数大于10个时开始处理
 			if (files.length==0){
-				ftp.logout();
+
 				return false;
 			}
 			else {
@@ -368,13 +389,18 @@
 					}
 				}
 				//关闭流
-				ftp.completePendingCommand();
-				ftp.logout();
+//				ftp.completePendingCommand();
+//				ftp.logout();
 			}
 		} catch (Exception e) {
 			System.out.println("ftp连接失败");
 			e.printStackTrace();
 		} finally {
+			try {
+				ftp.logout();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
 			if (ftp.isConnected()) {
 				try {
 					ftp.disconnect();
@@ -390,7 +416,8 @@
 	 * 用户集合信息处理
 	 * @param result
 	 */
-	private void userListInfoHandler(Result result) {
+	@Async
+	public void userListInfoHandler(Result result) {
 		//获取 result
 		List<Result> data1 = result.getData();
 		System.out.println("批量导入数据 = " + data1);
@@ -447,9 +474,11 @@
 				}
 				if (result1.getCode()==203){
 					//保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 内网用户已存在情况
-					user.setId(result.getUserId());
+					user.setHold("2");
+					user.setSecuritynumber("");
+					user.setId(result1.getUserId());
 					//先查询当前库是否有改用户?
-					User user2 = userService.getById(result.getUserId());
+					User user2 = userService.getById(result1.getUserId());
 					//判断
 					if (null != user2) {
 						//修改
@@ -503,7 +532,7 @@
 				return false;
 			}
 
-			ftp.enterLocalActiveMode();
+//			ftp.enterLocalActiveMode();
 
 			// 设置文件类型为二进制,与ASCII有区别
 			ftp.setFileType(FTP.BINARY_FILE_TYPE);
@@ -512,7 +541,7 @@
 			ftp.setControlEncoding("GBK");
 
 			// 检验文件是否存在
-			ftp.changeWorkingDirectory(ftpPath);
+//			ftp.changeWorkingDirectory(ftpPath);
 
 			// Use passive mode as default
 			ftp.enterLocalPassiveMode();
@@ -520,7 +549,7 @@
 			FTPFile[] files = ftp.listFiles();
 			//文件个数大于10个时开始处理
 			if (files.length==0){
-				ftp.logout();
+//				ftp.logout();
 				return false;
 			}
 			else {
@@ -558,13 +587,18 @@
 					}
 				}
 				//关闭流
-				ftp.completePendingCommand();
-				ftp.logout();
+//				ftp.completePendingCommand();
+//				ftp.logout();
 			}
 		} catch (Exception e) {
 			System.out.println("ftp连接失败");
 			e.printStackTrace();
 		} finally {
+			try {
+				ftp.logout();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
 			if (ftp.isConnected()) {
 				try {
 					ftp.disconnect();
@@ -576,14 +610,132 @@
 		return false;
 	}
 
+//	/**
+//	 * 读取内外推送的实操成绩导入情况信息
+//	 * @return
+//	 */
+//	public boolean readExamScoreFile() {
+//		FTPClient ftp = new FTPClient();
+//		try {
+//			//设置传输超时时间为60秒
+//			ftp.setDataTimeout(10000);
+//			//连接超时为60秒
+//			ftp.setConnectTimeout(10000);
+//			//连接
+//			ftp.connect(ftpHost, ftpPort);
+//			System.out.println("读取内外推送的实操成绩导入情况信息!"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+//			// 登陆
+//			ftp.login(ftpUserNameIn, ftpPasswordIn);
+//			// 检验登陆操作的返回码是否正确
+//			if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
+//				ftp.disconnect();
+//				return false;
+//			}
+//
+////			ftp.enterLocalActiveMode();
+//
+//			// 设置文件类型为二进制,与ASCII有区别
+//			ftp.setFileType(FTP.BINARY_FILE_TYPE);
+//
+//			// 设置编码格式
+//			ftp.setControlEncoding("GBK");
+//
+//			// 检验文件是否存在
+////			ftp.changeWorkingDirectory(ftpPath);
+//
+//			// Use passive mode as default
+//			ftp.enterLocalPassiveMode();
+//
+//			FTPFile[] files = ftp.listFiles();
+//			//文件个数大于10个时开始处理
+//			if (files.length==0){
+////				ftp.logout();
+//				return false;
+//			}
+//			else {
+//				for (int i = files.length-1; i >=0 ; i--) {
+//					String fileName = files[i].getName();
+//					String substring = fileName.substring(0, 2);
+//					System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+":读取到文件 = " + fileName);
+//					if (substring.contains("ne")) {
+//						//把文件下载到本地
+//						long l = System.currentTimeMillis();
+//						FtpUtil.downloadFtpFile(ftpHost, ftpUserNameIn, ftpPasswordIn, ftpPort, ftpPath, localPath, fileName);
+//						long x = System.currentTimeMillis();
+//						System.out.println("下载文件耗时 = " + (x-l)+" 毫秒");
+//						//数据转换
+//						String json = OutJson.TestJson(fileName);
+//						//取出map
+//						Map<String,Object> map = JSON.parseObject(json, Map.class);
+//						//取出 key/uuid,取出结果
+//						String uuid = null;
+//						Result result = new Result();
+//						for (Map.Entry entry : map.entrySet()) {
+//							Object value = entry.getValue();
+//							//转换
+//							result = JSON.parseObject(value.toString(), Result.class);
+//						}
+//						if (null!=result) {
+//							examScoreHandler(result);
+//						}
+//						//删除本地文件
+//						MysqlCenlint.deletess(fileName);
+//						//删除 ftp 文件
+//						FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserNameIn, ftpPasswordIn, ftpPath, fileName);
+//						System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+":成功删除ftp文件 = " + fileName);
+//					}
+//				}
+//				//关闭流
+////				ftp.completePendingCommand();
+////				ftp.logout();
+//			}
+//		} catch (Exception e) {
+//			System.out.println("ftp连接失败");
+//			e.printStackTrace();
+//		} finally {
+//			try {
+//				ftp.logout();
+//			} catch (IOException e) {
+//				e.printStackTrace();
+//			}
+//			if (ftp.isConnected()) {
+//				try {
+//					ftp.disconnect();
+//				} catch (IOException e) {
+//					e.printStackTrace();
+//				}
+//			}
+//		}
+//		return false;
+//	}
+
+//	/**
+//	 * 实操成绩导入修改
+//	 * @param result
+//	 */
+//	private void examScoreHandler(Result result) {
+//		//导入的人员不存在
+//		HandlerLog handlerLog = new HandlerLog();
+//		handlerLog.setCreateTime(new Date());
+//		handlerLog.setDeptId(deptId);
+//		handlerLog.setOperatorTime(new Date());
+//		handlerLog.setType(4);
+//		handlerLog.setRemark(result.getMsg());
+//		//插入记录
+//		handlerLogService.save(handlerLog);
+//	}
+
 	/**
 	 * 报名信息处理
 	 * @param result
 	 */
-	private void applyHandler(String uuid,Result result) {
+	@Async
+	public void applyHandler(String uuid,Result result) {
 		//取出培训学校id
 		//从redis 中获取用户数据
 		String s = redisTemplate.opsForValue().get(uuid).toString();
+		//删除
+		redisTemplate.delete(uuid);
 		if (null!=s && !s.equals("")) {
 			//创建集合,存年龄符合要求
 			List<String> ageList = new ArrayList<>();
@@ -750,6 +902,8 @@
 				}
 			} else if (result.getCode() == 203) {
 				//保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 用户为新增
+				users.setHold("2");
+				users.setSecuritynumber("");
 				//新增
 				users.setId(result.getUserId());
 				//插入数据库
@@ -769,6 +923,8 @@
 				handlerLogService.save(handlerLog);
 			} else if (result.getCode() == 204) {
 				//保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 内网用户已存在情况
+				users.setHold("2");
+				users.setSecuritynumber("");
 				users.setId(result.getUserId());
 				//先查询当前库是否有改用户?
 				User user2 = userService.getById(result.getUserId());
@@ -836,5 +992,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);
+				}
+			}
+		}
+	}
+
 
 }

--
Gitblit v1.9.3