From dacafac0449f8df3ef7637a7ed05fa6270964f16 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Fri, 29 Apr 2022 16:19:45 +0800
Subject: [PATCH] ftp 修改,新增保安员培训报名校验,新增押运员批量导入校验,批量导入保安员优化

---
 src/main/java/org/springblade/modules/system/mapper/UserMapper.xml                            |    2 
 src/main/java/org/springblade/modules/FTP/FtpUtil.java                                        |   19 +
 src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java |   99 ++++-
 src/main/java/org/springblade/modules/FTP/DataHandler.java                                    |    4 
 src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java                |  761 ++++++++++++++++++++++++++++----------------
 src/main/java/org/springblade/modules/system/service/MyAsyncService.java                      |    8 
 src/main/java/org/springblade/modules/FTP/Result.java                                         |    8 
 src/main/java/org/springblade/modules/FTP/Monitor.java                                        |   77 ++++
 src/main/java/org/springblade/modules/system/controller/UserController.java                   |    1 
 9 files changed, 669 insertions(+), 310 deletions(-)

diff --git a/src/main/java/org/springblade/modules/FTP/DataHandler.java b/src/main/java/org/springblade/modules/FTP/DataHandler.java
index b9631a8..e9320d1 100644
--- a/src/main/java/org/springblade/modules/FTP/DataHandler.java
+++ b/src/main/java/org/springblade/modules/FTP/DataHandler.java
@@ -51,6 +51,7 @@
 	 */
 	public static Result handlerList(String json, String uuid) {
 		Map map = JSON.parseObject(json, Map.class);
+		System.out.println("map = " + map);
 		//获取结果
 		Object o = map.get(uuid);
 		System.out.println("o = " + o);
@@ -164,6 +165,9 @@
 		user1.setNativeplace("");
 		user1.setEducation("");
 		user1.setPoliticaloutlook("");
+		user1.setMyPicture("");
+		user1.setHeight("");
+		user1.setRtime(null);
 		//返回
 		return user1;
 	}
diff --git a/src/main/java/org/springblade/modules/FTP/FtpUtil.java b/src/main/java/org/springblade/modules/FTP/FtpUtil.java
index 0ff9d5e..aa2bd4f 100644
--- a/src/main/java/org/springblade/modules/FTP/FtpUtil.java
+++ b/src/main/java/org/springblade/modules/FTP/FtpUtil.java
@@ -340,4 +340,23 @@
 		FtpUtil.uploadFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpPath, "/",  "l"+response1+".json", in1);
 		MysqlCenlint.deletess("l"+response1+".json");
 	}
+
+	/**
+	 * 报名信息查验
+	 * @param map
+	 */
+	public static void objectFileUploadListUserId(Map<String, Object> map){
+		String json1 = JSON.toJSONString(map);
+		System.out.println("json1 = " + json1);
+		String response1 = String.valueOf((new Date()).getTime());
+		OutJson.createJsonFile(json1, localPath, "t"+response1);
+		FileInputStream in1 = null;
+		try {
+			in1 = new FileInputStream(new File(localPath + "t"+response1+".json"));
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		}
+		FtpUtil.uploadFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpPath, "/",  "t"+response1+".json", in1);
+		MysqlCenlint.deletess("t"+response1+".json");
+	}
 }
diff --git a/src/main/java/org/springblade/modules/FTP/Monitor.java b/src/main/java/org/springblade/modules/FTP/Monitor.java
index 51be943..866a150 100644
--- a/src/main/java/org/springblade/modules/FTP/Monitor.java
+++ b/src/main/java/org/springblade/modules/FTP/Monitor.java
@@ -108,7 +108,7 @@
 	}
 
 	/**
-	 * 读取文件(对象)
+	 * 读取文件(对象)用户批量操作返回
 	 * @param uuid 随机数
 	 * @return
 	 */
@@ -183,6 +183,81 @@
 	}
 
 	/**
+	 * 读取文件(对象)报名返回
+	 * @param uuid 随机数
+	 * @return
+	 */
+	public static Result getFtpDataByUuidListTrain(String uuid) {
+		//创建 ftp 对象
+		FTPClient ftp = new FTPClient();
+		boolean flag = false;
+		try {
+			//连接
+			ftp.connect(ftpHost, ftpPort);
+			// 登陆
+			ftp.login(ftpUserName, ftpPassword);
+			// 检验登陆操作的返回码是否正确
+			if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
+				ftp.disconnect();
+				return new Result(400,null,"ftp 连接失败",null);
+			}
+
+			ftp.enterLocalActiveMode();
+
+			// 设置文件类型为二进制,与ASCII有区别
+			ftp.setFileType(FTP.BINARY_FILE_TYPE);
+
+			// 设置编码格式
+			ftp.setControlEncoding("GBK");
+
+			// 检验文件是否存在
+			ftp.changeWorkingDirectory(ftpPath);
+			FTPFile[] files = ftp.listFiles();
+			if (files.length==0){
+				return new Result(400,null,"未读取到文件",null);
+			} else {
+				for (FTPFile file : files){
+					String fileName = file.getName();
+					InputStream is = ftp.retrieveFileStream(new String(fileName.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING));
+					String substring1 = fileName.substring(0, 2);
+					if (substring1.equals("nt")){
+						//把文件下载到本地
+						FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName);
+						// 解析数据
+						String s = OutJson.TestJson(fileName);
+						//数据处理
+						Result result = DataHandler.handlerList(s,uuid);
+						//匹配上了删除文件
+						if (result.getCode()==200) {
+							//删除本地文件
+							MysqlCenlint.deletess(fileName);
+							//删除 ftp 文件
+							FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpPath, fileName);
+							//返回
+							return result;
+						}
+						is.close();
+						ftp.completePendingCommand();
+					}
+				}
+				return new Result(400,null,"未读取到对应的文件",null);
+			}
+		} catch (Exception e) {
+			System.out.println("ftp连接失败");
+			e.printStackTrace();
+		} finally {
+			if (ftp != null) {
+				try {
+					ftp.disconnect();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		return new Result(400,null,"失败",null);
+	}
+
+	/**
 	 * 读取内外推送的文件,每30秒读取一次
 	 * @return
 	 */
diff --git a/src/main/java/org/springblade/modules/FTP/Result.java b/src/main/java/org/springblade/modules/FTP/Result.java
index 9bac2c0..5742483 100644
--- a/src/main/java/org/springblade/modules/FTP/Result.java
+++ b/src/main/java/org/springblade/modules/FTP/Result.java
@@ -21,20 +21,12 @@
 
 	private User user;
 
-	private Result result;
-
 	private List<Result> data;
 
 	public Result(Integer code, String msg, List<Result> data) {
 		this.code = code;
 		this.msg = msg;
 		this.data = data;
-	}
-
-	public Result(Integer code, String msg, Result result) {
-		this.code = code;
-		this.msg = msg;
-		this.result = result;
 	}
 
 	public Result() {
diff --git a/src/main/java/org/springblade/modules/system/controller/UserController.java b/src/main/java/org/springblade/modules/system/controller/UserController.java
index 92a2f75..349c544 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -1133,6 +1133,7 @@
 	@GetMapping("/security-apply-tree")
 	public R<List<TreeNode>> securityApplyTree(UserVO user) {
 		List<TreeNode> tree = userService.getSecurityApplyTree(user);
+		System.out.println("tree = " + tree);
 		return R.data(tree);
 	}
 
diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
index c8aee5a..176b471 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -555,7 +555,7 @@
             select #{user.deptId} as id,
                 '全部' as name,
                 0 as parentId
-                from blade_user
+                from blade_user limit 1
         )
 
         union all
diff --git a/src/main/java/org/springblade/modules/system/service/MyAsyncService.java b/src/main/java/org/springblade/modules/system/service/MyAsyncService.java
index ea7a260..3456245 100644
--- a/src/main/java/org/springblade/modules/system/service/MyAsyncService.java
+++ b/src/main/java/org/springblade/modules/system/service/MyAsyncService.java
@@ -175,4 +175,12 @@
 	public void FTPObjectList(Map<String, Object> map) {
 		FtpUtil.objectFileUploadList(map);
 	}
+
+	/**
+	 * 存入集合
+	 * @param map
+	 */
+	public void FTPObjectListUserId(Map<String, Object> map) {
+		FtpUtil.objectFileUploadListUserId(map);
+	}
 }
diff --git a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
index a189068..59109f9 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -1385,12 +1385,13 @@
 				//如果返回true,就退处
 				if (result.getCode() == 200) {
 					break;
-				}else {
-					count++;
-					if (count == 30) {
-						break;
-					}
 				}
+//				else {
+//					count++;
+//					if (count == 60) {
+//						break;
+//					}
+//				}
 			}
 		}
 
@@ -1401,7 +1402,10 @@
 				for (Result result1 : data1) {
 					// 取出 Msg ,此 msg 存的对应的 uuid
 					String uuid = result1.getMsg();
-					// 从redis 中获取对应的用户信息
+					//从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());
@@ -1419,22 +1423,22 @@
 					if (result1.getCode()==202){
 						status.set(false);
 						//已在其他单位存在
-						errorList.add(user.getCardid());
+						errorList.add(user0.getCardid());
 					}
 					if (result1.getCode()==203){
 						securityInvalidStatus.set(false);
 						//保安证编号不匹配
-						securityInvalidList.add(user.getCardid());
+						securityInvalidList.add(user0.getCardid());
 					}
 				}
-				//批量插入
-				if (addList.size()>0){
-					baseMapper.batchUserList(addList);
-				}
-				//批量更新
-				if (updateList.size()>0){
-					baseMapper.batchUpdateUserList(updateList);
-				}
+//				//批量插入
+//				if (addList.size()>0){
+//					baseMapper.batchUserList(addList);
+//				}
+//				//批量更新
+//				if (updateList.size()>0){
+//					baseMapper.batchUpdateUserList(updateList);
+//				}
 			}
 		}
 
@@ -1488,6 +1492,10 @@
 		user1.setNativeplace("");
 		user1.setEducation("");
 		user1.setPoliticaloutlook("");
+		user1.setMyPicture("");
+		user1.setHeight("");
+		user1.setRtime(null);
+		user1.setGuncode("");
 		//返回
 		return user1;
 	}
@@ -1500,19 +1508,22 @@
 	 */
 	@Override
 	public void importSecurityYy(List<SecurityYyExcel> data, Boolean isCovered, String deptId) {
+		//uuidList
+		List<String> uuidList = new ArrayList<>();
 		//将不能导入的保安员账号存起来
 		List<String> errorList = new ArrayList<>();
-		//将需要新增的保安员信息存入集合
+		//年龄不符的保安员信息存入集合
 		List<String> ageErrorList = new ArrayList<>();
 		//保安员证编号不符的保安员信息存入集合
 		List<String> securityInvalidList = new ArrayList<>();
-		//将需要更新的保安员信息存入集合
-		List<User> updateList = new ArrayList<>();
+		//需要推送内网的保安员信息集合
+		List<User> userList = new ArrayList<>();
 		//导入状态,默认为true ,如果有一个出现问题则为 false
 		AtomicBoolean status = new AtomicBoolean(true);
 		AtomicBoolean agetStatus = new AtomicBoolean(true);
 		AtomicBoolean securityInvalidStatus = new AtomicBoolean(true);
-		data.forEach(userExcel -> {
+		//遍历
+		for (SecurityYyExcel userExcel : data) {
 			User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
 			//设置部门id
 			String deptIds = userDeptService.selectIn(user.getDeptId());
@@ -1528,7 +1539,7 @@
 				throw new ServiceException("导入失败!公司名:["+user.getDeptId()+"]不存在!");
 			}
 
-			//身份证号码校验
+			//身份证校验
 			if (null==user.getCardid() || user.getCardid().equals("")){
 				throw new ServiceException("导入失败!身份证号码不能为空!");
 			}
@@ -1546,269 +1557,130 @@
 				}else {
 					agetStatus.set(false);
 					ageErrorList.add(user.getCardid());
-//					throw new ServiceException("导入失败!身份证号码[ "+user.getCardid()+" ]不正确,请核对!");
-					//forEach 只能使用 return 跳出本次循环
-					return;
+					continue;
 				}
 			}
-			//判断当前用户是否已在本单位,如果是的更新数据
-			User user1 = new User();
-			user1.setAccount(user.getCardid());
-			user1.setIsDeleted(0);
-			user1.setStatus(1);
-			user1.setGuncode(user.getGuncode());
-			User user2 = this.getOne(Condition.getQueryWrapper(user1));
-			if (null==user2){
-				//用户不存在,去新增
-				// 设置租户ID
-				user.setTenantId("000000");
-				//默认在职
-				user.setStatus(1);
-				user.setIsDeleted(0);
-				//判断是否持证
-				if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
-					user.setHold("1");
-					//校验保安员证编号是否合规
-					SecurityPaper securityPaper = new SecurityPaper();
-					securityPaper.setIdCardNo(userExcel.getCardid());
-					List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
-					if (securityPaperList.size()>0){
-						boolean state = false;
-						//遍历
-						for (SecurityPaper paper : securityPaperList) {
-							if (paper.getNumber().equals(user.getSecuritynumber())){
-								state = true;
-							}
-						}
-						if (!state){
-							user.setHold("2");
-							user.setSecuritynumber(null);
-							securityInvalidList.add(userExcel.getCardid());
-							securityInvalidStatus.set(false);
-						}
-					}else {
-						user.setHold("2");
-						user.setSecuritynumber(null);
-						securityInvalidList.add(userExcel.getCardid());
-						securityInvalidStatus.set(false);
-					}
+
+			// 设置租户ID
+			user.setTenantId("000000");
+			//默认在职
+			user.setStatus(1);
+			user.setIsDeleted(0);
+			//分配保安角色
+			Role role = new Role();
+			role.setRoleAlias("保安");
+			Role oneRole = roleService.getOne(Condition.getQueryWrapper(role));
+			user.setRoleId(oneRole.getId().toString());
+
+			if (null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){
+				user.setHold("1");
+			}else {
+				user.setHold("2");
+			}
+
+			//性别
+			if (null != userExcel.getSex()) {
+				if (userExcel.getSex().equals("男")) {
+					user.setSex(1);
+				}else if (userExcel.getSex().equals("女")) {
+					user.setSex(2);
 				}else {
-					user.setHold("2");
+					user.setSex(1);
 				}
-				//分配保安角色
-				Role role = new Role();
-				role.setRoleAlias("保安");
-				Role oneRole = roleService.getOne(Condition.getQueryWrapper(role));
-				user.setRoleId(oneRole.getId().toString());
-
-				//性别
-				if (null != userExcel.getSex()) {
-					if (userExcel.getSex().equals("男")) {
-						user.setSex(1);
-					}
-					if (userExcel.getSex().equals("女")) {
-						user.setSex(2);
-					}
-				}
-
-				//设置账号
-				user.setAccount(user.getCardid());
-				//获取默认密码配置
-				user.setPassword(user.getCardid().substring(user.getCardid().length() - 6));
-				//加密
-				if (Func.isNotEmpty(user.getPassword())) {
-					user.setPassword(DigestUtil.encrypt(user.getPassword()));
-				}
-				Integer userCount = baseMapper.selectCountAccount(user.getAccount());
-				if (userCount > 0 && Func.isEmpty(user.getId())) {
-					throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
-				}
-				user.setCreateTime(new Date());
-				//新增
-				this.save(user);
-				//qfqk 推送
-				myAsyncService.qfqkUserSave(user);
-
-				//从业记录新增
-				Experience experience = new Experience();
-				experience.setCardid(user.getCardid());
-				experience.setSecurityid(user.getId().toString());
-				experience.setCompanyname(userExcel.getDeptId());
-				experience.setName(user.getRealName());
-				experience.setPost("保安员");
-				experience.setEntrytime(new Date());
-				experienceService.save(experience);
-
-				//内网同步
-				String s = "insert into blade_user(" +
-					"id,tenant_id,account,password,name,real_name,avatar,email,phone,sex," +
-					"role_id,dept_id,cardid,nativePlace,nation,fingerprint,education," +
-					"politicaloutlook,healstats,height,address,registered," +
-					"securitynumber,hold,jurisdiction,examination_type,status,is_deleted,dispatch,create_time,guncode) " +
-					"values(" + "'" + user.getId() + "'" +
-					"," + "'" + user.getTenantId() + "'" +
-					"," + "'" + user.getAccount() + "'" +
-					"," + "'" + user.getPassword() + "'" +
-					"," + "'" + user.getName() + "'" +
-					"," + "'" + user.getRealName() + "'" +
-					"," + "'" + user.getAvatar() + "'" +
-					"," + "'" + user.getEmail() + "'" +
-					"," + "'" + user.getPhone() + "'" +
-					"," + "'" + user.getSex() + "'" +
-					"," + "'" + user.getRoleId() + "'" +
-					"," + "'" + user.getDeptId() + "'" +
-					"," + "'" + user.getCardid() + "'" +
-					"," + "'" + user.getNativeplace() + "'" +
-					"," + "'" + user.getNation() + "'" +
-					"," + "'" + user.getFingerprint() + "'" +
-					"," + "'" + user.getEducation() + "'" +
-					"," + "'" + user.getPoliticaloutlook() + "'" +
-					"," + "'" + user.getHealstats() + "'"+
-					"," + "'" + user.getHeight() + "'" +
-					"," + "'" + user.getAddress() + "'" +
-					"," + "'" + user.getRegistered() + "'" +
-					"," + "'" + user.getSecuritynumber() + "'" +
-					"," + "'" + user.getHold() + "'" +
-					"," + "'" + user.getJurisdiction() + "'" +
-					"," + "'" + user.getExaminationType() + "'" +
-					"," + "'" + user.getStatus() + "'" +
-					"," + "'" + user.getIsDeleted() + "'" +
-					"," + "'" + user.getDispatch() + "'" +
-					"," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" +
-				"," + "'" + user.getGuncode() + "'" + ");"+
-				"insert into sys_experience(id,name,post,entryTime," +
-					"cardId,companyname,securityId) " +
-					"values(" + "'" + experience.getId() + "'" + "," +
-					"'" + experience.getName() + "'" + "," +
-					"'" + experience.getPost() + "'" + "," +
-					"," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
-					"," + "'" + experience.getCardid() + "'" +
-					"," + "'" + experience.getCompanyname() + "'" +
-					"," + "'" + experience.getSecurityid() + "'"
-					+ ")";
-				//FtpUtil.sqlFileUpload(s);
-				myAsyncService.FTP(s);
+			}else {
+				user.setSex(1);
 			}
-			else {
-				//匹配组织机构是否一致,如果不一致
-				if(!user2.getDeptId().equals(user.getDeptId())){
-					Dept dept = deptService.getById(user2.getDeptId());
-					Dept dept1 = deptService.getById(user.getDeptId());
-					//如果是南昌总公司分公司导入的
-					if (dept.getId().equals(1432626178757275649L) && dept1.getParentId().equals(1432626178757275649L)){
-						user2.setDeptId(dept1.getId().toString());
-						//判断是否持证
-						if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
-							user2.setHold("1");
-							user2.setSecuritynumber(user.getSecuritynumber());
-							//校验保安员证编号是否合规
-							SecurityPaper securityPaper = new SecurityPaper();
-							securityPaper.setIdCardNo(userExcel.getCardid());
-							List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
-							if (securityPaperList.size()>0){
-								boolean state = false;
-								//遍历
-								for (SecurityPaper paper : securityPaperList) {
-									if (paper.getNumber().equals(user.getSecuritynumber())){
-										state = true;
-									}
-								}
-								if (!state){
-									user2.setHold("2");
-									user2.setSecuritynumber(null);
-									securityInvalidList.add(userExcel.getCardid());
-									securityInvalidStatus.set(false);
-								}
-							}else {
-								user2.setHold("2");
-								user2.setSecuritynumber(null);
-								securityInvalidList.add(userExcel.getCardid());
-								securityInvalidStatus.set(false);
-							}
-						}else {
-							user2.setHold("2");
-						}
-						if (null!=userExcel.getRegistered()){
-							user2.setRegistered(userExcel.getRegistered());
-						}else {
-							user2.setRegistered("");
-						}
-						user2.setUpdateTime(new Date());
-						//更新用户数据
-						this.updateById(user2);
-						//qfqk 推送
-						myAsyncService.updateUserByQfqk(user);
 
-						String s1 =
-							"update blade_user set hold = " + "'" + user2.getHold() + "'"
-								+ ",securitynumber = " + "'" + user2.getSecuritynumber() + "'"
-								+ ",dept_id = " + "'" + user2.getDeptId() + "'"
-								+ ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'"
-								+ ",registered = " + "'" + user2.getRegistered() + "'"
-								+ " " + "where id = " + "'" + user2.getId() + "'";
-						//FtpUtil.sqlFileUpload(s1);
-						myAsyncService.FTP(s1);
-					}else {
+			//设置账号
+			user.setAccount(user.getRealName());
+			//加密
+			user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6)));
+			user.setCreateTime(new Date());
+			user.setUpdateTime(new Date());
+			user.setDispatch("1");
+			//待审查
+			user.setExaminationType("2");
+
+			//推送内网的数据
+			User user0 = user;
+
+			//生成随机数
+			String uuid = UUID.randomUUID().toString();
+			//将 user 存入 redis
+			redisTemplate.opsForValue().set(uuid, JSON.toJSONString(user));
+			//user0 临时设置uuid 到 reason_for_leav 离职原因字段
+			user0.setReasonForLeav(uuid);
+			//加入集合
+			userList.add(user0);
+			uuidList.add(uuid);
+		}
+
+		Result result = new Result();
+		//用户批量插入
+		if (userList.size()>0) {
+			//生成随机数
+			String uuid = UUID.randomUUID().toString();
+			//数据推送
+			Map<String, Object> map = new HashMap<>(1);
+			map.put(uuid, userList);
+			myAsyncService.FTPObjectList(map);
+
+			int count = 0;
+			//调用ftp获取返回数据
+			while (true){
+				try {
+					Thread.sleep(1000);
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+				//调用ftp获取返回数据
+				result = Monitor.getFtpDataByUuidList(uuid);
+				//如果返回true,就退处
+				if (result.getCode() == 200) {
+					break;
+				}
+			}
+		}
+
+		if (null!=result){
+			//获取 result
+			List<Result> data1 = result.getData();
+			if (data1.size()>0){
+				for (Result result1 : data1) {
+					// 取出 Msg ,此 msg 存的对应的 uuid
+					String uuid = result1.getMsg();
+					//从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());
+						this.save(user);
+						//加入新增集合
+//						addList.add(user);
+					}
+					if (result1.getCode()==201){
+						user.setId(result1.getUserId());
+						user.setCreateTime(null);
+						this.updateById(user);
+						//加入更新集合
+//						updateList.add(user);
+					}
+					if (result1.getCode()==202){
 						status.set(false);
-						//加入集合
-						errorList.add(user.getCardid());
-						//forEach 只能使用 return 跳出本次循环
-						return;
+						//已在其他单位存在
+						errorList.add(user0.getCardid());
 					}
-				}else {
-					//如果是一致,则更新用户数据
-					if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
-						user2.setHold("1");
-						user2.setSecuritynumber(user.getSecuritynumber());
-						//校验保安员证编号是否合规
-						SecurityPaper securityPaper = new SecurityPaper();
-						securityPaper.setIdCardNo(userExcel.getCardid());
-						List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
-						if (securityPaperList.size()>0){
-							boolean state = false;
-							//遍历
-							for (SecurityPaper paper : securityPaperList) {
-								if (paper.getNumber().equals(user.getSecuritynumber())){
-									state = true;
-								}
-							}
-							if (!state){
-								user2.setHold("2");
-								user2.setSecuritynumber(null);
-								securityInvalidList.add(userExcel.getCardid());
-								securityInvalidStatus.set(false);
-							}
-						}else {
-							user2.setHold("2");
-							user2.setSecuritynumber(null);
-							securityInvalidList.add(userExcel.getCardid());
-							securityInvalidStatus.set(false);
-						}
-					}else {
-						user2.setHold("2");
+					if (result1.getCode()==203){
+						securityInvalidStatus.set(false);
+						//保安证编号不匹配
+						securityInvalidList.add(user0.getCardid());
 					}
-					if (null!=userExcel.getRegistered()){
-						user2.setRegistered(userExcel.getRegistered());
-					}else {
-						user2.setRegistered("");
-					}
-					user2.setUpdateTime(new Date());
-					//更新用户数据
-					this.updateById(user2);
-					//qfqk 推送
-					myAsyncService.updateUserByQfqk(user);
-
-					String s1 =
-						"update blade_user set hold = " + "'" + user2.getHold() + "'"
-							+ ",securitynumber = " + "'" + user2.getSecuritynumber() + "'"
-							+ ",registered = " + "'" + user2.getRegistered() + "'"
-							+ ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'"
-							+ " " + "where id = " + "'" + user2.getId() + "'";
-					//FtpUtil.sqlFileUpload(s1);
-					myAsyncService.FTP(s1);
 				}
 			}
-		});
+		}
+
 		//如果所有数据导入有一个异常
 		StringBuilder errorBuilder = new StringBuilder();
 		if (!status.get()){
@@ -1817,11 +1689,12 @@
 		}
 		if (!agetStatus.get()){
 			String errorAccount = StringUtils.join(ageErrorList, "\\\n");
-			errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
+			errorBuilder.append("用户:[" + errorAccount + "]导入失败!身份证号码不正确,请核对!");
 		}
 		if (!securityInvalidStatus.get()){
 			String errorAccount = StringUtils.join(securityInvalidList, "\\\n");
-			errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+			errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!");
+//			errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
 		}
 		//抛出异常
 		if (errorBuilder.length()>0){
@@ -1830,6 +1703,344 @@
 	}
 
 
+///**
+//	 * 保安员导入(押运人员导入)
+//	 * @param data
+//	 * @param isCovered
+//	 * @param deptId
+//	 */
+//	@Override
+//	public void importSecurityYy(List<SecurityYyExcel> data, Boolean isCovered, String deptId) {
+//		//将不能导入的保安员账号存起来
+//		List<String> errorList = new ArrayList<>();
+//		//将需要新增的保安员信息存入集合
+//		List<String> ageErrorList = new ArrayList<>();
+//		//保安员证编号不符的保安员信息存入集合
+//		List<String> securityInvalidList = new ArrayList<>();
+//		//将需要更新的保安员信息存入集合
+//		List<User> updateList = new ArrayList<>();
+//		//导入状态,默认为true ,如果有一个出现问题则为 false
+//		AtomicBoolean status = new AtomicBoolean(true);
+//		AtomicBoolean agetStatus = new AtomicBoolean(true);
+//		AtomicBoolean securityInvalidStatus = new AtomicBoolean(true);
+//		data.forEach(userExcel -> {
+//			User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
+//			//设置部门id
+//			String deptIds = userDeptService.selectIn(user.getDeptId());
+//			if (null!=deptIds && !deptIds.equals("")) {
+//				if (null != deptId && !deptId.equals("")) {
+//					if (!deptId.equals(deptIds)) {
+//						throw new ServiceException("导入失败!不能导入不是本公司的保安员数据!");
+//					}
+//				}
+//				user.setDeptId(deptIds);
+//			}else {
+//				//如果deptIds 为空,则说明还没有改公司
+//				throw new ServiceException("导入失败!公司名:["+user.getDeptId()+"]不存在!");
+//			}
+//
+//			//身份证号码校验
+//			if (null==user.getCardid() || user.getCardid().equals("")){
+//				throw new ServiceException("导入失败!身份证号码不能为空!");
+//			}
+//			//身份证住址校验
+//			if (null==user.getRegistered() || user.getRegistered().equals("")){
+//				throw new ServiceException("导入失败!身份证住址不能为空!");
+//			}
+//			if (null!=user.getCardid() && !user.getCardid().equals("")){
+//				//去除所有空格
+//				String cardid = user.getCardid().replaceAll(" ", "");
+//				//校验
+//				boolean b = IdCardNoUtil.checkIdCardNo(cardid);
+//				if(b){
+//					user.setCardid(cardid);
+//				}else {
+//					agetStatus.set(false);
+//					ageErrorList.add(user.getCardid());
+////					throw new ServiceException("导入失败!身份证号码[ "+user.getCardid()+" ]不正确,请核对!");
+//					//forEach 只能使用 return 跳出本次循环
+//					return;
+//				}
+//			}
+//			//判断当前用户是否已在本单位,如果是的更新数据
+//			User user1 = new User();
+//			user1.setAccount(user.getCardid());
+//			user1.setIsDeleted(0);
+//			user1.setStatus(1);
+//			user1.setGuncode(user.getGuncode());
+//			User user2 = this.getOne(Condition.getQueryWrapper(user1));
+//			if (null==user2){
+//				//用户不存在,去新增
+//				// 设置租户ID
+//				user.setTenantId("000000");
+//				//默认在职
+//				user.setStatus(1);
+//				user.setIsDeleted(0);
+//				//判断是否持证
+//				if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
+//					user.setHold("1");
+//					//校验保安员证编号是否合规
+//					SecurityPaper securityPaper = new SecurityPaper();
+//					securityPaper.setIdCardNo(userExcel.getCardid());
+//					List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
+//					if (securityPaperList.size()>0){
+//						boolean state = false;
+//						//遍历
+//						for (SecurityPaper paper : securityPaperList) {
+//							if (paper.getNumber().equals(user.getSecuritynumber())){
+//								state = true;
+//							}
+//						}
+//						if (!state){
+//							user.setHold("2");
+//							user.setSecuritynumber(null);
+//							securityInvalidList.add(userExcel.getCardid());
+//							securityInvalidStatus.set(false);
+//						}
+//					}else {
+//						user.setHold("2");
+//						user.setSecuritynumber(null);
+//						securityInvalidList.add(userExcel.getCardid());
+//						securityInvalidStatus.set(false);
+//					}
+//				}else {
+//					user.setHold("2");
+//				}
+//				//分配保安角色
+//				Role role = new Role();
+//				role.setRoleAlias("保安");
+//				Role oneRole = roleService.getOne(Condition.getQueryWrapper(role));
+//				user.setRoleId(oneRole.getId().toString());
+//
+//				//性别
+//				if (null != userExcel.getSex()) {
+//					if (userExcel.getSex().equals("男")) {
+//						user.setSex(1);
+//					}
+//					if (userExcel.getSex().equals("女")) {
+//						user.setSex(2);
+//					}
+//				}
+//
+//				//设置账号
+//				user.setAccount(user.getCardid());
+//				//获取默认密码配置
+//				user.setPassword(user.getCardid().substring(user.getCardid().length() - 6));
+//				//加密
+//				if (Func.isNotEmpty(user.getPassword())) {
+//					user.setPassword(DigestUtil.encrypt(user.getPassword()));
+//				}
+//				Integer userCount = baseMapper.selectCountAccount(user.getAccount());
+//				if (userCount > 0 && Func.isEmpty(user.getId())) {
+//					throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
+//				}
+//				user.setCreateTime(new Date());
+//				//新增
+//				this.save(user);
+//				//qfqk 推送
+//				myAsyncService.qfqkUserSave(user);
+//
+//				//从业记录新增
+//				Experience experience = new Experience();
+//				experience.setCardid(user.getCardid());
+//				experience.setSecurityid(user.getId().toString());
+//				experience.setCompanyname(userExcel.getDeptId());
+//				experience.setName(user.getRealName());
+//				experience.setPost("保安员");
+//				experience.setEntrytime(new Date());
+//				experienceService.save(experience);
+//
+//				//内网同步
+//				String s = "insert into blade_user(" +
+//					"id,tenant_id,account,password,name,real_name,avatar,email,phone,sex," +
+//					"role_id,dept_id,cardid,nativePlace,nation,fingerprint,education," +
+//					"politicaloutlook,healstats,height,address,registered," +
+//					"securitynumber,hold,jurisdiction,examination_type,status,is_deleted,dispatch,create_time,guncode) " +
+//					"values(" + "'" + user.getId() + "'" +
+//					"," + "'" + user.getTenantId() + "'" +
+//					"," + "'" + user.getAccount() + "'" +
+//					"," + "'" + user.getPassword() + "'" +
+//					"," + "'" + user.getName() + "'" +
+//					"," + "'" + user.getRealName() + "'" +
+//					"," + "'" + user.getAvatar() + "'" +
+//					"," + "'" + user.getEmail() + "'" +
+//					"," + "'" + user.getPhone() + "'" +
+//					"," + "'" + user.getSex() + "'" +
+//					"," + "'" + user.getRoleId() + "'" +
+//					"," + "'" + user.getDeptId() + "'" +
+//					"," + "'" + user.getCardid() + "'" +
+//					"," + "'" + user.getNativeplace() + "'" +
+//					"," + "'" + user.getNation() + "'" +
+//					"," + "'" + user.getFingerprint() + "'" +
+//					"," + "'" + user.getEducation() + "'" +
+//					"," + "'" + user.getPoliticaloutlook() + "'" +
+//					"," + "'" + user.getHealstats() + "'"+
+//					"," + "'" + user.getHeight() + "'" +
+//					"," + "'" + user.getAddress() + "'" +
+//					"," + "'" + user.getRegistered() + "'" +
+//					"," + "'" + user.getSecuritynumber() + "'" +
+//					"," + "'" + user.getHold() + "'" +
+//					"," + "'" + user.getJurisdiction() + "'" +
+//					"," + "'" + user.getExaminationType() + "'" +
+//					"," + "'" + user.getStatus() + "'" +
+//					"," + "'" + user.getIsDeleted() + "'" +
+//					"," + "'" + user.getDispatch() + "'" +
+//					"," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" +
+//				"," + "'" + user.getGuncode() + "'" + ");"+
+//				"insert into sys_experience(id,name,post,entryTime," +
+//					"cardId,companyname,securityId) " +
+//					"values(" + "'" + experience.getId() + "'" + "," +
+//					"'" + experience.getName() + "'" + "," +
+//					"'" + experience.getPost() + "'" + "," +
+//					"," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
+//					"," + "'" + experience.getCardid() + "'" +
+//					"," + "'" + experience.getCompanyname() + "'" +
+//					"," + "'" + experience.getSecurityid() + "'"
+//					+ ")";
+//				//FtpUtil.sqlFileUpload(s);
+//				myAsyncService.FTP(s);
+//			}
+//			else {
+//				//匹配组织机构是否一致,如果不一致
+//				if(!user2.getDeptId().equals(user.getDeptId())){
+//					Dept dept = deptService.getById(user2.getDeptId());
+//					Dept dept1 = deptService.getById(user.getDeptId());
+//					//如果是南昌总公司分公司导入的
+//					if (dept.getId().equals(1432626178757275649L) && dept1.getParentId().equals(1432626178757275649L)){
+//						user2.setDeptId(dept1.getId().toString());
+//						//判断是否持证
+//						if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
+//							user2.setHold("1");
+//							user2.setSecuritynumber(user.getSecuritynumber());
+//							//校验保安员证编号是否合规
+//							SecurityPaper securityPaper = new SecurityPaper();
+//							securityPaper.setIdCardNo(userExcel.getCardid());
+//							List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
+//							if (securityPaperList.size()>0){
+//								boolean state = false;
+//								//遍历
+//								for (SecurityPaper paper : securityPaperList) {
+//									if (paper.getNumber().equals(user.getSecuritynumber())){
+//										state = true;
+//									}
+//								}
+//								if (!state){
+//									user2.setHold("2");
+//									user2.setSecuritynumber(null);
+//									securityInvalidList.add(userExcel.getCardid());
+//									securityInvalidStatus.set(false);
+//								}
+//							}else {
+//								user2.setHold("2");
+//								user2.setSecuritynumber(null);
+//								securityInvalidList.add(userExcel.getCardid());
+//								securityInvalidStatus.set(false);
+//							}
+//						}else {
+//							user2.setHold("2");
+//						}
+//						if (null!=userExcel.getRegistered()){
+//							user2.setRegistered(userExcel.getRegistered());
+//						}else {
+//							user2.setRegistered("");
+//						}
+//						user2.setUpdateTime(new Date());
+//						//更新用户数据
+//						this.updateById(user2);
+//						//qfqk 推送
+//						myAsyncService.updateUserByQfqk(user);
+//
+//						String s1 =
+//							"update blade_user set hold = " + "'" + user2.getHold() + "'"
+//								+ ",securitynumber = " + "'" + user2.getSecuritynumber() + "'"
+//								+ ",dept_id = " + "'" + user2.getDeptId() + "'"
+//								+ ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'"
+//								+ ",registered = " + "'" + user2.getRegistered() + "'"
+//								+ " " + "where id = " + "'" + user2.getId() + "'";
+//						//FtpUtil.sqlFileUpload(s1);
+//						myAsyncService.FTP(s1);
+//					}else {
+//						status.set(false);
+//						//加入集合
+//						errorList.add(user.getCardid());
+//						//forEach 只能使用 return 跳出本次循环
+//						return;
+//					}
+//				}else {
+//					//如果是一致,则更新用户数据
+//					if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
+//						user2.setHold("1");
+//						user2.setSecuritynumber(user.getSecuritynumber());
+//						//校验保安员证编号是否合规
+//						SecurityPaper securityPaper = new SecurityPaper();
+//						securityPaper.setIdCardNo(userExcel.getCardid());
+//						List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
+//						if (securityPaperList.size()>0){
+//							boolean state = false;
+//							//遍历
+//							for (SecurityPaper paper : securityPaperList) {
+//								if (paper.getNumber().equals(user.getSecuritynumber())){
+//									state = true;
+//								}
+//							}
+//							if (!state){
+//								user2.setHold("2");
+//								user2.setSecuritynumber(null);
+//								securityInvalidList.add(userExcel.getCardid());
+//								securityInvalidStatus.set(false);
+//							}
+//						}else {
+//							user2.setHold("2");
+//							user2.setSecuritynumber(null);
+//							securityInvalidList.add(userExcel.getCardid());
+//							securityInvalidStatus.set(false);
+//						}
+//					}else {
+//						user2.setHold("2");
+//					}
+//					if (null!=userExcel.getRegistered()){
+//						user2.setRegistered(userExcel.getRegistered());
+//					}else {
+//						user2.setRegistered("");
+//					}
+//					user2.setUpdateTime(new Date());
+//					//更新用户数据
+//					this.updateById(user2);
+//					//qfqk 推送
+//					myAsyncService.updateUserByQfqk(user);
+//
+//					String s1 =
+//						"update blade_user set hold = " + "'" + user2.getHold() + "'"
+//							+ ",securitynumber = " + "'" + user2.getSecuritynumber() + "'"
+//							+ ",registered = " + "'" + user2.getRegistered() + "'"
+//							+ ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'"
+//							+ " " + "where id = " + "'" + user2.getId() + "'";
+//					//FtpUtil.sqlFileUpload(s1);
+//					myAsyncService.FTP(s1);
+//				}
+//			}
+//		});
+//		//如果所有数据导入有一个异常
+//		StringBuilder errorBuilder = new StringBuilder();
+//		if (!status.get()){
+//			String errorAccount = StringUtils.join(errorList, "\\\n");
+//			errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
+//		}
+//		if (!agetStatus.get()){
+//			String errorAccount = StringUtils.join(ageErrorList, "\\\n");
+//			errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
+//		}
+//		if (!securityInvalidStatus.get()){
+//			String errorAccount = StringUtils.join(securityInvalidList, "\\\n");
+//			errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+//		}
+//		//抛出异常
+//		if (errorBuilder.length()>0){
+//			throw new ServiceException(errorBuilder.toString());
+//		}
+//	}
+
+
 	/**
 	 * 根据保安员编码查询保安信息
 	 *
diff --git a/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java b/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
index ac2cd9e..77bd835 100644
--- a/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
+++ b/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
@@ -1,5 +1,6 @@
 package org.springblade.modules.training.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -20,6 +21,8 @@
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.modules.FTP.FtpUtil;
+import org.springblade.modules.FTP.Monitor;
+import org.springblade.modules.FTP.Result;
 import org.springblade.modules.apply.entity.Apply;
 import org.springblade.modules.exam.entity.ExamPaper;
 import org.springblade.modules.exam.service.ExamPaperService;
@@ -35,6 +38,7 @@
 import org.springblade.modules.vip.service.UserVipService;
 import org.springblade.modules.vip.service.VipTopicService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -65,6 +69,8 @@
 
 	private final VipTopicService vipTopicService;
 	private final MyAsyncService myAsyncService;
+
+	private final RedisTemplate redisTemplate;
 
 
 	/**
@@ -310,16 +316,69 @@
 	@PostMapping("/batchTrain")
 	public R batchApply(@RequestBody TrainingRegistrationVo trainingRegistration){
 		List<String> list = Arrays.asList(trainingRegistration.getUserIds().split(","));
-		AtomicInteger count  = new AtomicInteger();
-		//创建年龄部分对象集合
+		//将集合推送内网,判断年龄是否符合要求,得到返回的结果,结果需包含userId,及年龄是否符合的状态
+		//生成随机数
+		String uuid = UUID.randomUUID().toString();
+		//数据推送
+		Map<String, Object> map = new HashMap<>(1);
+		map.put(uuid, list);
+		myAsyncService.FTPObjectListUserId(map);
+
+		Result result = new Result();
+		int count = 0;
+		//调用ftp获取返回数据
+		while (true){
+			try {
+				Thread.sleep(1000);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+			//调用ftp获取返回数据
+			result = Monitor.getFtpDataByUuidListTrain(uuid);
+			//如果返回true,就退处
+			if (result.getCode() == 200) {
+				break;
+			}else {
+				count++;
+				if (count == 30) {
+					break;
+				}
+			}
+		}
+
+		//创建集合,存年龄符合要求
+		List<String> ageList = new ArrayList<>();
+		//创建年龄不符合集合
 		List<String> errorList = new ArrayList<>();
-//		AtomicReference<StringBuilder> builder = new AtomicReference<>(new StringBuilder());
-		//遍历
-		list.forEach(userId ->{
-			User user = userService.getUserById(userId);
-			UserVO userVO = userService.getUserAgeById(Long.parseLong(userId));
-			//判断年龄
-			if (userVO.getAge()>=18 && userVO.getAge()<=60) {
+		AtomicInteger number  = new AtomicInteger();
+		if (null!=result){
+			//获取 result
+			List<Result> data1 = result.getData();
+			if (data1.size()>0){
+				for (Result result1 : data1) {
+					// 取出 Msg ,此 msg 存的对应的 uuid
+					Long userId = result1.getUserId();
+					if (result1.getCode()==200){
+						//加入新增集合
+						ageList.add(userId.toString());
+					}
+					//年龄不符合要求
+					if (result1.getCode()==201){
+						//number ++
+						number.getAndIncrement();
+						//查询用户信息
+						User user = userService.getById(userId);
+						//加入更新集合
+						errorList.add(user.getRealName());
+					}
+				}
+			}
+		}
+
+		if (ageList.size()>0) {
+			//遍历
+			ageList.forEach(userId -> {
+				User user = userService.getUserById(userId);
 				//未报名的新增,已报名的不做处理
 				if (null == user.getIsTrain()) {
 					TrainingRegistration trainingRegistration1 = new TrainingRegistration();
@@ -337,8 +396,7 @@
 					userService.updateById(user);
 
 					//数据同步
-					saveTrainingRegistration(trainingRegistration1,user);
-//					builder.set(batchSaveTrainingRegistration(trainingRegistration1, user, builder.get()));
+					saveTrainingRegistration(trainingRegistration1, user);
 				} else {
 					if (user.getIsTrain() != 1) {
 						TrainingRegistration trainingRegistration1 = new TrainingRegistration();
@@ -356,23 +414,14 @@
 						userService.updateById(user);
 
 						//数据同步
-						saveTrainingRegistration(trainingRegistration1,user);
-//						builder.set(batchSaveTrainingRegistration(trainingRegistration1, user, builder.get()));
+						saveTrainingRegistration(trainingRegistration1, user);
 					}
 				}
-			}else {
-				//count ++
-				count.getAndIncrement();
-				//放入集合
-				errorList.add(user.getCardid());
-			}
-		});
-//		//同步
-//		if (builder.get().length()>0) {
-//			FtpSyncUtil.slqSync(builder.get());
-//		}
+			});
+		}
+
 		//如果存在年龄不符的,则抛出异常
-		if (count.get()>0){
+		if (number.get()>0){
 			String errorAccount = StringUtils.join(errorList, "\\\n");
 			throw new ServiceException("保安员:[" + errorAccount + "]报名失败!年龄不符,报名年龄为[18-60]周岁!");
 		}

--
Gitblit v1.9.3