智慧保安后台管理-外网
Administrator
2022-06-30 a9943ed22bd7568924bf98c462139269d873cd8a
src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -33,16 +33,14 @@
import lombok.AllArgsConstructor;
import net.sf.json.JSONObject;
import org.apache.commons.codec.Charsets;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.cache.DictCache;
import org.springblade.common.config.FtpConfig;
import org.springblade.common.enums.DictEnum;
import org.springblade.common.excel.CustomCellWriteHeightConfig;
import org.springblade.common.excel.CustomCellWriteWeightConfig;
import org.springblade.common.excel.RowWriteHandler;
import org.springblade.common.utils.HttpClientUtils;
import org.springblade.common.utils.HttpReqUtil;
import org.springblade.common.utils.ImageUtils;
import org.springblade.common.utils.arg;
import org.springblade.common.utils.*;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.launch.constant.AppConstant;
@@ -107,11 +105,13 @@
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import static org.springblade.common.config.FtpConfig.*;
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
import static org.springblade.modules.FTP.DataHandler.handlerUserInfo;
/**
 * 控制器
@@ -583,7 +583,10 @@
            boolean status = userService.updateById(user);
            //qfqk 数据推送
            if (status) {
               myAsyncService.updateUserByQfqk(user);
               User user2 = new User();
               user2.setId(user.getId());
               //删除
               myAsyncService.deleteUserByQfqk(user2);
               //内网更新
               String s1 =
                  "update blade_user set status = " + "'" + user.getStatus() + "'"
@@ -718,6 +721,129 @@
   }
   /**
    * 修改保安员信息
    */
   @PostMapping("/updateSecurityInfo")
   public R updateSecurityInfo(@RequestBody User user) throws Exception {
      User user1 = userService.getById(user.getId());
      user.setId(user1.getId());
      user.setUpdateTime(new Date());
      user.setPassword(user1.getPassword());
      //创建更新的字符串
      StringBuilder builder = new StringBuilder();
      builder.append("update blade-user set update_time = "+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()));
      //姓名
      if (null != user.getRealName() && !user.getRealName().equals("")) {
         builder.append(",set real_name = "+user.getRealName());
      }
      int state = 1;
      //身份证号码
      if (null != user.getCardid() && !user.getCardid().equals("")) {
         //身份证号校验
         //去除所有空格
         String cardid = user.getCardid().replaceAll(" ", "");
         //校验
         boolean b = IdCardNoUtil.checkIdCardNo(cardid);
         if(b){
            user.setCardid(cardid);
            //账号,密码也修改
            user.setAccount(user1.getRealName().substring(0,1)+cardid.substring(cardid.length()-4));
            //获取默认密码配置
            user.setPassword(user.getCardid().substring(user.getCardid().length() - 6));
            //加密
            if (Func.isNotEmpty(user.getPassword())) {
               user.setPassword(DigestUtil.encrypt(user.getPassword()));
            }
            state = 2;
            builder.append(",set account = "+user.getAccount()+",set cardid = "+user.getCardid()+",set password = "+user.getPassword());
         }else {
            throw new ServiceException("导入失败!身份证号码[ "+user.getCardid()+" ]不正确,请核对!");
         }
      }
      //手机号
      if (null != user.getPhone() && !user.getPhone().equals("")) {
         builder.append(",set phone = "+user.getPhone());
      }
      //指纹url 处理
      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];
            builder.append(",set fingerprint = "+url);
         }
      }
      //头像
      if (null != user.getAvatar() && !user.getAvatar().equals("")) {
         String avatar  = FtpConfig.ip +"/"+ user.getAvatar().substring(26);
         System.out.println("头像上传 url = " + avatar);
         builder.append(",set fingerprint = "+avatar);
      }
      //名族
      if (null != user.getNation() && !user.getNation().equals("")) {
         builder.append(",set nation = "+user.getNation());
      }
      //学历
      if (null != user.getEducation() && !user.getEducation().equals("")) {
         builder.append(",set education = "+user.getEducation());
      }
      //政治面貌
      if (null != user.getPoliticaloutlook() && !user.getPoliticaloutlook().equals("")) {
         builder.append(",set politicaloutlook = "+user.getPoliticaloutlook());
      }
      //健康状态
      if (null != user.getHealstats() && !user.getHealstats().equals("")) {
         builder.append(",set healstats = "+user.getHealstats());
      }
      //身高
      if (null != user.getHeight() && !user.getHeight().equals("")) {
         builder.append(",set height = "+user.getHeight());
      }
      //联系地址
      if (null != user.getAddress() && !user.getAddress().equals("")) {
         builder.append(",set address = "+user.getAddress());
      }
      //身份证地址
      if (null != user.getRegistered() && !user.getRegistered().equals("")) {
         builder.append(",set registered = "+user.getRegistered());
      }
      //修改
//      boolean status = userService.updateById(user);
      boolean status = userService.update(user, Wrappers.<User>update().lambda().in(User::getId,user.getId()));
      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);
         }
      }
      //拼接最终的sql
      String sql = builder.append(" where id = " + user.getId()).toString();
      myAsyncService.FTP(sql);
      //返回
      return R.data(200,null,"修改成功!");
   }
   /**
    * 账号修改
    * @param user
    * @return
@@ -736,15 +862,19 @@
      }
      //如果不重复,则进行修改操作
      //更新用户账户信息
      status = userService.updateById(user);
      status = userService.update(user, Wrappers.<User>update().lambda().in(User::getId,user.getId()));
//      status = userService.updateById(user);
      if (status){
         System.out.println("user = " + user);
         User user2 = userService.getById(user.getId());
         UserDTO userDTO = new UserDTO();
         userDTO.setAccount(user.getAccount());
         userDTO.setPassword(user.getPassword());
         userDTO.setSecurityId(user.getId().toString());
         userDTO.setPhone(user.getPhone());
         userDTO.setAvatar(user.getAvatar());
         userDTO.setPassword(user2.getPassword());
         userDTO.setSecurityId(user2.getId().toString());
         userDTO.setRealName(user1.getRealName());
         userDTO.setPhone(user2.getPhone());
         userDTO.setCardid(user2.getCardid());
         userDTO.setSex(user1.getSex());
         //异步修改群防群控
         myAsyncService.updateUserByAccount(userDTO);
      }
@@ -859,7 +989,7 @@
         minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucket).build());
         minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucket).build());
      }
      String newName = "upload/picture/" + UUID.randomUUID().toString().replaceAll("-", "") + ".jpg";
      String newName = "upload/picture/f" + UUID.randomUUID().toString().replaceAll("-", "") + ".jpg";
      InputStream in = new ByteArrayInputStream(b);
      String[] split = newName.split("/");
      //创建头部信息
@@ -957,7 +1087,7 @@
         User user = userService.getById(id);
         User user1 = new User();
         user1.setId(user.getId());
         user1.setCardid(user.getCardid());
//         user1.setCardid(user.getCardid());
         user1.setIsDeleted(1);
         //qfqk 同步
         myAsyncService.deleteUserByQfqk(user1);
@@ -1523,7 +1653,7 @@
            "values(" + "'" + experience.getId() + "'" + "," +
            "'" + experience.getName() + "'" + "," +
            "'" + experience.getPost() + "'" + "," +
            "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
            "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
            "," + "'" + experience.getCardid() + "'" +
            "," + "'" + experience.getCompanyname() + "'" +
            "," + "'" + experience.getSecurityid() + "'"
@@ -1592,7 +1722,7 @@
      User user1 = Objects.requireNonNull(BeanUtil.copy(user,User.class));
      //头像
      if (null != user.getAvatar() && !user.getAvatar().equals("")) {
         user1.setAvatar(FtpConfig.ip + user.getAvatar().substring(26));
         user1.setAvatar(FtpConfig.ip +"/"+ user.getAvatar().substring(26));
      }
      //指纹
      String url = "";
@@ -1618,49 +1748,134 @@
      map.put("user",user1);
      myAsyncService.FTPObject(map);
      int count = 0;
      int flag = 1;
      Result result = new Result();
      //调用ftp获取返回数据
      while (true){
         System.out.println("用户新增开始接收消息......................");
         Thread.sleep(1000);
         //调用ftp获取返回数据
         result = Monitor.isFTPFileExist(uuid);
         //如果返回true,就退处
         if (result.getCode()==200){
            flag = 1;
            break;
         }else if (result.getCode()==201){
            flag = 2;
            break;
         }else if (result.getCode()==202){
            flag = 3;
            break;
         }else if (result.getCode()==203){
            flag = 4;
            break;
         }else{
            //计数
            count++;
            //如果超过60s 没有读取到,则退出
            if (count == 60) {
               break;
            }
         }
      }
      if (flag==1 || flag==2) {
         //返回
         return R.data(200, null, "新增成功!");
      }else if (flag==3){
         throw new ServiceException(result.getMsg());
      }else if (flag==4){
//         return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
         return R.data(201, null, "保安证编号不匹配,请核实!");
      }else{
         //返回
         return R.data(400, null, "新增失败!");
      }
//      int count = 0;
//      int flag = 1;
//      Result result0 = new Result();
//      //调用ftp获取返回数据
//      while (true){
//         System.out.println("用户新增开始接收消息......................");
//         Thread.sleep(2000);
//         //调用ftp获取返回数据
//         result0 = Monitor.isFTPFileExist(uuid);
//         System.out.println("result0 ftp 返回结果 = " + result0);
//         //如果返回true,就退处
//         if (result0.getCode()==200){
//            break;
//         }else{
//            //计数
//            count++;
//            //如果超过60s 没有读取到,则退出
//            if (count == 20) {
//               break;
//            }
//         }
//      }
//
//      //将不能导入的保安员账号存起来
//      List<String> errorList = new ArrayList<>();
//      //保安员证编号不符的保安员信息存入集合
//      List<String> securityInvalidList = new ArrayList<>();
//      //导入状态,默认为true ,如果有一个出现问题则为 false
//      AtomicBoolean status = new AtomicBoolean(true);
//      AtomicBoolean securityInvalidStatus = new AtomicBoolean(true);
//      if (null!=result0){
//         Result result = result0.getData().get(0);
//         //用户数处理
//         User users = handlerUserInfo(uuid);
//         System.out.println("用户数据处理---------------");
//         System.out.println("用户数据 = " + users);
//         //判断结果
//         if (result.getCode()==200){
//            //新增
//            users.setId(result.getUserId());
//            users.setStatus(1);
//            //插入数据库
//            boolean save = userService.save(users);
//            if (save){
//               //异步同步到群防群控
//               myAsyncService.qfqkUserSave(users);
//            }
//         }else if (result.getCode()==201) {
//            //修改
//            users.setId(result.getUserId());
//            //先查询当前库是否有改用户?
//            User user2 = userService.getById(result.getUserId());
//            if (null!=user2) {
//               //数据修改
//               boolean b = userService.updateById(users);
//               if (b) {
//                  //异步同步到群防群控
//                  myAsyncService.updateUserByQfqk(users);
//               }
//            }else {
//               //新增
//               boolean save = userService.save(users);
//               if (save){
//                  //异步同步到群防群控
//                  myAsyncService.qfqkUserSave(users);
//               }
//            }
//         }else if (result.getCode()==203){
//            //保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 用户为新增
//            //新增
//            users.setId(result.getUserId());
//            //插入数据库
//            boolean save = userService.save(users);
//            if (save) {
//               //异步同步到群防群控
//               myAsyncService.qfqkUserSave(users);
//            }
//            securityInvalidStatus.set(false);
//            //保安证编号不匹配
//            securityInvalidList.add(user.getCardid());
//         }else if (result.getCode()==204){
//            //保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请! 内网用户已存在情况
//            users.setId(result.getUserId());
//            //先查询当前库是否有改用户?
//            User user2 = userService.getById(result.getUserId());
//            //判断
//            if (null!=user2) {
//               //修改
//               //数据修改
//               boolean b = userService.updateById(users);
//               if (b){
//                  //异步同步到群防群控
//                  myAsyncService.updateUserByQfqk(users);
//               }
//            }else {
//               //新增
//               boolean save = userService.save(users);
//               if (save){
//                  //异步同步到群防群控
//                  myAsyncService.qfqkUserSave(users);
//               }
//            }
//            securityInvalidStatus.set(false);
//            //保安证编号不匹配
//            securityInvalidList.add(user.getCardid());
//         }else {
//            status.set(false);
//            //已在其他单位存在
//            errorList.add(user.getCardid());
//         }
//      }
      //如果所有数据导入有一个异常
//      StringBuilder errorBuilder = new StringBuilder();
//      if (!status.get()){
//         String errorAccount = StringUtils.join(errorList, "\\\n");
//         errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!");
//      }
//      //抛出异常
//      if (errorBuilder.length()>0){
//         throw new org.springblade.core.log.exception.ServiceException(errorBuilder.toString());
//      }
//
//      if (!securityInvalidStatus.get()){
////         return R.data(201, null, "保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!");
//         return R.data(201, null, "保安证编号不匹配,请核实!");
//      }
      return R.data(200, null, "新增成功!");
   }
   /**
@@ -1729,8 +1944,8 @@
         //内网同步
         String s = "insert into sys_experience(id,name,entryTime,departureTime,leaving,cardId,companyname,securityId) " +
            "values(" + "'" + experience.getId() + "'" + "," +
            "'" + experience.getName() + "'" + "," +
            "values(" + "'" + experience.getId() + "'" +
            "," + "'" + experience.getName() + "'" +
            "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" +
            "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getDeparturetime()) + "'" +
            "," + "'" + experience.getLeaving() + "'" +
@@ -1794,7 +2009,7 @@
    */
   @GetMapping("export-security-info")
   public void exportSecurityInfo(HttpServletResponse response, UserVO user) throws IOException {
      List<SecurityExcel> list = userService.exportSecurityInfo(user);
      List<ExportSecurityExcel> list = userService.exportSecurityInfo(user);
      String fileName = null;
      try {
         response.setContentType("application/vnd.ms-excel");
@@ -1802,7 +2017,7 @@
         fileName = URLEncoder.encode("保安员数据导出" + DateUtil.time(), Charsets.UTF_8.name());
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
         //修改单元格格式为文本格式
         EasyExcel.write(response.getOutputStream(), SecurityExcel.class).sheet("保安员数据表").registerWriteHandler(new RowWriteHandler()).doWrite(list);
         EasyExcel.write(response.getOutputStream(), ExportSecurityExcel.class).sheet("保安员数据表").registerWriteHandler(new RowWriteHandler()).doWrite(list);
      } catch (Throwable var6) {
         throw var6;
      }