智慧保安后台管理-外网
Administrator
2022-06-28 e290026f1004fca0d8cf43bf986a3dbd8b7974c9
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,11 +38,14 @@
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;
@@ -53,16 +58,15 @@
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;
@@ -97,6 +101,7 @@
   private final IExperienceService experienceService;
   private final MyAsyncService myAsyncService;
   private final SecurityPaperService securityPaperService;
   private final RedisTemplate redisTemplate;
   @Override
   @Transactional(rollbackFor = Exception.class)
@@ -343,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) {
@@ -423,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
@@ -833,33 +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<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) {
      for (SecurityYyExcel userExcel : data) {
         User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
         //设置部门id
         String deptIds = userDeptService.selectIn(user.getDeptId());
@@ -893,683 +1553,519 @@
            }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());
         // 设置租户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 != 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);
         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() != "") {
                     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);
            }
            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);
         //用户批量插入异步推送
         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());
            }
         }
         //生成随机数
         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());
               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());
//         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;
//               }
//            }
//         }
      }
//      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());
      }
//      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");
//         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());
//      }
   }
   @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.getHold() && userExcel.getHold() != "") {
//                  if (userExcel.getHold().equals("是") && userExcel.getSecuritynumber()!=null && !userExcel.getSecuritynumber().equals("")) {
//                     user2.setHold("1");
//                     //更新保安证编号
//                     user2.setSecuritynumber(user.getSecuritynumber());
///**
//    * 保安员导入(押运人员导入)
//    * @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 (userExcel.getHold().equals("否")) {
//                  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;
//               }
               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());
      }
   }
//            }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());
//      }
//   }
   /**
@@ -1691,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()) {
@@ -1780,7 +2276,7 @@
    * @return
    */
   @Override
   public List<SecurityExcel> exportSecurityInfo(UserVO user) {
   public List<ExportSecurityExcel> exportSecurityInfo(UserVO user) {
      return baseMapper.exportSecurityInfo(user);
   }
@@ -2206,4 +2702,18 @@
   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;
   }
}