From e290026f1004fca0d8cf43bf986a3dbd8b7974c9 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Tue, 28 Jun 2022 20:23:33 +0800
Subject: [PATCH] 保安员信息同步修改

---
 src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java | 2141 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 1,557 insertions(+), 584 deletions(-)

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 cba4196..fb45edb 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
@@ -17,6 +17,7 @@
 package org.springblade.modules.system.service.impl;
 
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -27,6 +28,7 @@
 import org.springblade.common.constant.AgeUtil;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.constant.TenantConstant;
+import org.springblade.common.utils.DesensitizedUtil;
 import org.springblade.common.utils.IdCardNoUtil;
 import org.springblade.common.utils.ImageUtils;
 import org.springblade.common.utils.QRCodeUtil;
@@ -36,30 +38,35 @@
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.BladeTenantProperties;
+import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.jackson.JsonUtil;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.*;
 import org.springblade.modules.FTP.FtpUtil;
+import org.springblade.modules.FTP.Monitor;
+import org.springblade.modules.FTP.Result;
 import org.springblade.modules.auth.enums.UserEnum;
 import org.springblade.modules.dispatcher.entity.Dispatcher;
 import org.springblade.modules.dispatcher.vo.DispatcherVO;
+import org.springblade.modules.exam.util.SecurityPaperUtil;
 import org.springblade.modules.experience.entity.Experience;
 import org.springblade.modules.experience.service.IExperienceService;
 import org.springblade.modules.information.entity.Information;
 import org.springblade.modules.information.service.IInformationService;
 import org.springblade.modules.jurisdiction.entity.Jurisdiction;
 import org.springblade.modules.jurisdiction.service.JurisdictionService;
+import org.springblade.modules.securitypaper.entity.SecurityPaper;
+import org.springblade.modules.securitypaper.service.SecurityPaperService;
+import org.springblade.modules.system.dto.UserDTO;
 import org.springblade.modules.system.entity.*;
-import org.springblade.modules.system.excel.QrCodeExcel;
-import org.springblade.modules.system.excel.SecurityExcel;
-import org.springblade.modules.system.excel.SecurityYyExcel;
-import org.springblade.modules.system.excel.UserExcel;
+import org.springblade.modules.system.excel.*;
 import org.springblade.modules.system.mapper.UserMapper;
 import org.springblade.modules.system.node.TreeNode;
 import org.springblade.modules.system.service.*;
 import org.springblade.modules.system.vo.UserVO;
 import org.springblade.modules.system.wrapper.UserWrapper;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import java.io.FileNotFoundException;
@@ -67,6 +74,7 @@
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -91,6 +99,9 @@
 	private final IDeptService deptService;
 	private final JurisdictionService jurisdictionService;
 	private final IExperienceService experienceService;
+	private final MyAsyncService myAsyncService;
+	private final SecurityPaperService securityPaperService;
+	private final RedisTemplate redisTemplate;
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
@@ -143,7 +154,8 @@
 			"," + "'" + user.getJurisdiction() + "'"+
 			"," + "'" + user.getIsDeleted() + "'"
 			+ ")";
-		FtpUtil.sqlFileUpload(s);
+		//FtpUtil.sqlFileUpload(s);
+		myAsyncService.FTP(s);
 		return b;
 	}
 
@@ -336,8 +348,12 @@
 
 	@Override
 	public UserInfo userInfo(String tenantId, String account, String password, UserEnum userEnum) {
-		User user = baseMapper.getUser(tenantId, account, password);
-		return buildUserInfo(user, userEnum);
+		try {
+			User user = baseMapper.getUser(tenantId, account, password);
+			return buildUserInfo(user, userEnum);
+		}catch (Exception e){
+			throw new ServiceException("账号["+account+"]"+"重复!");
+		}
 	}
 
 	private UserInfo buildUserInfo(User user) {
@@ -416,7 +432,25 @@
 		User user = new User();
 		user.setPassword(DigestUtil.encrypt(CommonConstant.DEFAULT_PASSWORD));
 		user.setUpdateTime(DateUtil.now());
-		return this.update(user, Wrappers.<User>update().lambda().in(User::getId, Func.toLongList(userIds)));
+		boolean update = this.update(user, Wrappers.<User>update().lambda().in(User::getId, Func.toLongList(userIds)));
+		if (update){
+			//如果是保安员同步群防群控
+			List<String> list = Arrays.asList(userIds.split(","));
+			for (String s : list) {
+				User user1 = getById(userIds);
+				UserDTO userDTO = new UserDTO();
+				userDTO.setAccount(user1.getAccount());
+				userDTO.setPassword(user1.getPassword());
+				userDTO.setSecurityId(user1.getId().toString());
+				userDTO.setPhone(user1.getPhone());
+				userDTO.setRealName(user1.getRealName());
+				userDTO.setCardid(user1.getCardid());
+				userDTO.setSex(user1.getSex());
+				//异步修改群防群控
+				myAsyncService.updateUserByAccount(userDTO);
+			}
+		}
+		return update;
 	}
 
 	@Override
@@ -543,7 +577,8 @@
 					"," + "'" + user.getIsDeleted() + "'" +
 					"," + "'" + user.getJurisdiction() + "'"
 					+ ")";
-				FtpUtil.sqlFileUpload(s);
+				//FtpUtil.sqlFileUpload(s);
+				myAsyncService.FTP(s);
 			}else {
 				//匹配组织机构是否一致,如果不一致
 				if(!user2.getDeptId().equals(user.getDeptId())){
@@ -580,7 +615,8 @@
 							+ ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'"
 							+ ",cardid = " + "'" + user2.getCardid() + "'"
 							+ " " + "where id = " + "'" + user2.getId() + "'";
-					FtpUtil.sqlFileUpload(s1);
+					//FtpUtil.sqlFileUpload(s1);
+					myAsyncService.FTP(s1);
 				}
 			}
 		});
@@ -824,30 +860,666 @@
 		return baseMapper.selectUser();
 	}
 
+//	/**
+//	 * 导入保安员(备份)
+//	 *
+//	 * @param data
+//	 * @param isCovered
+//	 */
+//	@Override
+//	public void importSecurity(List<SecurityExcel> data, Boolean isCovered, String deptId) {
+//		long time = System.currentTimeMillis();
+//		//将不能导入的保安员账号存起来
+//		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<>();
+//		//需要新增的从业记录集合
+//		List<Experience> experienceList = new ArrayList<>();
+//		//导入状态,默认为true ,如果有一个出现问题则为 false
+//		AtomicBoolean status = new AtomicBoolean(true);
+//		AtomicBoolean agetStatus = new AtomicBoolean(true);
+//		AtomicBoolean securityInvalidStatus = new AtomicBoolean(true);
+//		//遍历
+//		for (SecurityExcel userExcel : data) {
+//			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;
+//					continue;
+//				}
+//			}
+//
+//			//判断当前用户是否已在本单位,如果是的更新数据
+//			User user1 = new User();
+//			user1.setAccount(user.getCardid());
+//			user1.setIsDeleted(0);
+//			user1.setStatus(1);
+//			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");
+//				}
+//				//判断年龄,超过60岁的不入
+////				if (AgeUtil.idCardToAge(user.getCardid())<60) {
+//				//分配保安角色
+//				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());
+//				user.setDispatch("1");
+//				user.setExaminationType("0");
+//				//新增
+////				this.save(user);
+//				//加入集合
+//				userList.add(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);
+//				//加入集合
+//				experienceList.add(experience);
+//
+//			}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");
+//						}
+//						//更新用户数据
+//						user2.setUpdateTime(new Date());
+//						this.updateById(user2);
+//						//qfqk异步推送
+//						myAsyncService.updateUserByQfqk(user2);
+//						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;
+//						continue;
+//					}
+//				}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(user2);
+//					//内网数据sql
+//					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);
+//				}
+//			}
+//		}
+//		//批量插入
+//		//用户批量插入
+//		if (userList.size()>0) {
+//			baseMapper.batchUserList(userList);
+//			//用户批量插入异步推送
+//			myAsyncService.batchUserList(userList);
+//			//sql 拼接
+//			StringBuilder builder = new StringBuilder();
+//			StringBuilder builder1 = new StringBuilder();
+//			//遍历
+//			for (User user : userList) {
+//				//内网同步,sql 拼接
+//				String sql = "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) " +
+//					"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()) + "'" + ")";
+//				//拼接
+//				builder  = builder.append(sql).append(";");
+//				List<String> list = Arrays.asList(builder.toString().split(";"));
+//				//判断list.size 大小
+//				if (list.size()==1000){
+//					//执行
+//					//FtpUtil.sqlFileUpload(builder.toString());
+//					myAsyncService.FTP(builder.toString());
+//					//清空
+//					builder.delete(0,builder.length());
+//				}
+//			}
+//
+//			//装换成map
+//			Map<String, User> userMap = userList.stream().collect(Collectors.toMap(user -> user.getCardid(), user -> user));
+//			//匹配
+//			experienceList = experienceList.stream().map(experience -> {
+//				if (experience.getCardid().equals(userMap.get(experience.getCardid()).getCardid())) {
+//					experience.setSecurityid(userMap.get(experience.getCardid()).getId().toString());
+//				}
+//				return experience;
+//			}).collect(Collectors.toList());
+//			//批量插入从业记录
+//			baseMapper.batchExperienceList(experienceList);
+//			//遍历,拼接sql ,同步数据到内网
+//			for (Experience experience : experienceList) {
+//				String sql1  = "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() + "'" + ")";
+//				//拼接
+//				builder1  = builder1.append(sql1).append(";");
+//				String[] split1 = builder.toString().split(";");
+//				//判断list.size 大小
+//				if (split1.length==1000){
+//					//执行
+//					//FtpUtil.sqlFileUpload(builder1.toString());
+//					myAsyncService.FTP(builder1.toString());
+//					//清空
+//					builder1.delete(0,builder1.length());
+//				}
+//			}
+//			//剩余的继续执行
+//			//FtpUtil.sqlFileUpload(builder.toString());
+//			myAsyncService.FTP(builder.toString());
+//			//FtpUtil.sqlFileUpload(builder1.toString());
+//			myAsyncService.FTP(builder1.toString());
+//		}
+////		System.out.println("导入时间: = " + (System.currentTimeMillis()-time));
+//
+//		//如果所有数据导入有一个异常
+//		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());
+//		}
+//	}
+
 	/**
-	 * 导入保安员
-	 *
+	 * 导入保安员(需加密,部分字段需要脱敏处理)
+	 * @since 修改时间 : 2022-04-28
+	 * @author: 修改人 zhongrj
 	 * @param data
 	 * @param isCovered
 	 */
 	@Override
 	public void importSecurity(List<SecurityExcel> data, Boolean isCovered, String deptId) {
-		long time = System.currentTimeMillis();
+		//年龄不符的保安员信息存入集合
+		List<String> ageErrorList = new ArrayList<>();
+		//需要推送内网的保安员信息集合
+		List<User> userList = new ArrayList<>();
+		AtomicBoolean agetStatus = new AtomicBoolean(true);
+		//遍历
+		for (SecurityExcel userExcel : data) {
+			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)) {
+						if(!deptId.equals("1123598813738675201")) {
+							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()+" ]不正确,请核对!");
+					continue;
+				}
+			}
+
+			// 设置租户ID
+			user.setTenantId("000000");
+			//默认在职
+			user.setStatus(1);
+			user.setIsDeleted(0);
+			//分配保安角色
+			user.setRoleId("1412226235153731586");
+
+			if (null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){
+				user.setHold("1");
+			}else {
+				user.setHold("2");
+			}
+
+			//性别
+			if (IdCardNoUtil.getSex(userExcel.getCardid()).equals("男")) {
+				user.setSex(1);
+			}else {
+				user.setSex(2);
+			}
+
+			//设置账号
+			String realName = user.getRealName();
+			String cardid = user.getCardid();
+			user.setAccount(realName.substring(0,1)+cardid.substring(cardid.length()-4));
+			//加密
+			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 = Objects.requireNonNull(BeanUtil.copy(user,User.class));
+
+			//生成随机数
+			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);
+		}
+
+		//用户批量插入
+		if (userList.size()>0) {
+			//生成随机数
+			String uuid = UUID.randomUUID().toString();
+			//数据推送
+			Map<String, Object> map = new HashMap<>(1);
+			map.put(uuid, userList);
+			myAsyncService.FTPObjectList(map);
+		}
+
+//		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());
+//						boolean save = this.save(user);
+//						//同步用户数据到群防群控
+//						if (save) {
+//							myAsyncService.qfqkUserSave(user);
+//						}
+//						//加入新增集合
+////						addList.add(user);
+//					}
+//					if (result1.getCode()==201){
+//						//先查询当前库是否有改用户?
+//						User user1 = this.getById(result1.getUserId());
+//						if (null!=user1) {
+//							//存在,更新
+//							user.setId(result1.getUserId());
+//							user.setCreateTime(null);
+//							boolean update = this.updateById(user);
+//							if (update) {
+//								//数据异步同步到群防群控
+//								myAsyncService.updateUserByQfqk(user);
+//							}
+//						}else {
+//							//不存在,则新增
+//							user.setId(result1.getUserId());
+//							boolean save = this.save(user);
+//							if (save){
+//								//数据异步同步到群防群控
+//								myAsyncService.qfqkUserSave(user);
+//							}
+//						}
+//						//加入更新集合
+////						updateList.add(user);
+//					}
+//					if (result1.getCode()==202){
+//						status.set(false);
+//						//已在其他单位存在
+//						errorList.add(user0.getCardid());
+//					}
+//					if (result1.getCode()==203){
+//						securityInvalidStatus.set(false);
+//						//保安证编号不匹配
+//						securityInvalidList.add(user0.getCardid());
+//					}
+//				}
+////				//批量插入
+////				if (addList.size()>0){
+////					baseMapper.batchUserList(addList);
+////				}
+////				//批量更新
+////				if (updateList.size()>0){
+////					baseMapper.batchUpdateUserList(updateList);
+////				}
+//			}
+//		}
+
+//		//如果所有数据导入有一个异常
+		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 + "]保安证编号不匹配,请核实!");
+//			errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+//		}
+		//抛出异常
+		if (errorBuilder.length()>0){
+			throw new ServiceException(errorBuilder.toString());
+		}
+	}
+
+	/**
+	 * 用户数据获取和处理
+	 * @param uuid 随机参数
+	 * @return
+	 */
+	private User handlerUserInfo(String uuid){
+		//从redis 中获取用户数据
+		Object o1 = redisTemplate.opsForValue().get(uuid);
+		User user = JSON.parseObject(o1.toString(), User.class);
+		//取出后将 redis 删除
+		redisTemplate.delete(uuid);
+		//返回的user,需处理敏感数据
+		User user1 = Objects.requireNonNull(BeanUtil.copy(user,User.class));
+		//敏感数据处理
+		user1.setRealName(DesensitizedUtil.desensitizedName(user.getRealName()));
+		user1.setCardid(DesensitizedUtil.desensitizedIdNumberBy4(user.getCardid()));
+		user1.setPhone(DesensitizedUtil.desensitizedPhoneNumber(user.getPhone()));
+		user1.setRegistered(DesensitizedUtil.desensitizedAddress(user.getRegistered()));
+		if (user.getHold().equals("1")) {
+			user1.setSecuritynumber(DesensitizedUtil.desensitizedSecurityNumber(user.getSecuritynumber()));
+		}else {
+			user1.setSecuritynumber("");
+		}
+		user1.setAvatar("");
+		user1.setEmail("");
+		user1.setFingerprint("");
+		user1.setNation("");
+		user1.setNativeplace("");
+		user1.setEducation("");
+		user1.setPoliticaloutlook("");
+		user1.setMyPicture("");
+		user1.setHeight("");
+		user1.setRtime(null);
+		user1.setGuncode("");
+		//返回
+		return user1;
+	}
+
+	/**
+	 * 保安员导入(押运人员导入)
+	 * @param data
+	 * @param isCovered
+	 * @param deptId
+	 */
+	@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<User> updateList = new ArrayList<>();
-		//需要新增的保安员集合
+		//保安员证编号不符的保安员信息存入集合
+		List<String> securityInvalidList = new ArrayList<>();
+		//需要推送内网的保安员信息集合
 		List<User> userList = new ArrayList<>();
-		//需要新增的从业记录集合
-		List<Experience> experienceList = new ArrayList<>();
 		//导入状态,默认为true ,如果有一个出现问题则为 false
 		AtomicBoolean status = new AtomicBoolean(true);
 		AtomicBoolean agetStatus = new AtomicBoolean(true);
+		AtomicBoolean securityInvalidStatus = new AtomicBoolean(true);
 		//遍历
-		for (SecurityExcel userExcel : data) {
+		for (SecurityYyExcel userExcel : data) {
 			User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
 			//设置部门id
 			String deptIds = userDeptService.selectIn(user.getDeptId());
@@ -881,589 +1553,517 @@
 				}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);
-			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");
-				}else {
-					user.setHold("2");
-				}
-				//判断年龄,超过60岁的不入
-//				if (AgeUtil.idCardToAge(user.getCardid())<60) {
-				//分配保安角色
-				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);
-					}
-				}
+			// 设置租户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());
 
-				//设置账号
-				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());
-				user.setDispatch("1");
-				user.setExaminationType("0");
-				//新增
-//				this.save(user);
-				//加入集合
-				userList.add(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);
-				//加入集合
-				experienceList.add(experience);
-
+			if (null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){
+				user.setHold("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() != "") {
-							user.setHold("1");
-						}else {
-							user.setHold("2");
-						}
-						if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
-							user2.setHold("1");
-							user2.setSecuritynumber(user.getSecuritynumber());
-						}else {
-							user2.setHold("2");
-						}
-						//更新用户数据
-						user2.setUpdateTime(new Date());
-						this.updateById(user2);
-						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);
-					}else {
-						status.set(false);
-						//加入集合
-						errorList.add(user.getCardid());
-						//forEach 只能使用 return 跳出本次循环
-//						return;
-						continue;
-					}
-				}else {
-					//如果是一致,则更新用户数据
-					//判断是否持证
-					if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
-						user2.setHold("1");
-						user2.setSecuritynumber(user.getSecuritynumber());
-					}else {
-						user2.setHold("2");
-					}
-					if (null!=userExcel.getRegistered()){
-						user2.setRegistered(userExcel.getRegistered());
-					}else {
-						user2.setRegistered("");
-					}
-					user2.setUpdateTime(new Date());
-					//更新用户数据
-					this.updateById(user2);
-					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);
-				}
+				user.setHold("2");
 			}
+
+			//性别
+			if (null != userExcel.getSex()) {
+				if (userExcel.getSex().equals("男")) {
+					user.setSex(1);
+				}else if (userExcel.getSex().equals("女")) {
+					user.setSex(2);
+				}else {
+					user.setSex(1);
+				}
+			}else {
+				user.setSex(1);
+			}
+
+			//设置账号
+			String realName = user.getRealName();
+			String cardid = user.getCardid();
+//			user.setAccount(user.getRealName());
+			user.setAccount(realName.substring(0,1)+cardid.substring(cardid.length()-4));
+			//加密
+			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 = Objects.requireNonNull(BeanUtil.copy(user,User.class));
+
+			//生成随机数
+			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) {
-			baseMapper.batchUserList(userList);
-			//sql 拼接
-			StringBuilder builder = new StringBuilder();
-			StringBuilder builder1 = new StringBuilder();
-			//遍历
-			for (User user : userList) {
-				//内网同步,sql 拼接
-				String sql = "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) " +
-					"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()) + "'" + ")";
-				//拼接
-				builder  = builder.append(sql).append(";");
-				List<String> list = Arrays.asList(builder.toString().split(";"));
-				//判断list.size 大小
-				if (list.size()==1000){
-					//执行
-					FtpUtil.sqlFileUpload(builder.toString());
-					//清空
-					builder.delete(0,builder.length());
-				}
-			}
+			//生成随机数
+			String uuid = UUID.randomUUID().toString();
+			//数据推送
+			Map<String, Object> map = new HashMap<>(1);
+			map.put(uuid, userList);
+			myAsyncService.FTPObjectList(map);
 
-			//装换成map
-			Map<String, User> userMap = userList.stream().collect(Collectors.toMap(user -> user.getCardid(), user -> user));
-			//匹配
-			experienceList = experienceList.stream().map(experience -> {
-				if (experience.getCardid().equals(userMap.get(experience.getCardid()).getCardid())) {
-					experience.setSecurityid(userMap.get(experience.getCardid()).getId().toString());
-				}
-				return experience;
-			}).collect(Collectors.toList());
-			//批量插入从业记录
-			baseMapper.batchExperienceList(experienceList);
-			//遍历,拼接sql ,同步数据到内网
-			for (Experience experience : experienceList) {
-				String sql1  = "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() + "'" + ")";
-				//拼接
-				builder1  = builder1.append(sql1).append(";");
-				String[] split1 = builder.toString().split(";");
-				//判断list.size 大小
-				if (split1.length==1000){
-					//执行
-					FtpUtil.sqlFileUpload(builder1.toString());
-					//清空
-					builder1.delete(0,builder1.length());
-				}
-			}
-			//剩余的继续执行
-			FtpUtil.sqlFileUpload(builder.toString());
-			FtpUtil.sqlFileUpload(builder1.toString());
-		}
-//		System.out.println("导入时间: = " + (System.currentTimeMillis()-time));
-
-		//如果所有数据导入有一个异常
-		if (!status.get() || !agetStatus.get()){
-			if (!status.get() && agetStatus.get()) {
-				String errorAccount = StringUtils.join(errorList, "\\\n");
-				throw new ServiceException("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
-			}
-			if (!agetStatus.get() && status.get()) {
-				String errorAccount = StringUtils.join(ageErrorList, "\\\n");
-				throw new ServiceException("用户:[" + errorAccount + "]导入失败!身份证号码不正确,请核对!");
-			}
-			if (!status.get() && !agetStatus.get()) {
-				String errorAccount = StringUtils.join(errorList, "\\\n");
-				String errorAgeAccount = StringUtils.join(ageErrorList, "\\\n");
-				throw new ServiceException("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"+
-					"用户:[" + errorAgeAccount + "]导入失败!身份证号码不正确,请核对!");
-			}
-		}
-//		if (!status.get()) {
-//			String errorAccount = StringUtils.join(errorList, "\\\n");
-//			throw new ServiceException("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
-//		}
-	}
-
-	@Override
-	public void importSecurityYy(List<SecurityYyExcel> data, Boolean isCovered, String deptId) {
-		//将不能导入的保安员账号存起来
-		List<String> errorList = new ArrayList<>();
-		//将需要新增的保安员信息存入集合
-		List<String> ageErrorList = new ArrayList<>();
-		//将需要更新的保安员信息存入集合
-		List<User> updateList = new ArrayList<>();
-		//导入状态,默认为true ,如果有一个出现问题则为 false
-		AtomicBoolean status = new AtomicBoolean(true);
-		AtomicBoolean agetStatus = 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");
-				}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);
-
-				//从业记录新增
-				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);
-			}
-			else {
-				//匹配组织机构是否一致,如果不一致
-				if(!user2.getDeptId().equals(user.getDeptId())){
-//					Dept dept = deptService.getById(user2.getDeptId());
-//					status.set(false);
-//					//加入集合
-//					errorList.add(user.getCardid());
-//					//forEach 只能使用 return 跳出本次循环
-//					return;
-
-					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.getHold() && userExcel.getHold() != "") {
-//							if (userExcel.getHold().equals("是") && userExcel.getSecuritynumber()!=null && !userExcel.getSecuritynumber().equals("")) {
-//								user2.setHold("1");
-//								//更新保安证编号
-//								user2.setSecuritynumber(user.getSecuritynumber());
-//							}
-//							if (userExcel.getHold().equals("否")) {
-//								user2.setHold("2");
-//							}
-//						}
-						if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
-							user2.setHold("1");
-							user2.setSecuritynumber(user.getSecuritynumber());
-						}else {
-							user2.setHold("2");
-						}
-						if (null!=userExcel.getRegistered()){
-							user2.setRegistered(userExcel.getRegistered());
-						}else {
-							user2.setRegistered("");
-						}
-						user2.setUpdateTime(new Date());
-						//更新用户数据
-						this.updateById(user2);
-						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);
-					}else {
-						status.set(false);
-						//加入集合
-						errorList.add(user.getCardid());
-						//forEach 只能使用 return 跳出本次循环
-						return;
-					}
-				}else {
-					//如果是一致,则更新用户数据
-					//判断是否持证
-//					if (null != userExcel.getHold() && userExcel.getHold() != "") {
-//						if (userExcel.getHold().equals("是") && userExcel.getSecuritynumber()!=null && !userExcel.getSecuritynumber().equals("")) {
-//							user2.setHold("1");
-//							//更新保安证编号
-//							user2.setSecuritynumber(user.getSecuritynumber());
-//						}
-//						if (userExcel.getHold().equals("否")) {
-//							user2.setHold("2");
-//						}
+//			int count = 0;
+//			//调用ftp获取返回数据
+//			while (true){
+//				try {
+//					Thread.sleep(4000);
+//				} catch (InterruptedException e) {
+//					e.printStackTrace();
+//				}
+//				//调用ftp获取返回数据
+//				result = Monitor.getFtpDataByUuidList(uuid);
+//				//如果返回true,就退处
+//				if (result.getCode() == 200) {
+//					break;
+//				}
+//				else {
+//					count++;
+//					if (count == 20) {
+//						break;
 //					}
-					if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") {
-						user2.setHold("1");
-						user2.setSecuritynumber(user.getSecuritynumber());
-					}else {
-						user2.setHold("2");
-					}
-					if (null!=userExcel.getRegistered()){
-						user2.setRegistered(userExcel.getRegistered());
-					}else {
-						user2.setRegistered("");
-					}
-					user2.setUpdateTime(new Date());
-					//更新用户数据
-					this.updateById(user2);
-					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);
-				}
-			}
-		});
-		//如果所有数据导入有一个异常
+//				}
+//			}
+		}
+
+//		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());
+//						boolean save = this.save(user);
+//						if (save){
+//							//数据异步同步到群防群控
+//							myAsyncService.qfqkUserSave(user);
+//						}
+//						//加入新增集合
+////						addList.add(user);
+//					}
+//					//更新
+//					if (result1.getCode()==201){
+//						//先查询当前库是否有改用户?
+//						User user1 = this.getById(result1.getUserId());
+//						if (null!=user1) {
+//							//存在,更新
+//							user.setId(result1.getUserId());
+//							user.setCreateTime(null);
+//							boolean update = this.updateById(user);
+//							if (update) {
+//								//数据异步同步到群防群控
+//								myAsyncService.updateUserByQfqk(user);
+//							}
+//						}else {
+//							//不存在,则新增
+//							user.setId(result1.getUserId());
+//							boolean save = this.save(user);
+//							if (save){
+//								//数据异步同步到群防群控
+//								myAsyncService.qfqkUserSave(user);
+//							}
+//						}
+//						//加入更新集合
+////						updateList.add(user);
+//					}
+//					if (result1.getCode()==202){
+//						status.set(false);
+//						//已在其他单位存在
+//						errorList.add(user0.getCardid());
+//					}
+//					if (result1.getCode()==203){
+//						securityInvalidStatus.set(false);
+//						//保安证编号不匹配
+//						securityInvalidList.add(user0.getCardid());
+//					}
+//				}
+//			}
+//		}
+//
+//		//如果所有数据导入有一个异常
+//		StringBuilder errorBuilder = new StringBuilder();
 //		if (!status.get()){
 //			String errorAccount = StringUtils.join(errorList, "\\\n");
-//			throw new ServiceException("用户:["+errorAccount+"]导入失败!已在其他单位存在!");
+//			errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
 //		}
-		if (!status.get() || !agetStatus.get()){
-			if (!status.get() && agetStatus.get()) {
-				String errorAccount = StringUtils.join(errorList, "\\\n");
-				throw new ServiceException("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
-			}
-			if (!agetStatus.get() && status.get()) {
-				String errorAccount = StringUtils.join(ageErrorList, "\\\n");
-				throw new ServiceException("用户:[" + errorAccount + "]导入失败!身份证号码不正确,请核对!");
-			}
-			if (!status.get() && !agetStatus.get()) {
-				String errorAccount = StringUtils.join(errorList, "\\\n");
-				String errorAgeAccount = StringUtils.join(ageErrorList, "\\\n");
-				throw new ServiceException("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"+
-					"用户:[" + errorAgeAccount + "]导入失败!身份证号码不正确,请核对!");
-			}
-		}
+//		if (!agetStatus.get()){
+//			String errorAccount = StringUtils.join(ageErrorList, "\\\n");
+//			errorBuilder.append("用户:[" + errorAccount + "]导入失败!身份证号码不正确,请核对!");
+//		}
+//		if (!securityInvalidStatus.get()){
+//			String errorAccount = StringUtils.join(securityInvalidList, "\\\n");
+//			errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!");
+////			errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
+//		}
+//		//抛出异常
+//		if (errorBuilder.length()>0){
+//			throw new ServiceException(errorBuilder.toString());
+//		}
 	}
 
 
-//	/**
-//	 * 导入保安员(测试,用来更新数据用)
-//	 *
+///**
+//	 * 保安员导入(押运人员导入)
 //	 * @param data
 //	 * @param isCovered
+//	 * @param deptId
 //	 */
 //	@Override
-////	@Transactional(rollbackFor = Exception.class)
-//	public void importSecurity(List<SecurityExcel> data, Boolean isCovered, String deptId) {
+//	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);
-//		AtomicInteger count = new AtomicInteger();
+//		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(userExcel.getCardid());
+//			user1.setAccount(user.getCardid());
 //			user1.setIsDeleted(0);
 //			user1.setStatus(1);
+//			user1.setGuncode(user.getGuncode());
 //			User user2 = this.getOne(Condition.getQueryWrapper(user1));
-//			if (null!=user2){
-//				if (null!=userExcel.getRegistered() && userExcel.getRegistered()!=""){
-//					user2.setRegistered(userExcel.getRegistered());
-////					user2.setUserType(7);
+//			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");
 //				}
-//				this.updateById(user2);
-//				count.getAndIncrement();
+//				//分配保安角色
+//				Role role = new Role();
+//				role.setRoleAlias("保安");
+//				Role oneRole = roleService.getOne(Condition.getQueryWrapper(role));
+//				user.setRoleId(oneRole.getId().toString());
 //
-////				AccreditationRecords accreditationRecords = new AccreditationRecords();
-////				accreditationRecords.setType(2);
-////				accreditationRecords.setAuditStatus(2);
-////				accreditationRecords.setUserId(user2.getId());
-////				accreditationRecords.setStatus(1);
-////				accreditationRecords.setCreateTime(new Date());
-////				accreditationRecordsService.save(accreditationRecords);
-//			}else {
-//				errorList.add(userExcel.getCardid());
+//				//性别
+//				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");
-//			throw new ServiceException("用户:["+errorAccount+"]导入失败!已在其他单位存在!");
+//			errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
 //		}
-//		if (status.get()){
-//			String errorAccount = StringUtils.join(errorList, "\\\n");
-//			throw new ServiceException("成功导入用户:"+count.get());
+//		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());
 //		}
 //	}
 
@@ -1587,7 +2187,7 @@
 	 */
 	@Override
 	public void importQrCode(List<QrCodeExcel> data, Boolean isCovered, String deptId) {
-		String url = "http://223.82.109.183:2080/securityInfo.html";
+		String url = "http://61.131.136.25:2080/securityInfo.html";
 		//二维码生成
 		data.forEach(qrCodeExcel -> {
 			if (null!=qrCodeExcel.getSecuritynumber()) {
@@ -1676,27 +2276,65 @@
 	 * @return
 	 */
 	@Override
-	public List<SecurityExcel> exportSecurityInfo(UserVO user) {
+	public List<ExportSecurityExcel> exportSecurityInfo(UserVO user) {
 		return baseMapper.exportSecurityInfo(user);
 	}
 
 
 	/**
-	 * 导入保安员
+	 * 导入保安员(admin 专用)
 	 *
 	 * @param data
-	 * @param isCovered
 	 */
 	@Override
-//	@Transactional(rollbackFor = Exception.class)
-	public void importSecurityTest(List<SecurityExcel> data, Boolean isCovered, String deptId) {
+	public void importSecurityTest(List<SecurityExcel> data) {
 		//将不能导入的保安员账号存起来
 		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<>();
+		//需要新增的从业记录集合
+		List<Experience> experienceList = new ArrayList<>();
 		//导入状态,默认为true ,如果有一个出现问题则为 false
-		AtomicInteger count = new AtomicInteger();
 		AtomicBoolean status = new AtomicBoolean(true);
-		data.forEach(userExcel -> {
+		AtomicBoolean agetStatus = new AtomicBoolean(true);
+		AtomicBoolean securityInvalidStatus = new AtomicBoolean(true);
+		//遍历
+		for (SecurityExcel userExcel : data) {
 			User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
+			//设置部门id
+			String deptIds = userDeptService.selectIn(user.getDeptId());
+			user.setDeptId(deptIds);
+
+			//身份证校验
+			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());
+					//forEach 只能使用 return 跳出本次循环
+//					return;
+					continue;
+				}
+			}
+
 			//判断当前用户是否已在本单位,如果是的更新数据
 			User user1 = new User();
 			user1.setAccount(user.getCardid());
@@ -1704,24 +2342,310 @@
 			user1.setStatus(1);
 			User user2 = this.getOne(Condition.getQueryWrapper(user1));
 			if (null==user2){
-			}else {
-				if (null!=userExcel.getRegistered()){
-					user2.setRegistered(userExcel.getRegistered());
+				//用户不存在,去新增
+				// 设置租户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 {
-					user2.setRegistered("");
+					//创建保安证编号
+					user.setHold("1");
+					//去生成保安证编号
+					String pre = SecurityPaperUtil.getSecurityPaper();
+					//查询当前年份已有的保安证编号
+					int max = this.getSecurityPaperCount(pre);
+					String result = null;
+					if (max == 0) {
+						result = pre + "00001";
+					} else {
+						//格式化
+						DecimalFormat decimalFormat = new DecimalFormat("00000");
+						max++;
+						result = pre + (decimalFormat.format(max));
+					}
+					user.setSecuritynumber(result);
+
+					//生成保安证的同时向保安证管理表中插入一条数据
+					SecurityPaper securityPaper = new SecurityPaper();
+					securityPaper.setNumber(result);
+					securityPaper.setCreateTime(new Date());
+					securityPaper.setIdCardNo(user.getCardid());
+					securityPaper.setPeopleName(user.getRealName());
+					securityPaper.setSource(3);
+					//新增保安员证信息
+					securityPaperService.save(securityPaper);
 				}
-				count.getAndIncrement();
-				//更新用户数据
-				this.updateById(user2);
+				//分配保安角色
+				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().contains("男")) {
+						user.setSex(1);
+					}
+					if (userExcel.getSex().contains("女")) {
+						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());
+				user.setDispatch("1");
+				user.setExaminationType("0");
+				//加入集合
+				userList.add(user);
+				//从业记录新增
+				Experience experience = new Experience();
+				experience.setCardid(user.getCardid());
+				experience.setCompanyname(userExcel.getDeptId());
+				experience.setName(user.getRealName());
+				experience.setPost("保安员");
+				experience.setEntrytime(new Date());
+				//加入集合
+				experienceList.add(experience);
+
+			}else {
+				//匹配组织机构是否一致,如果不一致
+				if(!user2.getDeptId().equals(user.getDeptId())){
+					status.set(false);
+					//加入集合
+					errorList.add(user.getCardid());
+					//forEach 只能使用 return 跳出本次循环
+					continue;
+				}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("1");
+						//去生成保安证编号
+						String pre = SecurityPaperUtil.getSecurityPaper();
+						//查询当前年份已有的保安证编号
+						int max = this.getSecurityPaperCount(pre);
+						String result = null;
+						if (max == 0) {
+							result = pre + "00001";
+						} else {
+							//格式化
+							DecimalFormat decimalFormat = new DecimalFormat("00000");
+							max++;
+							result = pre + (decimalFormat.format(max));
+						}
+						user2.setSecuritynumber(result);
+
+						//生成保安证的同时向保安证管理表中插入一条数据
+						SecurityPaper securityPaper = new SecurityPaper();
+						securityPaper.setNumber(result);
+						securityPaper.setCreateTime(new Date());
+						securityPaper.setIdCardNo(user2.getCardid());
+						securityPaper.setPeopleName(user2.getRealName());
+						securityPaper.setSource(3);
+						//新增保安员证信息
+						securityPaperService.save(securityPaper);
+					}
+					if (null!=userExcel.getRegistered()){
+						user2.setRegistered(userExcel.getRegistered());
+					}else {
+						user2.setRegistered("");
+					}
+					user2.setUpdateTime(new Date());
+					//更新用户数据
+					this.updateById(user2);
+					//qfqk异步推送
+					myAsyncService.updateUserByQfqk(user2);
+					//内网数据sql
+					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() + "'";
+					myAsyncService.FTP(s1);
+				}
 			}
-		});
-		//如果所有数据导入有一个异常
-		if (!status.get()) {
-			String errorAccount = StringUtils.join(errorList, "\\\n");
-			throw new ServiceException("用户:[" + errorAccount + "]导入失败!不存在!");
 		}
-		if (status.get()) {
-			System.out.println("共更新 = " + count.get()+" 人!");
+		//批量插入
+		//用户批量插入
+		if (userList.size()>0) {
+			baseMapper.batchUserList(userList);
+			//用户批量插入异步推送
+			myAsyncService.batchUserList(userList);
+			//sql 拼接
+			StringBuilder builder = new StringBuilder();
+			StringBuilder builder1 = new StringBuilder();
+			//遍历
+			for (User user : userList) {
+				//内网同步,sql 拼接
+				String sql = "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) " +
+					"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()) + "'" + ")";
+				//拼接
+				builder  = builder.append(sql).append(";");
+				List<String> list = Arrays.asList(builder.toString().split(";"));
+				//判断list.size 大小
+				if (list.size()==1000){
+					//执行
+					myAsyncService.FTP(builder.toString());
+					//清空
+					builder.delete(0,builder.length());
+				}
+			}
+
+			//装换成map
+			Map<String, User> userMap = userList.stream().collect(Collectors.toMap(user -> user.getCardid(), user -> user));
+			//匹配
+			experienceList = experienceList.stream().map(experience -> {
+				if (experience.getCardid().equals(userMap.get(experience.getCardid()).getCardid())) {
+					experience.setSecurityid(userMap.get(experience.getCardid()).getId().toString());
+				}
+				return experience;
+			}).collect(Collectors.toList());
+			//批量插入从业记录
+			baseMapper.batchExperienceList(experienceList);
+			//遍历,拼接sql ,同步数据到内网
+			for (Experience experience : experienceList) {
+				String sql1  = "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() + "'" + ")";
+				//拼接
+				builder1  = builder1.append(sql1).append(";");
+				String[] split1 = builder.toString().split(";");
+				//判断list.size 大小
+				if (split1.length==1000){
+					//执行
+					myAsyncService.FTP(builder1.toString());
+					//清空
+					builder1.delete(0,builder1.length());
+				}
+			}
+			//剩余的继续执行
+			myAsyncService.FTP(builder.toString());
+			myAsyncService.FTP(builder1.toString());
+		}
+
+		//如果所有数据导入有一个异常
+		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());
 		}
 	}
 
@@ -1743,4 +2667,53 @@
 		//返回
 		return list;
 	}
+
+	/**
+	 * 查询登录密码还是 123456 的单位信息
+	 * @return
+	 */
+	@Override
+	public Object getNotUpdatePwdInfo() {
+		//查询角色为保安公司管理员的用户信息
+		User user = new User();
+		user.setRoleId("1414575196264300546");
+		user.setStatus(1);
+		user.setIsDeleted(0);
+		List<User> list = this.list(Condition.getQueryWrapper(user));
+		List<User> list1 = new ArrayList<>();
+		//遍历
+		if (list.size()>0){
+			byte[] bytes = DigestUtil.decodeHex(list.get(0).getPassword());
+			try {
+				System.out.println("解密的密码 = " + new String(bytes));
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return list;
+	}
+
+	/**
+	 * 根据用户 id 查询用户信息
+	 * @param id
+	 * @return
+	 */
+	@Override
+	public User getUserById(String id) {
+		return baseMapper.getUserById(Long.parseLong(id));
+	}
+
+	/**
+	 * 手动新增用户信息
+	 * @param user
+	 * @return
+	 */
+	@Override
+	public boolean insert(User user) {
+		int i  = baseMapper.insertUser(user);
+		if (i>0){
+			return true;
+		}
+		return false;
+	}
 }

--
Gitblit v1.9.3