智慧保安后台管理-外网项目备份
guoshilong
2023-12-19 934b32c0af147ef324736c835e0e877962e893fe
src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -56,14 +56,11 @@
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.constant.RoleConstant;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.*;
import org.springblade.modules.FTP.FtpUtil;
import org.springblade.modules.accreditation.entity.AccreditationRecords;
import org.springblade.modules.accreditation.service.AccreditationRecordsService;
import org.springblade.modules.dispatcher.entity.Dispatcher;
import org.springblade.modules.dispatcher.service.IDispatcherService;
import org.springblade.modules.exam.excel.ExportExamScoreExcel;
import org.springblade.modules.experience.entity.Experience;
import org.springblade.modules.experience.service.IExperienceService;
import org.springblade.modules.jurisdiction.entity.Jurisdiction;
@@ -76,18 +73,15 @@
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.entity.Role;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.entity.UserDetailEntity;
import org.springblade.modules.system.excel.*;
import org.springblade.modules.system.node.TreeNode;
import org.springblade.modules.system.service.IDeptService;
import org.springblade.modules.system.service.IRoleService;
import org.springblade.modules.system.service.IUserService;
import org.springblade.modules.system.service.MyAsyncService;
import org.springblade.modules.system.vo.DeptVO;
import org.springblade.modules.system.service.*;
import org.springblade.modules.system.vo.UserInfoDetail;
import org.springblade.modules.system.vo.UserVO;
import org.springblade.modules.system.wrapper.UserWrapper;
import org.springblade.modules.training.entity.TrainingRegistration;
import org.springblade.modules.training.service.TrainingRegistrationService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -97,18 +91,12 @@
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import static org.springblade.common.config.FtpConfig.*;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
/**
@@ -124,6 +112,7 @@
public class UserController {
   private final IUserService userService;
   private final IUserDetailService userDetailService;
   private final IDeptService iDeptService;
   private final IRoleService roleService;
   private final IExperienceService experienceService;
@@ -210,11 +199,8 @@
   })
   @ApiOperationSupport(order = 3)
   @ApiOperation(value = "列表", notes = "传入account和realName")
   //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
   public R<IPage<UserVO>> page(@ApiIgnore User user, Query query, Long deptId, BladeUser bladeUser) {
      System.out.println("在线更新代码.... ");
      IPage<UserVO> pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : bladeUser.getTenantId()));
      System.out.println("=================在线更新代码==================");
   public R<IPage<UserVO>> page(@ApiIgnore User user, Query query, Long deptId) {
      IPage<UserVO> pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (AuthUtil.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : AuthUtil.getTenantId()));
      return R.data(pages);
   }
@@ -236,6 +222,18 @@
         if (userCount > 0) {
            throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
         }
         // 校验保安员,如果角色为保安员,则需要判断身份证号是否已注册
         List<String> roleIds = Arrays.asList(user.getRoleId().split(","));
         String roleId = "1412226235153731586";
         if (roleIds.contains(roleId)){
            // 判断是否已存在,通过身份证号码查询用户信息
            QueryWrapper<User> wrapper = new QueryWrapper<>();
            wrapper.eq("is_deleted",0).eq("status",1).eq("cardid",user.getCardid()).like("role_id","%"+roleId+"%");
            List<User> list = userService.list(wrapper);
            if (list.size()>0){
               throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前保安员身份证号码 [{}] 已存在!", user.getCardid()));
            }
         }
         user.setTenantId("000000");
         user.setStatus(1);
         user.setIsDeleted(0);
@@ -254,55 +252,32 @@
         }
         //新增
         boolean stats = userService.save(user);
         if (stats) {
            //内网同步
            String s = "insert into blade_user(" +
               "id,tenant_id,code,account,password,real_name,phone,sex,role_id,dept_id," +
               "create_time,update_time,cardid,status,is_deleted,jurisdiction) " +
               "values(" + "'" + user.getId() + "'" + "," +
               "'" + user.getTenantId() + "'" + "," +
               "'" + user.getCode() + "'" + "," +
               "'" + user.getAccount() + "'" + "," +
               "'" + user.getPassword() + "'" + "," +
               "'" + user.getRealName() + "'" + "," +
               "'" + user.getPhone() + "'" + "," +
               "'" + user.getSex() + "'" + "," +
               "'" + user.getRoleId() + "'" +
               "," + "'" + user.getDeptId() + "'" +
               "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" +
               "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" +
               "," + "'" + user.getCardid() + "'" +
               "," + "'" + user.getStatus() + "'" +
               "," + "'" + user.getIsDeleted() + "'" +
               "," + "'" + user.getJurisdiction() + "'"
               + ")";
            myAsyncService.dataSync(s);
         }
      } else {
         //修改
         User user1 = userService.getById(user.getId());
         user.setPassword(user1.getPassword());
         user.setUpdateTime(new Date());
         boolean b = userService.updateById(user);
         if (b) {
            String s1 =
               "update blade_user set account = " + "'" + user.getAccount() + "'"
                  + ",code = " + "'" + user.getCode() + "'"
                  + ",real_name = " + "'" + user.getRealName() + "'"
                  + ",phone = " + "'" + user.getPhone() + "'"
                  + ",sex = " + "'" + user.getSex() + "'"
                  + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'"
                  + ",role_id = " + "'" + user.getRoleId() + "'"
                  + ",dept_id = " + "'" + user.getDeptId() + "'"
                  + ",cardid = " + "'" + user.getCardid() + "'"
                  + ",guncode = " + "'" + user.getGuncode() + "'"
                  + " " + "where id = " + "'" + user.getId() + "'";
            myAsyncService.dataSync(s1);
         }
      }
      //返回
      return R.success("成功");
   }
   /**
    * 微信注册
    * @param user
    * @return
    */
   @PostMapping("/wxRegister")
   public R wxRegister(User user){
      //密码加密
      if (Func.isNotEmpty(user.getPassword())) {
         user.setPassword(DigestUtil.encrypt(user.getPassword()));
      }
      Boolean result = userService.wxRegister(user);
      return R.status(result);
   }
   /**
@@ -311,50 +286,64 @@
   @PostMapping("/update")
   @ApiOperationSupport(order = 5)
   @ApiOperation(value = "修改", notes = "传入User")
   public R update(@Valid @RequestBody User user) throws Exception {
   @Transactional(rollbackFor = Exception.class)
   public R update(@Valid @RequestBody Map<String, Object> userMap) throws Exception {
      //获取user
      User user = JSON.parseObject(JSON.toJSONString(userMap.get("user")), User.class);
      // 用户详情
      UserDetailEntity userDetailEntity = JSON.parseObject(JSON.toJSONString(userMap.get("userDetail")), UserDetailEntity.class);
      //分配保安角色
      CacheUtil.clear(USER_CACHE);
      User user1 = userService.getById(user.getId());
      String url = "";
      if (null != user.getFingerprint() && !user.getFingerprint().equals("")) {
         if (user.getFingerprint().length() > 100) {
            //指纹图片上传并返回url
            String s = uploadBase64String(user);
            String[] split = s.split(",");
            user.setFingerprint(split[0]);
            //内网指纹图片url
            url = split[1];
         }
      }
      //判断是否持证
      boolean states = false;
      if (user.getHold().equals("1") && null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){
         //持证,校验保安证编号是否合法
         SecurityPaper securityPaper = new SecurityPaper();
         securityPaper.setIdCardNo(user.getCardid());
         List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
         if (securityPaperList.size()>0){
            //遍历
            for (SecurityPaper paper : securityPaperList) {
               if (paper.getNumber().equals(user.getSecuritynumber())){
                  states = true;
               }
            }
            if (!states){
               user.setHold("2");
//               throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
            }
         }else {
//            throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
            states = false;
            user.setHold("2");
         }
      }
      if (user.getHold().equals("2")){
         states = true;
      }
      // 指纹设置
      fingerprintSet(user);
      // 校验是否持证
      boolean states = updateByIsSecurity(user);
      //如果是离职
      if (leaveHandle(user)) return R.success("修改成功");
      int state = 0;
      //如果是异常标记
      if (null != user.getExaminationType() && !user.getExaminationType().equals("")) {
         if (user.getExaminationType().equals("1")) {
            //吊销保安证
            user.setHold("3");
            state = 1;
         }
      }
      user.setPassword(user1.getPassword());
      user.setUpdateTime(new Date());
      //如果身份证号修改
      if (!user.getCardid().equals(user1.getCardid())) {
         //账号,密码也修改
         user.setAccount(user.getCardid());
         //获取默认密码配置
         user.setPassword(user.getCardid().substring(user.getCardid().length() - 6));
         //加密
         if (Func.isNotEmpty(user.getPassword())) {
            user.setPassword(DigestUtil.encrypt(user.getPassword()));
         }
         state = 2;
      }
      //修改
      boolean status = userService.updateById(user);
      if (status){
         //同时更新用户详情信息
         userDetailService.updateById(userDetailEntity);
      }
      if (!states) {
         return R.data(201,null,"保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
      }
      return R.data(200,null,"修改成功!");
   }
   /**
    * 离职处理
    * @param user
    * @return
    */
   public boolean leaveHandle(@RequestBody @Valid User user) {
      if (null != user.getStatus()) {
         if (user.getStatus().equals(2)) {
            //修改派遣状态
@@ -402,12 +391,6 @@
               //FtpUtil.sqlFileUpload(s1);
               myAsyncService.dataSync(s1);
            } else {
               //新增
               if (null != user.getRtime()) {
                  experience.setEntrytime(user.getRtime());
               } else {
                  experience.setEntrytime(new Date());
               }
               experience.setDeparturetime(new Date());
               experience.setName(user.getRealName());
               if (null != user.getReasonForLeav() && !user.getReasonForLeav().equals("")) {
@@ -417,87 +400,49 @@
               experience.setSecurityid(user.getId().toString());
               //新增
               boolean save = experienceService.save(experience);
               if (save) {
                  //内网同步
                  String s = "insert into sys_experience(id,name,entryTime,departureTime,leaving,cardId,companyname,securityId) " +
                     "values(" + "'" + experience.getId() + "'" +
                     "," + "'" + experience.getName() + "'" +
                     "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
                     "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getDeparturetime()) + "'" +
                     "," + "'" + experience.getLeaving() + "'" +
                     "," + "'" + experience.getCardid() + "'" +
                     "," + "'" + experience.getCompanyname() + "'" +
                     "," + "'" + experience.getSecurityid() + "'"
                     + ")";
                  myAsyncService.dataSync(s);
               }
            }
            boolean status = userService.updateById(user);
            //qfqk 数据推送
            if (status) {
//               myAsyncService.updateUserByQfqk(user);
               //内网更新
               String s1 =
                  "update blade_user set status = " + "'" + user.getStatus() + "'"
                     + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "'"
                     + " " + "where id = " + "'" + user.getId() + "'";
               myAsyncService.dataSync(s1);
            return true;
         }
      }
      return false;
   }
   /**
    *    校验是否持证-更新
    * @param user
    * @return
    */
   public boolean updateByIsSecurity(@RequestBody @Valid User user) {
      //判断是否持证
      boolean states = false;
      if (user.getHold().equals("1") && null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){
         //持证,校验保安证编号是否合法
         SecurityPaper securityPaper = new SecurityPaper();
         securityPaper.setIdCardNo(user.getCardid());
         List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
         if (securityPaperList.size()>0){
            //遍历
            for (SecurityPaper paper : securityPaperList) {
               if (paper.getNumber().equals(user.getSecuritynumber())){
                  states = true;
               }
            }
            return R.success("修改成功");
            if (!states){
               user.setHold("2");
//               throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
            }
         }else {
//            throw new ServiceException("保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
            states = false;
            user.setHold("2");
         }
      }
      int state = 0;
      //如果是异常标记
      if (null != user.getExaminationType() && !user.getExaminationType().equals("")) {
         if (user.getExaminationType().equals("1")) {
            //吊销保安证
            user.setHold("3");
            state = 1;
         }
      if (user.getHold().equals("2")){
         states = true;
      }
      user.setPassword(user1.getPassword());
      user.setUpdateTime(new Date());
      //如果身份证号修改
      if (!user.getCardid().equals(user1.getCardid())) {
         //账号,密码也修改
         user.setAccount(user.getCardid());
         //获取默认密码配置
         user.setPassword(user.getCardid().substring(user.getCardid().length() - 6));
         //加密
         if (Func.isNotEmpty(user.getPassword())) {
            user.setPassword(DigestUtil.encrypt(user.getPassword()));
         }
         state = 2;
      }
      //修改
      boolean status = userService.updateById(user);
      if (status) {
         if (state == 2) {
            UserDTO userDTO = new UserDTO();
            userDTO.setAccount(user.getAccount());
            userDTO.setCardid(user.getCardid());
            userDTO.setOldCardid(user1.getCardid());
            userDTO.setPassword(user.getPassword());
            userDTO.setRealName(user.getRealName());
            userDTO.setPhone(user.getPhone());
            userDTO.setSex(user.getSex());
            userDTO.setAvatar(user.getAvatar());
            //推送qfqk
//            myAsyncService.updateUserByAccount(userDTO);
         } else {
//            myAsyncService.updateUserByQfqk(user);
         }
      }
      if (!states) {
         return R.data(201,null,"保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
      }
      return R.data(200,null,"修改成功!");
      return states;
   }
@@ -549,26 +494,6 @@
            signInRecordsService.updateById(inRecordsServiceOne);
         }
      }
      //内网同步
      String s1 =
         "update blade_user set account = " + "'" + user.getCardid() + "'"
            + ",real_name = " + "'" + user.getRealName() + "'"
            + ",avatar = " + "'" + user.getAvatar() + "'"
            + ",sex = " + "'" + user.getSex() + "'"
            + ",cardid = " + "'" + user.getCardid() + "'"
            + ",nation = " + "'" + user.getNation() + "'"
            + ",fingerprint = " + "'" + url + "'"
            + ",my_picture = " + "'" + user.getMyPicture() + "'"
            + ",address = " + "'" + user.getAddress() + "'"
            + ",registered = " + "'" + user.getRegistered() + "'"
            + ",securitynumber = " + "'" + user.getSecuritynumber() + "'"
            + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'"
            + ",hold = " + "'" + user.getHold() + "'"
            + ",cell = " + "'" + user.getCell() + "'"
            + " " + "where id = " + "'" + user.getId() + "'";
      //FtpUtil.sqlFileUpload(s1);
      myAsyncService.dataSync(s1);
      return R.success("修改成功");
   }
@@ -697,25 +622,15 @@
   @PostMapping("/remove")
   @ApiOperationSupport(order = 6)
   @ApiOperation(value = "删除", notes = "传入id集合")
   //@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
   public R remove(@RequestParam String ids) {
      CacheUtil.clear(USER_CACHE);
//      List<String> list = Arrays.asList(ids.split(","));
//      list.forEach(id -> {
//         User user = userService.getById(id);
//         User user1 = new User();
//         user1.setId(user.getId());
//         user1.setCardid(user.getCardid());
//         user1.setIsDeleted(1);
//         //qfqk 同步
////         myAsyncService.deleteUserByQfqk(user1);
//         //内网同步
//         String s1 = "update blade_user set is_deleted = 1"
//            + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "'"
//            + " " + "where id = " + "'" + id + "'";
//         //FtpUtil.sqlFileUpload(s1);
//         myAsyncService.dataSync(s1);
//      });
      List<String> list = Arrays.asList(ids.split(","));
      // 遍历删除用户详情信息
      list.forEach(id -> {
         QueryWrapper<UserDetailEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("user_id",id);
         userDetailService.remove(wrapper);
      });
      return R.status(userService.removeUser(ids));
   }
@@ -842,21 +757,21 @@
      return R.success("操作成功");
   }
//   /**
//    * 导出用户
//    */
//   @GetMapping("export-user")
//   @ApiOperationSupport(order = 13)
//   @ApiOperation(value = "导出用户", notes = "传入user")
//   public void exportUser(@ApiIgnore @RequestParam Map<String, Object> user, BladeUser bladeUser, HttpServletResponse response) {
   /**
    * 导出用户
    */
   @GetMapping("export-user")
   @ApiOperationSupport(order = 13)
   @ApiOperation(value = "导出用户", notes = "传入user")
   public void exportUser(@ApiIgnore @RequestParam Map<String, Object> user, BladeUser bladeUser, HttpServletResponse response) {
//      QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user, User.class);
//      if (!AuthUtil.isAdministrator()) {
//         queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId());
//      }
//      queryWrapper.lambda().eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED);
//      List<UserExcel> list = userService.exportUser(queryWrapper);
//      ExcelUtil.export(response, "用户数据" + DateUtil.time(), "用户数据表", list, UserExcel.class);
//   }
      List<UserExcel> list = userService.exportUser(user);
      ExcelUtil.export(response, "用户数据" + DateUtil.time(), "用户数据表", list, UserExcel.class);
   }
   /**
@@ -896,11 +811,12 @@
      securityExcel.setSex("男");
      securityExcel.setCardid("360XXX19XXXXXX****");
      securityExcel.setNation("汉");
      securityExcel.setRegistered("山西省晋城市******");
      securityExcel.setPermanentResidenceAddress("山西省晋城市******");
      securityExcel.setEducation("本科");
      securityExcel.setPoliticaloutlook("群众");
      securityExcel.setUnitName("晋城市***公司");
      securityExcel.setAddress("山西省晋城市******");
      securityExcel.setDwellAddress("山西省晋城市******");
      securityExcel.setAcceptanceTime("2023/12/01");
      list.add(securityExcel);
      SecurityExcel securityExcel1 = new SecurityExcel();
@@ -910,11 +826,12 @@
      securityExcel1.setSex("女");
      securityExcel1.setCardid("360XXX19XXXXXX****");
      securityExcel1.setNation("汉");
      securityExcel1.setRegistered("山西省晋城市******");
      securityExcel1.setPermanentResidenceAddress("山西省晋城市******");
      securityExcel1.setEducation("本科");
      securityExcel1.setPoliticaloutlook("党员");
      securityExcel1.setUnitName("晋城市***公司");
      securityExcel1.setAddress("山西省晋城市******");
      securityExcel1.setDwellAddress("山西省晋城市******");
      securityExcel1.setAcceptanceTime("2023/12/01");
      list.add(securityExcel1);
      String fileName = null;
      try {
@@ -1109,6 +1026,8 @@
   public R securitySave(@Valid @RequestBody Map<String, Object> userMap) throws Exception {
      //获取user
      User user = JSON.parseObject(JSON.toJSONString(userMap.get("user")), User.class);
      // 用户详情
      UserDetailEntity userDetailEntity = JSON.parseObject(JSON.toJSONString(userMap.get("userDetail")), UserDetailEntity.class);
      //分配保安角色
      Role role = new Role();
      role.setRoleAlias("保安");
@@ -1116,14 +1035,115 @@
      user.setRoleId(oneRole.getId().toString());
      user.setDispatch("1");
      user.setExaminationType("0");
      user.setCreateTime(new Date());
      user.setTenantId("000000");
      user.setAccount(user.getCardid());
      // 用户校验
      userCheck(user);
      // 保安员证校验
      boolean state = securityPaperCheck(user);
      // 指纹设置
      fingerprintSet(user);
      //密码加密
      if (Func.isNotEmpty(user.getCardid())) {
//         user.setPassword(DigestUtil.encrypt(user.getPassword()));
         //取身份证号码后6位作为密码
         user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6)));
      }
      //用户新增
      boolean status = userService.save(user);
      // 用户详情信息新增
      if (status){
         userDetailEntity.setUserId(user.getId());
         // 新增
         userDetailService.save(userDetailEntity);
      }
      //从业记录新增
      experienceSave(user);
      //判断是否持证是否为空
      if (!state) {
         return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
      }
      return R.data(200,null,"新增成功!");
   }
   /**
    * 指纹设置
    * @param user
    * @throws Exception
    */
   private void fingerprintSet(User user) throws Exception {
      String url = "";
      if (null != user.getFingerprint() && !user.getFingerprint().equals("")) {
         if (user.getFingerprint().length() > 100) {
            String s = uploadBase64String(user);
            String[] split = s.split(",");
            user.setFingerprint(split[0]);
            url = split[1];
         }
      }
   }
   /**
    * 保安员证校验
    * @param user
    * @return
    */
   private boolean securityPaperCheck(User user) {
      boolean state = false;
      if (user.getHold().equals("1")){
         //持证,校验保安证编号是否合法
         SecurityPaper securityPaper = new SecurityPaper();
         securityPaper.setIdCardNo(user.getCardid());
         List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
         if (securityPaperList.size()>0){
            //遍历
            for (SecurityPaper paper : securityPaperList) {
               if (paper.getNumber().equals(user.getSecuritynumber())){
                  state = true;
               }
            }
            if (!state){
               user.setHold("2");
               user.setSecuritynumber(null);
            }
         }else {
            user.setHold("2");
            user.setSecuritynumber(null);
         }
      }else {
         state = true;
      }
      return state;
   }
   /**
    * 从业记录新增
    * @param user
    */
   public void experienceSave(User user) {
      //从业记录新增
      Experience experience = new Experience();
      Dept dept = iDeptService.getById(user.getDeptId());
      experience.setCardid(user.getCardid());
      experience.setSecurityid(user.getId().toString());
      experience.setCompanyname(dept.getDeptName());
      experience.setName(user.getRealName());
      experience.setPost("保安员");
      experienceService.save(experience);
   }
   /**
    * 用户校验
    * @param user
    */
   public void userCheck(User user) {
      User user1 = new User();
      user1.setIsDeleted(0);
      user1.setStatus(1);
      user1.setAccount(user.getCardid());
      List<User> list = userService.list(Condition.getQueryWrapper(user1));
      // 判断校验
      if (list.size() > 0 && Func.isEmpty(user.getId())) {
         if (null != user.getCell() && !user.getCell().equals("")) {
            if (user.getCell().equals("2")) {
@@ -1154,91 +1174,6 @@
            throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
         }
      }
      //判断是否持证
      boolean state = false;
      if (user.getHold().equals("1")){
         //持证,校验保安证编号是否合法
         SecurityPaper securityPaper = new SecurityPaper();
         securityPaper.setIdCardNo(user.getCardid());
         List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper));
         if (securityPaperList.size()>0){
            //遍历
            for (SecurityPaper paper : securityPaperList) {
               if (paper.getNumber().equals(user.getSecuritynumber())){
                  state = true;
               }
            }
            if (!state){
               user.setHold("2");
               user.setSecuritynumber(null);
            }
         }else {
            user.setHold("2");
            user.setSecuritynumber(null);
         }
      }else {
         state = true;
      }
      String url = "";
      if (null != user.getFingerprint() && !user.getFingerprint().equals("")) {
         if (user.getFingerprint().length() > 100) {
            String s = uploadBase64String(user);
            String[] split = s.split(",");
            user.setFingerprint(split[0]);
            url = split[1];
         }
      }
      //密码加密
      if (Func.isNotEmpty(user.getCardid())) {
//         user.setPassword(DigestUtil.encrypt(user.getPassword()));
         //取身份证号码后6位作为密码
         user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6)));
      }
      user.setCreateTime(new Date());
      user.setTenantId("000000");
      //用户新增
      boolean status = userService.save(user);
      //从业记录新增
      Experience experience = new Experience();
      String rtime;
      String paperTime;
      if (user.getRtime() == null) {
         rtime = null;
      } else {
         rtime = new SimpleDateFormat("yyyy-MM-dd").format(user.getRtime());
         experience.setEntrytime(user.getRtime());
      }
      Dept dept = iDeptService.getById(user.getDeptId());
      experience.setCardid(user.getCardid());
      experience.setSecurityid(user.getId().toString());
      experience.setCompanyname(dept.getDeptName());
      experience.setName(user.getRealName());
      experience.setPost("保安员");
      experienceService.save(experience);
      //发证日期处理
//      if (user.getPaperTime() == null) {
//         paperTime = "";
//      } else {
//         paperTime = new SimpleDateFormat("yyyy-MM-dd").format(user.getPaperTime());
//      }
      //头像
      if (null != user.getAvatar() && !user.getAvatar().equals("")) {
         user.setAvatar(FtpConfig.ip + user.getAvatar().substring(26));
      }
      //判断是否持证是否为空
      if (!state) {
         return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
      }
      return R.data(200,null,"新增成功!");
   }
   /**
@@ -1289,12 +1224,6 @@
         //FtpUtil.sqlFileUpload(s1);
         myAsyncService.dataSync(s1);
      } else {
         //新增
         if (null != user.getRtime()) {
            experience.setEntrytime(user.getRtime());
         } else {
            experience.setEntrytime(new Date());
         }
         experience.setDeparturetime(new Date());
         experience.setName(user.getRealName());
         if (null != user.getReasonForLeav() && !user.getReasonForLeav().equals("")) {
@@ -1355,14 +1284,20 @@
    */
   @GetMapping("/details")
   public R details(User user) {
      User user1 = userService.getById(user.getId());
      if (null != user1.getFingerprint() && !user1.getFingerprint().equals("")) {
         //url 转base64
         String base64Url = ImageUtils.imageUrlToBase64(user1.getFingerprint());
         System.out.println("base64Url = " + base64Url);
         user1.setFingerprint(base64Url);
      UserVO userInfo = userService.getUserDetailById(user.getId());
      // 查询对应的详情信息
      if (null!=userInfo){
         QueryWrapper<UserDetailEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("user_id",userInfo.getId()).eq("is_deleted",0);
         UserDetailEntity one = userDetailService.getOne(wrapper);
         userInfo.setUserDetail(one);
      }
      return R.data(user1);
      if (null != userInfo.getFingerprint() && !userInfo.getFingerprint().equals("")) {
         //url 转base64
         String base64Url = ImageUtils.imageUrlToBase64(userInfo.getFingerprint());
         userInfo.setFingerprint(base64Url);
      }
      return R.data(userInfo);
   }
@@ -1440,4 +1375,30 @@
   public R getNotUpdatePwdInfo() {
      return R.data(userService.getNotUpdatePwdInfo());
   }
   /**
    * 数据处理
    * @return
    */
   @GetMapping("/dataHandler")
   public R dataHandler() {
      return R.data(userService.dataHandler());
   }
   //获取用户表和用户详情表的信息
   @GetMapping("/getUserInfoDetail")
   public R getUserInfoDetail(String id){
      UserInfoDetail userInfoDetail = userService.getUserInfoDetail(id);
      return R.data(userInfoDetail);
   }
   @PostMapping("/batchAudit")
   public R batchAudit(String ids,String auditStatus){
      boolean result = userService.batchAudit(ids,auditStatus);
      return R.status(result);
   }
}