From 30701db6feddef40a7306b93f1571baaa5d0aeaa Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 15 Jun 2022 10:34:46 +0800
Subject: [PATCH] 保安员人员导入修改

---
 src/main/java/org/springblade/modules/quartz/task/Task.java |  268 ++++++++++++++++++++++++++++++-----------------------
 1 files changed, 153 insertions(+), 115 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 ae3bdd8..62a5861 100644
--- a/src/main/java/org/springblade/modules/quartz/task/Task.java
+++ b/src/main/java/org/springblade/modules/quartz/task/Task.java
@@ -414,6 +414,103 @@
 		return false;
 	}
 
+
+	/**
+	 * 读取内外推送的管理员导入的保安员返回文件(带保安证编号)
+	 * @return
+	 */
+	public boolean readPaperListFile() {
+		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;
+			}
+
+			// 设置文件类型为二进制,与ASCII有区别
+			ftp.setFileType(FTP.BINARY_FILE_TYPE);
+
+			// 设置编码格式
+			ftp.setControlEncoding("GBK");
+
+			// 检验文件是否存在
+			ftp.changeWorkingDirectory(ftpPath);
+
+			// Use passive mode as default
+			ftp.enterLocalPassiveMode();
+
+			FTPFile[] files = ftp.listFiles();
+			//文件处理
+			if (files.length==0){
+				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("np")) {
+						//把文件下载到本地
+						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);
+						Result result = new Result();
+						for (Map.Entry entry : map.entrySet()) {
+							Object value = entry.getValue();
+							//转换
+							result = JSON.parseObject(value.toString(), Result.class);
+						}
+						if (null!=result) {
+							try {
+								paperListInfoHandler(result);
+							}catch (Exception e) {
+								//异步用户处理逻辑
+								e.printStackTrace();
+							}
+						}
+						//删除本地文件
+						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);
+					}
+				}
+			}
+		} catch (Exception e) {
+			System.out.println("ftp连接失败");
+			e.printStackTrace();
+		} finally {
+			if (ftp.isConnected()) {
+				try {
+					ftp.logout();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+				try {
+					ftp.disconnect();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		return false;
+	}
+
 	/**
 	 * 用户集合信息处理
 	 * @param result
@@ -504,6 +601,62 @@
 					handlerLog.setDeptId(user.getDeptId());
 					handlerLog.setOperatorTime(user.getCreateTime());
 					handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]保安证编号不匹配,请核实!");
+					handlerLog.setType(2);
+					//插入记录
+					handlerLogService.save(handlerLog);
+				}
+			}
+		}
+	}
+
+	/**
+	 * 管理员导入用户集合信息处理
+	 * @param result
+	 */
+	@Async
+	public void paperListInfoHandler(Result result) {
+		//获取 result
+		List<Result> data1 = result.getData();
+		System.out.println("批量导入数据 = " + data1);
+		if (data1.size()>0){
+			for (Result result1 : data1) {
+				// 取出 Msg ,此 msg 存的对应的 uuid
+				String[] split = result1.getMsg().split(",");
+				String uuid = split[0];
+				//从redis 中获取用户数据
+				Object o1 = redisTemplate.opsForValue().get(uuid);
+				User user0 = JSON.parseObject(o1.toString(), User.class);
+				// 从redis 中获取对应的用户信息,脱敏处理过
+				User user = handlerUserInfo(uuid);
+				if (result1.getCode()==200){
+					user.setId(result1.getUserId());
+					user.setSecuritynumber(split[1]);
+					user.setHold("1");
+					user.setExaminationType("0");
+					boolean save = userService.save(user);
+					if (save){
+						//数据异步同步到群防群控
+						myAsyncService.qfqkUserSave(user);
+					}
+				}
+				if (result1.getCode()==202){
+					//已在其他单位存在
+					HandlerLog handlerLog = new HandlerLog();
+					handlerLog.setCreateTime(new Date());
+					handlerLog.setDeptId(user.getDeptId());
+					handlerLog.setOperatorTime(user.getCreateTime());
+					handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]已在其他单位存在");
+					handlerLog.setType(2);
+					//插入记录
+					handlerLogService.save(handlerLog);
+				}
+				if (result1.getCode()==205){
+					//审查异常
+					HandlerLog handlerLog = new HandlerLog();
+					handlerLog.setCreateTime(new Date());
+					handlerLog.setDeptId(user.getDeptId());
+					handlerLog.setOperatorTime(user.getCreateTime());
+					handlerLog.setRemark("用户["+DesensitizedUtil.desensitizedIdNumberBy4(user0.getCardid())+"]导入失败,该人员审查异常!");
 					handlerLog.setType(2);
 					//插入记录
 					handlerLogService.save(handlerLog);
@@ -611,121 +764,6 @@
 		}
 		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);
-//	}
 
 	/**
 	 * 报名信息处理

--
Gitblit v1.9.3