From 7f36a55767f870937a473f9c0eebf0240300a5ef Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 08 Jun 2022 22:07:21 +0800
Subject: [PATCH] ftp 个人保安新增修改

---
 src/main/java/org/springblade/modules/system/controller/UserController.java |  151 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 127 insertions(+), 24 deletions(-)

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 e62ded0..ac732ac 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -33,6 +33,7 @@
 import lombok.AllArgsConstructor;
 import net.sf.json.JSONObject;
 import org.apache.commons.codec.Charsets;
+import org.apache.commons.lang3.StringUtils;
 import org.springblade.common.cache.DictCache;
 import org.springblade.common.config.FtpConfig;
 import org.springblade.common.enums.DictEnum;
@@ -107,11 +108,13 @@
 import java.security.NoSuchAlgorithmException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
 import static org.springblade.common.config.FtpConfig.*;
 import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
 import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
+import static org.springblade.modules.FTP.DataHandler.handlerUserInfo;
 
 /**
  * 控制器
@@ -318,7 +321,8 @@
 					//计数
 					count++;
 					//如果超过10s 没有读取到,则退出
-					if (count == 30) {
+					if (count == 60) {
+						System.out.println("等待超时.....................");
 						break;
 					}
 				}
@@ -872,7 +876,7 @@
 				.headers(headers)
 				.build());
 		InputStream inputStream = new ByteArrayInputStream(b);
-		FtpUtil.uploadFile(FtpConfig.ftpHost, ftpPort, FtpConfig.ftpUserName, ftpPassword, ftpPath, "/", split[2], inputStream);
+		FtpUtil.uploadFile(FtpConfig.ftpHost, ftpPort, FtpConfig.ftpUserName, ftpPassword, ftpPath, "/", "f"+split[2], inputStream);
 		in.close();
 		//外围url
 		String urls = "http://61.131.136.25:2081/zhba/" + newName;
@@ -1622,43 +1626,127 @@
 		Result result = new Result();
 		//调用ftp获取返回数据
 		while (true){
-			Thread.sleep(1000);
+			System.out.println("用户新增开始接收消息......................");
+			Thread.sleep(2000);
 			//调用ftp获取返回数据
 			result = Monitor.isFTPFileExist(uuid);
 			//如果返回true,就退处
 			if (result.getCode()==200){
-				flag = 1;
-				break;
-			}else if (result.getCode()==201){
-				flag = 2;
-				break;
-			}else if (result.getCode()==202){
-				flag = 3;
-				break;
-			}else if (result.getCode()==203){
-				flag = 4;
 				break;
 			}else{
 				//计数
 				count++;
-				//如果超过10s 没有读取到,则退出
-				if (count == 30) {
+				//如果超过60s 没有读取到,则退出
+				if (count == 60) {
 					break;
 				}
 			}
 		}
-		if (flag==1 || flag==2) {
-			//返回
-			return R.data(200, null, "新增成功!");
-		}else if (flag==3){
-			throw new ServiceException(result.getMsg());
-		}else if (flag==4){
+
+		//将不能导入的保安员账号存起来
+		List<String> errorList = new ArrayList<>();
+		//保安员证编号不符的保安员信息存入集合
+		List<String> securityInvalidList = new ArrayList<>();
+		//导入状态,默认为true ,如果有一个出现问题则为 false
+		AtomicBoolean status = new AtomicBoolean(true);
+		AtomicBoolean securityInvalidStatus = new AtomicBoolean(true);
+		if (null!=result){
+			//用户数处理
+			User users = handlerUserInfo(uuid);
+			System.out.println("用户数据处理---------------");
+			System.out.println("用户数据 = " + users);
+			//判断结果
+			if (result.getCode()==200){
+				//新增
+				users.setId(result.getUserId());
+				users.setStatus(1);
+				//插入数据库
+				boolean save = userService.save(users);
+				if (save){
+					//异步同步到群防群控
+					myAsyncService.qfqkUserSave(users);
+				}
+			}else if (result.getCode()==201) {
+				//修改
+				users.setId(result.getUserId());
+				//先查询当前库是否有改用户?
+				User user2 = userService.getById(result.getUserId());
+				if (null!=user2) {
+					//数据修改
+					boolean b = userService.updateById(users);
+					if (b) {
+						//异步同步到群防群控
+						myAsyncService.updateUserByQfqk(user);
+					}
+				}else {
+					//新增
+					boolean save = userService.save(users);
+					if (save){
+						//异步同步到群防群控
+						myAsyncService.qfqkUserSave(users);
+					}
+				}
+			}else if (result.getCode()==203){
+				//保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 用户为新增
+				//新增
+				users.setId(result.getUserId());
+				//插入数据库
+				boolean save = userService.save(users);
+				if (save) {
+					//异步同步到群防群控
+					myAsyncService.qfqkUserSave(users);
+				}
+				securityInvalidStatus.set(false);
+				//保安证编号不匹配
+				securityInvalidList.add(user.getCardid());
+			}else if (result.getCode()==204){
+				//保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 内网用户已存在情况
+				users.setId(result.getUserId());
+				//先查询当前库是否有改用户?
+				User user2 = userService.getById(result.getUserId());
+				//判断
+				if (null!=user2) {
+					//修改
+					//数据修改
+					boolean b = userService.updateById(users);
+					if (b){
+						//异步同步到群防群控
+						myAsyncService.updateUserByQfqk(users);
+					}
+				}else {
+					//新增
+					boolean save = userService.save(users);
+					if (save){
+						//异步同步到群防群控
+						myAsyncService.qfqkUserSave(users);
+					}
+				}
+				securityInvalidStatus.set(false);
+				//保安证编号不匹配
+				securityInvalidList.add(user.getCardid());
+			}else {
+				status.set(false);
+				//已在其他单位存在
+				errorList.add(user.getCardid());
+			}
+		}
+
+		//如果所有数据导入有一个异常
+		StringBuilder errorBuilder = new StringBuilder();
+		if (!status.get()){
+			String errorAccount = StringUtils.join(errorList, "\\\n");
+			errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
+		}
+		//抛出异常
+		if (errorBuilder.length()>0){
+			throw new org.springblade.core.log.exception.ServiceException(errorBuilder.toString());
+		}
+
+		if (!securityInvalidStatus.get()){
 //			return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
 			return R.data(201, null, "保安证编号不匹配,请核实!");
-		}else{
-			//返回
-			return R.data(400, null, "新增失败!");
 		}
+		return R.data(200, null, "新增成功!");
 	}
 
 	/**
@@ -1858,4 +1946,19 @@
 	public R getNotUpdatePwdInfo() {
 		return R.data(userService.getNotUpdatePwdInfo());
 	}
+
+	/**
+	 * 用户手动离职(用户数据未同步成功的)
+	 * @param user
+	 * @return
+	 */
+	@GetMapping("/leave")
+	public void leave(User user){
+		user.setStatus(2);
+		String s1 =
+			"update blade_user set status = " + "'" + user.getStatus() + "'"
+				+ ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "'"
+				+ " " + "where cardid = " + "'" + user.getCardid() + "'";
+		myAsyncService.FTP(s1);
+	}
 }

--
Gitblit v1.9.3