| | |
| | | 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; |
| | |
| | | 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; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tenant.BladeTenantProperties; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.constant.BladeConstant; |
| | | import org.springblade.core.tool.jackson.JsonUtil; |
| | | import org.springblade.core.tool.support.Kv; |
| | | import org.springblade.core.tool.utils.*; |
| | | import org.springblade.modules.FTP.FtpUtil; |
| | | import org.springblade.modules.FTP.Monitor; |
| | | import org.springblade.modules.FTP.Result; |
| | | import org.springblade.modules.auth.enums.UserEnum; |
| | | import org.springblade.modules.dispatcher.entity.Dispatcher; |
| | | import org.springblade.modules.dispatcher.vo.DispatcherVO; |
| | | import org.springblade.modules.exam.util.SecurityPaperUtil; |
| | | import org.springblade.modules.experience.entity.Experience; |
| | | import org.springblade.modules.experience.service.IExperienceService; |
| | | import org.springblade.modules.information.entity.Information; |
| | | import org.springblade.modules.information.service.IInformationService; |
| | | import org.springblade.modules.jurisdiction.entity.Jurisdiction; |
| | | import org.springblade.modules.jurisdiction.service.JurisdictionService; |
| | | import org.springblade.modules.securitypaper.entity.SecurityPaper; |
| | | import org.springblade.modules.securitypaper.service.SecurityPaperService; |
| | | import org.springblade.modules.system.dto.UserDTO; |
| | | import org.springblade.modules.system.entity.*; |
| | | import org.springblade.modules.system.excel.QrCodeExcel; |
| | | import org.springblade.modules.system.excel.SecurityExcel; |
| | | import org.springblade.modules.system.excel.SecurityYyExcel; |
| | | import org.springblade.modules.system.excel.UserExcel; |
| | | import org.springblade.modules.system.excel.*; |
| | | import org.springblade.modules.system.mapper.UserMapper; |
| | | import org.springblade.modules.system.node.TreeNode; |
| | | import org.springblade.modules.system.service.*; |
| | | import org.springblade.modules.system.vo.UserVO; |
| | | import org.springblade.modules.system.wrapper.UserWrapper; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.io.FileNotFoundException; |
| | | import java.io.FileOutputStream; |
| | | import java.io.IOException; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.net.URLEncoder; |
| | | import java.text.DecimalFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | |
| | | private final IDeptService deptService; |
| | | private final JurisdictionService jurisdictionService; |
| | | private final IExperienceService experienceService; |
| | | private final MyAsyncService myAsyncService; |
| | | private final SecurityPaperService securityPaperService; |
| | | private final RedisTemplate redisTemplate; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount())); |
| | | } |
| | | boolean b = save(user) && submitUserDept(user); |
| | | String rtime = null; |
| | | if (null != user.getRtime()) { |
| | | rtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getRtime()); |
| | | } |
| | | user.setIsDeleted(0); |
| | | String s = "insert into blade_user(id,tenant_id,account,password,real_name,email,phone,sex,role_id,dept_id,cardid,nativePlace,nation," + |
| | | "politicaloutlook,healstats,height,address,registered,securitynumber,hold,status,dispatch,jurisdiction,is_deleted) " + |
| | |
| | | "," + "'" + user.getJurisdiction() + "'"+ |
| | | "," + "'" + user.getIsDeleted() + "'" |
| | | + ")"; |
| | | FtpUtil.sqlFileUpload(s); |
| | | //FtpUtil.sqlFileUpload(s); |
| | | myAsyncService.FTP(s); |
| | | return b; |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public IPage<UserVO> selectUserPages(IPage<UserVO> page, UserVO user) { |
| | | List<UserVO> userVOS = baseMapper.selectUserPages(page, user); |
| | | //机构名称拼接 |
| | | userVOS.forEach(userVO -> { |
| | | if (null != userVO.getCardid() && userVO.getCardid() != "") { |
| | | userVO.setAge(AgeUtil.idCardToAge(userVO.getCardid())); |
| | | } else { |
| | | userVO.setAge(null); |
| | | } |
| | | if (null!=userVO.getDeptId()) { |
| | | List<String> list = baseMapper.getDeptName(userVO.getDeptId()); |
| | | if (list.size() > 1) { |
| | | if (null != list.get(1) && list.get(1) != "") { |
| | | String s = list.get(1).toString(); |
| | | if (s.equals("本市保安公司") || s.equals("保安培训学校") || s.equals("自招保安单位") || s.equals("武装押运公司") || s.equals("分公司") || s.equals("其他")){ |
| | | if (null!=user.getAgeType() && user.getAgeType()!=4){ |
| | | List<UserVO> userVOS = baseMapper.selectUserPagesByAge(page, user); |
| | | //机构名称拼接 |
| | | userVOS.forEach(userVO -> { |
| | | // if (null != userVO.getCardid() && userVO.getCardid() != "") { |
| | | // userVO.setAge(AgeUtil.idCardToAge(userVO.getCardid())); |
| | | // } else { |
| | | // userVO.setAge(null); |
| | | // } |
| | | if (null!=userVO.getDeptId()) { |
| | | List<String> list = baseMapper.getDeptName(userVO.getDeptId()); |
| | | if (list.size() > 1) { |
| | | if (null != list.get(1) && list.get(1) != "") { |
| | | String s = list.get(1).toString(); |
| | | if (s.equals("本市保安公司") || s.equals("保安培训学校") || s.equals("自招保安单位") || s.equals("武装押运公司") || s.equals("分公司") || s.equals("其他")){ |
| | | userVO.setDeptName(list.get(0)); |
| | | } |
| | | else { |
| | | userVO.setDeptName(list.get(1) + "," + list.get(0)); |
| | | } |
| | | } else { |
| | | userVO.setDeptName(list.get(0)); |
| | | } |
| | | else { |
| | | userVO.setDeptName(list.get(1) + "," + list.get(0)); |
| | | } |
| | | } else { |
| | | } |
| | | if (list.size() == 1) { |
| | | userVO.setDeptName(list.get(0)); |
| | | } |
| | | } |
| | | if (list.size() == 1) { |
| | | userVO.setDeptName(list.get(0)); |
| | | }); |
| | | return page.setRecords(userVOS); |
| | | }else { |
| | | List<UserVO> userVOS = baseMapper.selectUserPages(page, user); |
| | | //机构名称拼接 |
| | | userVOS.forEach(userVO -> { |
| | | // if (null != userVO.getCardid() && userVO.getCardid() != "") { |
| | | // userVO.setAge(AgeUtil.idCardToAge(userVO.getCardid())); |
| | | // } else { |
| | | // userVO.setAge(null); |
| | | // } |
| | | if (null!=userVO.getDeptId()) { |
| | | List<String> list = baseMapper.getDeptName(userVO.getDeptId()); |
| | | if (list.size() > 1) { |
| | | if (null != list.get(1) && list.get(1) != "") { |
| | | String s = list.get(1).toString(); |
| | | if (s.equals("本市保安公司") || s.equals("保安培训学校") || s.equals("自招保安单位") || s.equals("武装押运公司") || s.equals("分公司") || s.equals("其他")){ |
| | | userVO.setDeptName(list.get(0)); |
| | | } |
| | | else { |
| | | userVO.setDeptName(list.get(1) + "," + list.get(0)); |
| | | } |
| | | } else { |
| | | userVO.setDeptName(list.get(0)); |
| | | } |
| | | } |
| | | if (list.size() == 1) { |
| | | userVO.setDeptName(list.get(0)); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | return page.setRecords(userVOS); |
| | | }); |
| | | return page.setRecords(userVOS); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @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) { |
| | |
| | | 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 |
| | |
| | | "," + "'" + user.getIsDeleted() + "'" + |
| | | "," + "'" + user.getJurisdiction() + "'" |
| | | + ")"; |
| | | FtpUtil.sqlFileUpload(s); |
| | | //FtpUtil.sqlFileUpload(s); |
| | | myAsyncService.FTP(s); |
| | | }else { |
| | | //匹配组织机构是否一致,如果不一致 |
| | | if(!user2.getDeptId().equals(user.getDeptId())){ |
| | |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'" |
| | | + ",cardid = " + "'" + user2.getCardid() + "'" |
| | | + " " + "where id = " + "'" + user2.getId() + "'"; |
| | | FtpUtil.sqlFileUpload(s1); |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.FTP(s1); |
| | | } |
| | | } |
| | | }); |
| | |
| | | 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) { |
| | | //年龄不符的保安员信息存入集合 |
| | | List<String> ageErrorList = new ArrayList<>(); |
| | | //需要推送内网的保安员信息集合 |
| | | List<User> userList = new ArrayList<>(); |
| | | AtomicBoolean agetStatus = new AtomicBoolean(true); |
| | | //遍历 |
| | | for (SecurityExcel userExcel : data) { |
| | | User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class)); |
| | | //设置部门id |
| | | String deptIds = userDeptService.selectIn(user.getDeptId()); |
| | | if (null!=deptIds && !deptIds.equals("")) { |
| | | if (null != deptId && !deptId.equals("")) { |
| | | //管理员不分单位导入 |
| | | if (!deptId.equals(deptIds)) { |
| | | if(!deptId.equals("1123598813738675201")) { |
| | | throw new ServiceException("导入失败!不能导入不是本公司的保安员数据!"); |
| | | } |
| | | } |
| | | } |
| | | user.setDeptId(deptIds); |
| | | }else { |
| | | //如果deptIds 为空,则说明还没有改公司 |
| | | throw new ServiceException("导入失败!公司名:["+user.getDeptId()+"]不存在!"); |
| | | } |
| | | |
| | | //身份证校验 |
| | | if (null==user.getCardid() || user.getCardid().equals("")){ |
| | | throw new ServiceException("导入失败!身份证号码不能为空!"); |
| | | } |
| | | //身份证住址校验 |
| | | if (null==user.getRegistered() || user.getRegistered().equals("")){ |
| | | throw new ServiceException("导入失败!身份证住址不能为空!"); |
| | | } |
| | | if (null!=user.getCardid() && !user.getCardid().equals("")){ |
| | | //去除所有空格 |
| | | String cardid = user.getCardid().replaceAll(" ", ""); |
| | | //校验 |
| | | boolean b = IdCardNoUtil.checkIdCardNo(cardid); |
| | | if(b){ |
| | | user.setCardid(cardid); |
| | | }else { |
| | | agetStatus.set(false); |
| | | ageErrorList.add(user.getCardid()); |
| | | // throw new ServiceException("导入失败!身份证号码[ "+user.getCardid()+" ]不正确,请核对!"); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | // 设置租户ID |
| | | user.setTenantId("000000"); |
| | | //默认在职 |
| | | user.setStatus(1); |
| | | user.setIsDeleted(0); |
| | | //分配保安角色 |
| | | user.setRoleId("1412226235153731586"); |
| | | |
| | | if (null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){ |
| | | user.setHold("1"); |
| | | }else { |
| | | user.setHold("2"); |
| | | } |
| | | |
| | | //性别 |
| | | if (IdCardNoUtil.getSex(userExcel.getCardid()).equals("男")) { |
| | | user.setSex(1); |
| | | }else { |
| | | user.setSex(2); |
| | | } |
| | | |
| | | //设置账号 |
| | | String realName = user.getRealName(); |
| | | String cardid = user.getCardid(); |
| | | user.setAccount(realName.substring(0,1)+cardid.substring(cardid.length()-4)); |
| | | //加密 |
| | | user.setPassword(DigestUtil.encrypt(user.getCardid().substring(user.getCardid().length() - 6))); |
| | | user.setCreateTime(new Date()); |
| | | user.setUpdateTime(new Date()); |
| | | user.setDispatch("1"); |
| | | //待审查 |
| | | user.setExaminationType("2"); |
| | | |
| | | //推送内网的数据 |
| | | User user0 = Objects.requireNonNull(BeanUtil.copy(user,User.class)); |
| | | |
| | | //生成随机数 |
| | | String uuid = UUID.randomUUID().toString(); |
| | | //将 user 存入 redis |
| | | redisTemplate.opsForValue().set(uuid, JSON.toJSONString(user)); |
| | | //user0 临时设置uuid 到 reason_for_leav 离职原因字段 |
| | | user0.setReasonForLeav(uuid); |
| | | //加入集合 |
| | | userList.add(user0); |
| | | } |
| | | |
| | | //用户批量插入 |
| | | if (userList.size()>0) { |
| | | //生成随机数 |
| | | String uuid = UUID.randomUUID().toString(); |
| | | //数据推送 |
| | | Map<String, Object> map = new HashMap<>(1); |
| | | map.put(uuid, userList); |
| | | myAsyncService.FTPObjectList(map); |
| | | } |
| | | |
| | | // if (null!=result){ |
| | | // //获取 result |
| | | // List<Result> data1 = result.getData(); |
| | | // if (data1.size()>0){ |
| | | // for (Result result1 : data1) { |
| | | // // 取出 Msg ,此 msg 存的对应的 uuid |
| | | // String uuid = result1.getMsg(); |
| | | // //从redis 中获取用户数据 |
| | | // Object o1 = redisTemplate.opsForValue().get(uuid); |
| | | // User user0 = JSON.parseObject(o1.toString(), User.class); |
| | | // // 从redis 中获取对应的用户信息,脱敏处理过 |
| | | // User user = handlerUserInfo(uuid); |
| | | // if (result1.getCode()==200){ |
| | | // user.setId(result1.getUserId()); |
| | | // boolean save = this.save(user); |
| | | // //同步用户数据到群防群控 |
| | | // if (save) { |
| | | // myAsyncService.qfqkUserSave(user); |
| | | // } |
| | | // //加入新增集合 |
| | | //// addList.add(user); |
| | | // } |
| | | // if (result1.getCode()==201){ |
| | | // //先查询当前库是否有改用户? |
| | | // User user1 = this.getById(result1.getUserId()); |
| | | // if (null!=user1) { |
| | | // //存在,更新 |
| | | // user.setId(result1.getUserId()); |
| | | // user.setCreateTime(null); |
| | | // boolean update = this.updateById(user); |
| | | // if (update) { |
| | | // //数据异步同步到群防群控 |
| | | // myAsyncService.updateUserByQfqk(user); |
| | | // } |
| | | // }else { |
| | | // //不存在,则新增 |
| | | // user.setId(result1.getUserId()); |
| | | // boolean save = this.save(user); |
| | | // if (save){ |
| | | // //数据异步同步到群防群控 |
| | | // myAsyncService.qfqkUserSave(user); |
| | | // } |
| | | // } |
| | | // //加入更新集合 |
| | | //// updateList.add(user); |
| | | // } |
| | | // if (result1.getCode()==202){ |
| | | // status.set(false); |
| | | // //已在其他单位存在 |
| | | // errorList.add(user0.getCardid()); |
| | | // } |
| | | // if (result1.getCode()==203){ |
| | | // securityInvalidStatus.set(false); |
| | | // //保安证编号不匹配 |
| | | // securityInvalidList.add(user0.getCardid()); |
| | | // } |
| | | // } |
| | | //// //批量插入 |
| | | //// if (addList.size()>0){ |
| | | //// baseMapper.batchUserList(addList); |
| | | //// } |
| | | //// //批量更新 |
| | | //// if (updateList.size()>0){ |
| | | //// baseMapper.batchUpdateUserList(updateList); |
| | | //// } |
| | | // } |
| | | // } |
| | | |
| | | // //如果所有数据导入有一个异常 |
| | | StringBuilder errorBuilder = new StringBuilder(); |
| | | // if (!status.get()){ |
| | | // String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | // errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"); |
| | | // } |
| | | if (!agetStatus.get()){ |
| | | String errorAccount = StringUtils.join(ageErrorList, "\\\n"); |
| | | errorBuilder.append("用户:[" + errorAccount + "]导入失败!身份证号码不正确,请核对!"); |
| | | } |
| | | // if (!securityInvalidStatus.get()){ |
| | | // String errorAccount = StringUtils.join(securityInvalidList, "\\\n"); |
| | | //// errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!"); |
| | | // errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | // } |
| | | //抛出异常 |
| | | if (errorBuilder.length()>0){ |
| | | throw new ServiceException(errorBuilder.toString()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 用户数据获取和处理 |
| | | * @param uuid 随机参数 |
| | | * @return |
| | | */ |
| | | private User handlerUserInfo(String uuid){ |
| | | //从redis 中获取用户数据 |
| | | Object o1 = redisTemplate.opsForValue().get(uuid); |
| | | User user = JSON.parseObject(o1.toString(), User.class); |
| | | //取出后将 redis 删除 |
| | | redisTemplate.delete(uuid); |
| | | //返回的user,需处理敏感数据 |
| | | User user1 = Objects.requireNonNull(BeanUtil.copy(user,User.class)); |
| | | //敏感数据处理 |
| | | user1.setRealName(DesensitizedUtil.desensitizedName(user.getRealName())); |
| | | user1.setCardid(DesensitizedUtil.desensitizedIdNumberBy4(user.getCardid())); |
| | | user1.setPhone(DesensitizedUtil.desensitizedPhoneNumber(user.getPhone())); |
| | | user1.setRegistered(DesensitizedUtil.desensitizedAddress(user.getRegistered())); |
| | | if (user.getHold().equals("1")) { |
| | | user1.setSecuritynumber(DesensitizedUtil.desensitizedSecurityNumber(user.getSecuritynumber())); |
| | | }else { |
| | | user1.setSecuritynumber(""); |
| | | } |
| | | user1.setAvatar(""); |
| | | user1.setEmail(""); |
| | | user1.setFingerprint(""); |
| | | user1.setNation(""); |
| | | user1.setNativeplace(""); |
| | | user1.setEducation(""); |
| | | user1.setPoliticaloutlook(""); |
| | | user1.setMyPicture(""); |
| | | user1.setHeight(""); |
| | | user1.setRtime(null); |
| | | user1.setGuncode(""); |
| | | //返回 |
| | | return user1; |
| | | } |
| | | |
| | | /** |
| | | * 保安员导入(押运人员导入) |
| | | * @param data |
| | | * @param isCovered |
| | | * @param deptId |
| | | */ |
| | | @Override |
| | | public void importSecurityYy(List<SecurityYyExcel> data, Boolean isCovered, String deptId) { |
| | | //uuidList |
| | | List<String> uuidList = new ArrayList<>(); |
| | | //将不能导入的保安员账号存起来 |
| | | List<String> errorList = new ArrayList<>(); |
| | | //年龄不符的保安员信息存入集合 |
| | | List<String> ageErrorList = new ArrayList<>(); |
| | | //将需要更新的保安员信息存入集合 |
| | | List<User> updateList = new ArrayList<>(); |
| | | //保安员证编号不符的保安员信息存入集合 |
| | | List<String> securityInvalidList = new ArrayList<>(); |
| | | //需要推送内网的保安员信息集合 |
| | | List<User> userList = new ArrayList<>(); |
| | | //导入状态,默认为true ,如果有一个出现问题则为 false |
| | | AtomicBoolean status = new AtomicBoolean(true); |
| | | AtomicBoolean agetStatus = new AtomicBoolean(true); |
| | | data.forEach(userExcel -> { |
| | | AtomicBoolean securityInvalidStatus = new AtomicBoolean(true); |
| | | //遍历 |
| | | for (SecurityYyExcel userExcel : data) { |
| | | User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class)); |
| | | //设置部门id |
| | | String deptIds = userDeptService.selectIn(user.getDeptId()); |
| | |
| | | }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.getHold() && userExcel.getHold() != "") { |
| | | if (userExcel.getHold().equals("是")) { |
| | | user.setHold("1"); |
| | | } |
| | | if (userExcel.getHold().equals("否")) { |
| | | user.setHold("2"); |
| | | } |
| | | |
| | | // 设置租户ID |
| | | user.setTenantId("000000"); |
| | | //默认在职 |
| | | user.setStatus(1); |
| | | user.setIsDeleted(0); |
| | | //分配保安角色 |
| | | Role role = new Role(); |
| | | role.setRoleAlias("保安"); |
| | | Role oneRole = roleService.getOne(Condition.getQueryWrapper(role)); |
| | | user.setRoleId(oneRole.getId().toString()); |
| | | |
| | | if (null!=user.getSecuritynumber() && !user.getSecuritynumber().equals("")){ |
| | | user.setHold("1"); |
| | | }else { |
| | | 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); |
| | | } |
| | | //判断年龄,超过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()); |
| | | }else { |
| | | user.setSex(1); |
| | | } |
| | | |
| | | //性别 |
| | | if (null != userExcel.getSex()) { |
| | | if (userExcel.getSex().equals("男")) { |
| | | user.setSex(1); |
| | | } |
| | | if (userExcel.getSex().equals("女")) { |
| | | user.setSex(2); |
| | | } |
| | | } |
| | | //设置账号 |
| | | 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.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); |
| | | //推送内网的数据 |
| | | 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) { |
| | | //生成随机数 |
| | | String uuid = UUID.randomUUID().toString(); |
| | | //数据推送 |
| | | Map<String, Object> map = new HashMap<>(1); |
| | | map.put(uuid, userList); |
| | | myAsyncService.FTPObjectList(map); |
| | | |
| | | // int count = 0; |
| | | // //调用ftp获取返回数据 |
| | | // while (true){ |
| | | // try { |
| | | // Thread.sleep(4000); |
| | | // } catch (InterruptedException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // //调用ftp获取返回数据 |
| | | // result = Monitor.getFtpDataByUuidList(uuid); |
| | | // //如果返回true,就退处 |
| | | // if (result.getCode() == 200) { |
| | | // break; |
| | | // } |
| | | // else { |
| | | // count++; |
| | | // if (count == 20) { |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | // if (null!=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()); |
| | | // } |
| | | } |
| | | |
| | | |
| | | //从业记录新增 |
| | | 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) " + |
| | | "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()) + "'" + ");"+ |
| | | "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); |
| | | ///** |
| | | // * 保安员导入(押运人员导入) |
| | | // * @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()); |
| | | // } |
| | | }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.getHold() && userExcel.getHold() != "") { |
| | | if (userExcel.getHold().equals("是") && userExcel.getSecuritynumber()!=null && !userExcel.getSecuritynumber().equals("")) { |
| | | user2.setHold("1"); |
| | | //更新保安证编号 |
| | | user2.setSecuritynumber(user.getSecuritynumber()); |
| | | } |
| | | if (userExcel.getHold().equals("否")) { |
| | | user2.setHold("2"); |
| | | } |
| | | } |
| | | if (null!=userExcel.getRegistered()){ |
| | | user2.setRegistered(userExcel.getRegistered()); |
| | | }else { |
| | | user2.setRegistered(""); |
| | | } |
| | | //更新用户数据 |
| | | user2.setUpdateTime(new Date()); |
| | | this.updateById(user2); |
| | | String s1 = |
| | | "update blade_user set hold = " + "'" + user2.getHold() + "'" |
| | | + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'" |
| | | + ",dept_id = " + "'" + user2.getDeptId() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'" |
| | | + ",registered = " + "'" + user2.getRegistered() + "'" |
| | | + " " + "where id = " + "'" + user2.getId() + "'"; |
| | | FtpUtil.sqlFileUpload(s1); |
| | | }else { |
| | | status.set(false); |
| | | //加入集合 |
| | | errorList.add(user.getCardid()); |
| | | //forEach 只能使用 return 跳出本次循环 |
| | | return; |
| | | } |
| | | }else { |
| | | //如果是一致,则更新用户数据 |
| | | //判断是否持证 |
| | | if (null != userExcel.getHold() && userExcel.getHold() != "") { |
| | | if (userExcel.getHold().equals("是") && userExcel.getSecuritynumber()!=null && !userExcel.getSecuritynumber().equals("")) { |
| | | user2.setHold("1"); |
| | | //更新保安证编号 |
| | | user2.setSecuritynumber(user.getSecuritynumber()); |
| | | } |
| | | if (userExcel.getHold().equals("否")) { |
| | | user2.setHold("2"); |
| | | } |
| | | } |
| | | if (null!=userExcel.getRegistered()){ |
| | | user2.setRegistered(userExcel.getRegistered()); |
| | | }else { |
| | | user2.setRegistered(""); |
| | | } |
| | | user2.setUpdateTime(new Date()); |
| | | //更新用户数据 |
| | | this.updateById(user2); |
| | | String s1 = |
| | | "update blade_user set hold = " + "'" + user2.getHold() + "'" |
| | | + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'" |
| | | + ",registered = " + "'" + user2.getRegistered() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'" |
| | | + " " + "where id = " + "'" + user2.getId() + "'"; |
| | | FtpUtil.sqlFileUpload(s1); |
| | | } |
| | | } |
| | | }); |
| | | //如果所有数据导入有一个异常 |
| | | if (!status.get() || !agetStatus.get()){ |
| | | if (!status.get() && agetStatus.get()) { |
| | | String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | throw new ServiceException("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"); |
| | | } |
| | | if (!agetStatus.get() && status.get()) { |
| | | String errorAccount = StringUtils.join(ageErrorList, "\\\n"); |
| | | throw new ServiceException("用户:[" + errorAccount + "]导入失败!身份证号码不正确,请核对!"); |
| | | } |
| | | if (!status.get() && !agetStatus.get()) { |
| | | String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | String errorAgeAccount = StringUtils.join(ageErrorList, "\\\n"); |
| | | throw new ServiceException("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"+ |
| | | "用户:[" + errorAgeAccount + "]导入失败!身份证号码不正确,请核对!"); |
| | | } |
| | | } |
| | | // if (!status.get()) { |
| | | // String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | // throw new ServiceException("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"); |
| | | // } |
| | | } |
| | | |
| | | @Override |
| | | public void importSecurityYy(List<SecurityYyExcel> data, Boolean isCovered, String deptId) { |
| | | //将不能导入的保安员账号存起来 |
| | | List<String> errorList = new ArrayList<>(); |
| | | //将需要新增的保安员信息存入集合 |
| | | List<String> ageErrorList = new ArrayList<>(); |
| | | //将需要更新的保安员信息存入集合 |
| | | List<User> updateList = new ArrayList<>(); |
| | | //导入状态,默认为true ,如果有一个出现问题则为 false |
| | | AtomicBoolean status = new AtomicBoolean(true); |
| | | AtomicBoolean agetStatus = new AtomicBoolean(true); |
| | | data.forEach(userExcel -> { |
| | | User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class)); |
| | | //设置部门id |
| | | String deptIds = userDeptService.selectIn(user.getDeptId()); |
| | | if (null!=deptIds && !deptIds.equals("")) { |
| | | if (null != deptId && !deptId.equals("")) { |
| | | if (!deptId.equals(deptIds)) { |
| | | throw new ServiceException("导入失败!不能导入不是本公司的保安员数据!"); |
| | | } |
| | | } |
| | | user.setDeptId(deptIds); |
| | | }else { |
| | | //如果deptIds 为空,则说明还没有改公司 |
| | | throw new ServiceException("导入失败!公司名:["+user.getDeptId()+"]不存在!"); |
| | | } |
| | | |
| | | //身份证号码校验 |
| | | if (null==user.getCardid() || user.getCardid().equals("")){ |
| | | throw new ServiceException("导入失败!身份证号码不能为空!"); |
| | | } |
| | | //身份证住址校验 |
| | | if (null==user.getRegistered() || user.getRegistered().equals("")){ |
| | | throw new ServiceException("导入失败!身份证住址不能为空!"); |
| | | } |
| | | if (null!=user.getCardid() && !user.getCardid().equals("")){ |
| | | //去除所有空格 |
| | | String cardid = user.getCardid().replaceAll(" ", ""); |
| | | //校验 |
| | | boolean b = IdCardNoUtil.checkIdCardNo(cardid); |
| | | if(b){ |
| | | user.setCardid(cardid); |
| | | }else { |
| | | agetStatus.set(false); |
| | | ageErrorList.add(user.getCardid()); |
| | | // throw new ServiceException("导入失败!身份证号码[ "+user.getCardid()+" ]不正确,请核对!"); |
| | | //forEach 只能使用 return 跳出本次循环 |
| | | return; |
| | | } |
| | | } |
| | | //判断当前用户是否已在本单位,如果是的更新数据 |
| | | User user1 = new User(); |
| | | user1.setAccount(user.getCardid()); |
| | | user1.setIsDeleted(0); |
| | | user1.setStatus(1); |
| | | user1.setGuncode(user.getGuncode()); |
| | | User user2 = this.getOne(Condition.getQueryWrapper(user1)); |
| | | if (null==user2){ |
| | | //用户不存在,去新增 |
| | | // 设置租户ID |
| | | user.setTenantId("000000"); |
| | | //默认在职 |
| | | user.setStatus(1); |
| | | user.setIsDeleted(0); |
| | | //判断是否持证 |
| | | if (null != userExcel.getHold() && userExcel.getHold() != "") { |
| | | if (userExcel.getHold().equals("是")) { |
| | | user.setHold("1"); |
| | | } |
| | | if (userExcel.getHold().equals("否")) { |
| | | user.setHold("2"); |
| | | } |
| | | } |
| | | //分配保安角色 |
| | | Role role = new Role(); |
| | | role.setRoleAlias("保安"); |
| | | Role oneRole = roleService.getOne(Condition.getQueryWrapper(role)); |
| | | user.setRoleId(oneRole.getId().toString()); |
| | | |
| | | //性别 |
| | | if (null != userExcel.getSex()) { |
| | | if (userExcel.getSex().equals("男")) { |
| | | user.setSex(1); |
| | | } |
| | | if (userExcel.getSex().equals("女")) { |
| | | user.setSex(2); |
| | | } |
| | | } |
| | | |
| | | //设置账号 |
| | | user.setAccount(user.getCardid()); |
| | | //获取默认密码配置 |
| | | user.setPassword(user.getCardid().substring(user.getCardid().length() - 6)); |
| | | //加密 |
| | | if (Func.isNotEmpty(user.getPassword())) { |
| | | user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | } |
| | | Integer userCount = baseMapper.selectCountAccount(user.getAccount()); |
| | | if (userCount > 0 && Func.isEmpty(user.getId())) { |
| | | throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount())); |
| | | } |
| | | user.setCreateTime(new Date()); |
| | | //新增 |
| | | this.save(user); |
| | | |
| | | //从业记录新增 |
| | | Experience experience = new Experience(); |
| | | experience.setCardid(user.getCardid()); |
| | | experience.setSecurityid(user.getId().toString()); |
| | | experience.setCompanyname(userExcel.getDeptId()); |
| | | experience.setName(user.getRealName()); |
| | | experience.setPost("保安员"); |
| | | experience.setEntrytime(new Date()); |
| | | experienceService.save(experience); |
| | | |
| | | //内网同步 |
| | | String s = "insert into blade_user(" + |
| | | "id,tenant_id,account,password,name,real_name,avatar,email,phone,sex," + |
| | | "role_id,dept_id,cardid,nativePlace,nation,fingerprint,education," + |
| | | "politicaloutlook,healstats,height,address,registered," + |
| | | "securitynumber,hold,jurisdiction,examination_type,status,is_deleted,dispatch,create_time,guncode) " + |
| | | "values(" + "'" + user.getId() + "'" + |
| | | "," + "'" + user.getTenantId() + "'" + |
| | | "," + "'" + user.getAccount() + "'" + |
| | | "," + "'" + user.getPassword() + "'" + |
| | | "," + "'" + user.getName() + "'" + |
| | | "," + "'" + user.getRealName() + "'" + |
| | | "," + "'" + user.getAvatar() + "'" + |
| | | "," + "'" + user.getEmail() + "'" + |
| | | "," + "'" + user.getPhone() + "'" + |
| | | "," + "'" + user.getSex() + "'" + |
| | | "," + "'" + user.getRoleId() + "'" + |
| | | "," + "'" + user.getDeptId() + "'" + |
| | | "," + "'" + user.getCardid() + "'" + |
| | | "," + "'" + user.getNativeplace() + "'" + |
| | | "," + "'" + user.getNation() + "'" + |
| | | "," + "'" + user.getFingerprint() + "'" + |
| | | "," + "'" + user.getEducation() + "'" + |
| | | "," + "'" + user.getPoliticaloutlook() + "'" + |
| | | "," + "'" + user.getHealstats() + "'"+ |
| | | "," + "'" + user.getHeight() + "'" + |
| | | "," + "'" + user.getAddress() + "'" + |
| | | "," + "'" + user.getRegistered() + "'" + |
| | | "," + "'" + user.getSecuritynumber() + "'" + |
| | | "," + "'" + user.getHold() + "'" + |
| | | "," + "'" + user.getJurisdiction() + "'" + |
| | | "," + "'" + user.getExaminationType() + "'" + |
| | | "," + "'" + user.getStatus() + "'" + |
| | | "," + "'" + user.getIsDeleted() + "'" + |
| | | "," + "'" + user.getDispatch() + "'" + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" + |
| | | "," + "'" + user.getGuncode() + "'" + ");"+ |
| | | "insert into sys_experience(id,name,post,entryTime," + |
| | | "cardId,companyname,securityId) " + |
| | | "values(" + "'" + experience.getId() + "'" + "," + |
| | | "'" + experience.getName() + "'" + "," + |
| | | "'" + experience.getPost() + "'" + "," + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" + |
| | | "," + "'" + experience.getCardid() + "'" + |
| | | "," + "'" + experience.getCompanyname() + "'" + |
| | | "," + "'" + experience.getSecurityid() + "'" |
| | | + ")"; |
| | | FtpUtil.sqlFileUpload(s); |
| | | } |
| | | else { |
| | | //匹配组织机构是否一致,如果不一致 |
| | | if(!user2.getDeptId().equals(user.getDeptId())){ |
| | | // Dept dept = deptService.getById(user2.getDeptId()); |
| | | // status.set(false); |
| | | // //加入集合 |
| | | // errorList.add(user.getCardid()); |
| | | //// throw new ServiceException("导入失败!身份证号码[ "+user.getCardid()+" ]不正确,请核对!"); |
| | | // //forEach 只能使用 return 跳出本次循环 |
| | | // return; |
| | | |
| | | Dept dept = deptService.getById(user2.getDeptId()); |
| | | Dept dept1 = deptService.getById(user.getDeptId()); |
| | | //如果是南昌总公司分公司导入的 |
| | | if (dept.getId().equals(1432626178757275649L) && dept1.getParentId().equals(1432626178757275649L)){ |
| | | user2.setDeptId(dept1.getId().toString()); |
| | | //判断是否持证 |
| | | if (null != userExcel.getHold() && userExcel.getHold() != "") { |
| | | if (userExcel.getHold().equals("是") && userExcel.getSecuritynumber()!=null && !userExcel.getSecuritynumber().equals("")) { |
| | | user2.setHold("1"); |
| | | //更新保安证编号 |
| | | user2.setSecuritynumber(user.getSecuritynumber()); |
| | | } |
| | | if (userExcel.getHold().equals("否")) { |
| | | user2.setHold("2"); |
| | | } |
| | | } |
| | | if (null!=userExcel.getRegistered()){ |
| | | user2.setRegistered(userExcel.getRegistered()); |
| | | }else { |
| | | user2.setRegistered(""); |
| | | } |
| | | user2.setUpdateTime(new Date()); |
| | | //更新用户数据 |
| | | this.updateById(user2); |
| | | String s1 = |
| | | "update blade_user set hold = " + "'" + user2.getHold() + "'" |
| | | + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'" |
| | | + ",dept_id = " + "'" + user2.getDeptId() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'" |
| | | + ",registered = " + "'" + user2.getRegistered() + "'" |
| | | + " " + "where id = " + "'" + user2.getId() + "'"; |
| | | FtpUtil.sqlFileUpload(s1); |
| | | }else { |
| | | status.set(false); |
| | | //加入集合 |
| | | errorList.add(user.getCardid()); |
| | | //forEach 只能使用 return 跳出本次循环 |
| | | return; |
| | | } |
| | | }else { |
| | | //如果是一致,则更新用户数据 |
| | | //判断是否持证 |
| | | if (null != userExcel.getHold() && userExcel.getHold() != "") { |
| | | if (userExcel.getHold().equals("是") && userExcel.getSecuritynumber()!=null && !userExcel.getSecuritynumber().equals("")) { |
| | | user2.setHold("1"); |
| | | //更新保安证编号 |
| | | user2.setSecuritynumber(user.getSecuritynumber()); |
| | | } |
| | | if (userExcel.getHold().equals("否")) { |
| | | user2.setHold("2"); |
| | | } |
| | | } |
| | | if (null!=userExcel.getRegistered()){ |
| | | user2.setRegistered(userExcel.getRegistered()); |
| | | }else { |
| | | user2.setRegistered(""); |
| | | } |
| | | user2.setUpdateTime(new Date()); |
| | | //更新用户数据 |
| | | this.updateById(user2); |
| | | String s1 = |
| | | "update blade_user set hold = " + "'" + user2.getHold() + "'" |
| | | + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'" |
| | | + ",registered = " + "'" + user2.getRegistered() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'" |
| | | + " " + "where id = " + "'" + user2.getId() + "'"; |
| | | FtpUtil.sqlFileUpload(s1); |
| | | } |
| | | } |
| | | }); |
| | | //如果所有数据导入有一个异常 |
| | | // if (!status.get()){ |
| | | // String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | // throw new ServiceException("用户:["+errorAccount+"]导入失败!已在其他单位存在!"); |
| | | // } |
| | | if (!status.get() || !agetStatus.get()){ |
| | | if (!status.get() && agetStatus.get()) { |
| | | String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | throw new ServiceException("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"); |
| | | } |
| | | if (!agetStatus.get() && status.get()) { |
| | | String errorAccount = StringUtils.join(ageErrorList, "\\\n"); |
| | | throw new ServiceException("用户:[" + errorAccount + "]导入失败!身份证号码不正确,请核对!"); |
| | | } |
| | | if (!status.get() && !agetStatus.get()) { |
| | | String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | String errorAgeAccount = StringUtils.join(ageErrorList, "\\\n"); |
| | | throw new ServiceException("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"+ |
| | | "用户:[" + errorAgeAccount + "]导入失败!身份证号码不正确,请核对!"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // /** |
| | | // * 导入保安员(测试,用来更新数据用) |
| | | // * |
| | | // * @param data |
| | | // * @param isCovered |
| | | // */ |
| | | // @Override |
| | | //// @Transactional(rollbackFor = Exception.class) |
| | | // public void importSecurity(List<SecurityExcel> data, Boolean isCovered, String deptId) { |
| | | // //将不能导入的保安员账号存起来 |
| | | // List<String> errorList = new ArrayList<>(); |
| | | // //导入状态,默认为true ,如果有一个出现问题则为 false |
| | | // AtomicBoolean status = new AtomicBoolean(true); |
| | | // AtomicInteger count = new AtomicInteger(); |
| | | // data.forEach(userExcel -> { |
| | | // } |
| | | // } |
| | | // //判断当前用户是否已在本单位,如果是的更新数据 |
| | | // User user1 = new User(); |
| | | // user1.setAccount(userExcel.getCardid()); |
| | | // user1.setAccount(user.getCardid()); |
| | | // user1.setIsDeleted(0); |
| | | // user1.setStatus(1); |
| | | // user1.setGuncode(user.getGuncode()); |
| | | // User user2 = this.getOne(Condition.getQueryWrapper(user1)); |
| | | // if (null!=user2){ |
| | | // if (null!=userExcel.getRegistered() && userExcel.getRegistered()!=""){ |
| | | // user2.setRegistered(userExcel.getRegistered()); |
| | | //// user2.setUserType(7); |
| | | // if (null==user2){ |
| | | // //用户不存在,去新增 |
| | | // // 设置租户ID |
| | | // user.setTenantId("000000"); |
| | | // //默认在职 |
| | | // user.setStatus(1); |
| | | // user.setIsDeleted(0); |
| | | // //判断是否持证 |
| | | // if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") { |
| | | // user.setHold("1"); |
| | | // //校验保安员证编号是否合规 |
| | | // SecurityPaper securityPaper = new SecurityPaper(); |
| | | // securityPaper.setIdCardNo(userExcel.getCardid()); |
| | | // List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper)); |
| | | // if (securityPaperList.size()>0){ |
| | | // boolean state = false; |
| | | // //遍历 |
| | | // for (SecurityPaper paper : securityPaperList) { |
| | | // if (paper.getNumber().equals(user.getSecuritynumber())){ |
| | | // state = true; |
| | | // } |
| | | // } |
| | | // if (!state){ |
| | | // user.setHold("2"); |
| | | // user.setSecuritynumber(null); |
| | | // securityInvalidList.add(userExcel.getCardid()); |
| | | // securityInvalidStatus.set(false); |
| | | // } |
| | | // }else { |
| | | // user.setHold("2"); |
| | | // user.setSecuritynumber(null); |
| | | // securityInvalidList.add(userExcel.getCardid()); |
| | | // securityInvalidStatus.set(false); |
| | | // } |
| | | // }else { |
| | | // user.setHold("2"); |
| | | // } |
| | | // this.updateById(user2); |
| | | // count.getAndIncrement(); |
| | | // //分配保安角色 |
| | | // Role role = new Role(); |
| | | // role.setRoleAlias("保安"); |
| | | // Role oneRole = roleService.getOne(Condition.getQueryWrapper(role)); |
| | | // user.setRoleId(oneRole.getId().toString()); |
| | | // |
| | | //// AccreditationRecords accreditationRecords = new AccreditationRecords(); |
| | | //// accreditationRecords.setType(2); |
| | | //// accreditationRecords.setAuditStatus(2); |
| | | //// accreditationRecords.setUserId(user2.getId()); |
| | | //// accreditationRecords.setStatus(1); |
| | | //// accreditationRecords.setCreateTime(new Date()); |
| | | //// accreditationRecordsService.save(accreditationRecords); |
| | | // }else { |
| | | // errorList.add(userExcel.getCardid()); |
| | | // //性别 |
| | | // if (null != userExcel.getSex()) { |
| | | // if (userExcel.getSex().equals("男")) { |
| | | // user.setSex(1); |
| | | // } |
| | | // if (userExcel.getSex().equals("女")) { |
| | | // user.setSex(2); |
| | | // } |
| | | // } |
| | | // |
| | | // //设置账号 |
| | | // user.setAccount(user.getCardid()); |
| | | // //获取默认密码配置 |
| | | // user.setPassword(user.getCardid().substring(user.getCardid().length() - 6)); |
| | | // //加密 |
| | | // if (Func.isNotEmpty(user.getPassword())) { |
| | | // user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | // } |
| | | // Integer userCount = baseMapper.selectCountAccount(user.getAccount()); |
| | | // if (userCount > 0 && Func.isEmpty(user.getId())) { |
| | | // throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount())); |
| | | // } |
| | | // user.setCreateTime(new Date()); |
| | | // //新增 |
| | | // this.save(user); |
| | | // //qfqk 推送 |
| | | // myAsyncService.qfqkUserSave(user); |
| | | // |
| | | // //从业记录新增 |
| | | // Experience experience = new Experience(); |
| | | // experience.setCardid(user.getCardid()); |
| | | // experience.setSecurityid(user.getId().toString()); |
| | | // experience.setCompanyname(userExcel.getDeptId()); |
| | | // experience.setName(user.getRealName()); |
| | | // experience.setPost("保安员"); |
| | | // experience.setEntrytime(new Date()); |
| | | // experienceService.save(experience); |
| | | // |
| | | // //内网同步 |
| | | // String s = "insert into blade_user(" + |
| | | // "id,tenant_id,account,password,name,real_name,avatar,email,phone,sex," + |
| | | // "role_id,dept_id,cardid,nativePlace,nation,fingerprint,education," + |
| | | // "politicaloutlook,healstats,height,address,registered," + |
| | | // "securitynumber,hold,jurisdiction,examination_type,status,is_deleted,dispatch,create_time,guncode) " + |
| | | // "values(" + "'" + user.getId() + "'" + |
| | | // "," + "'" + user.getTenantId() + "'" + |
| | | // "," + "'" + user.getAccount() + "'" + |
| | | // "," + "'" + user.getPassword() + "'" + |
| | | // "," + "'" + user.getName() + "'" + |
| | | // "," + "'" + user.getRealName() + "'" + |
| | | // "," + "'" + user.getAvatar() + "'" + |
| | | // "," + "'" + user.getEmail() + "'" + |
| | | // "," + "'" + user.getPhone() + "'" + |
| | | // "," + "'" + user.getSex() + "'" + |
| | | // "," + "'" + user.getRoleId() + "'" + |
| | | // "," + "'" + user.getDeptId() + "'" + |
| | | // "," + "'" + user.getCardid() + "'" + |
| | | // "," + "'" + user.getNativeplace() + "'" + |
| | | // "," + "'" + user.getNation() + "'" + |
| | | // "," + "'" + user.getFingerprint() + "'" + |
| | | // "," + "'" + user.getEducation() + "'" + |
| | | // "," + "'" + user.getPoliticaloutlook() + "'" + |
| | | // "," + "'" + user.getHealstats() + "'"+ |
| | | // "," + "'" + user.getHeight() + "'" + |
| | | // "," + "'" + user.getAddress() + "'" + |
| | | // "," + "'" + user.getRegistered() + "'" + |
| | | // "," + "'" + user.getSecuritynumber() + "'" + |
| | | // "," + "'" + user.getHold() + "'" + |
| | | // "," + "'" + user.getJurisdiction() + "'" + |
| | | // "," + "'" + user.getExaminationType() + "'" + |
| | | // "," + "'" + user.getStatus() + "'" + |
| | | // "," + "'" + user.getIsDeleted() + "'" + |
| | | // "," + "'" + user.getDispatch() + "'" + |
| | | // "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" + |
| | | // "," + "'" + user.getGuncode() + "'" + ");"+ |
| | | // "insert into sys_experience(id,name,post,entryTime," + |
| | | // "cardId,companyname,securityId) " + |
| | | // "values(" + "'" + experience.getId() + "'" + "," + |
| | | // "'" + experience.getName() + "'" + "," + |
| | | // "'" + experience.getPost() + "'" + "," + |
| | | // "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" + |
| | | // "," + "'" + experience.getCardid() + "'" + |
| | | // "," + "'" + experience.getCompanyname() + "'" + |
| | | // "," + "'" + experience.getSecurityid() + "'" |
| | | // + ")"; |
| | | // //FtpUtil.sqlFileUpload(s); |
| | | // myAsyncService.FTP(s); |
| | | // } |
| | | // else { |
| | | // //匹配组织机构是否一致,如果不一致 |
| | | // if(!user2.getDeptId().equals(user.getDeptId())){ |
| | | // Dept dept = deptService.getById(user2.getDeptId()); |
| | | // Dept dept1 = deptService.getById(user.getDeptId()); |
| | | // //如果是南昌总公司分公司导入的 |
| | | // if (dept.getId().equals(1432626178757275649L) && dept1.getParentId().equals(1432626178757275649L)){ |
| | | // user2.setDeptId(dept1.getId().toString()); |
| | | // //判断是否持证 |
| | | // if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") { |
| | | // user2.setHold("1"); |
| | | // user2.setSecuritynumber(user.getSecuritynumber()); |
| | | // //校验保安员证编号是否合规 |
| | | // SecurityPaper securityPaper = new SecurityPaper(); |
| | | // securityPaper.setIdCardNo(userExcel.getCardid()); |
| | | // List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper)); |
| | | // if (securityPaperList.size()>0){ |
| | | // boolean state = false; |
| | | // //遍历 |
| | | // for (SecurityPaper paper : securityPaperList) { |
| | | // if (paper.getNumber().equals(user.getSecuritynumber())){ |
| | | // state = true; |
| | | // } |
| | | // } |
| | | // if (!state){ |
| | | // user2.setHold("2"); |
| | | // user2.setSecuritynumber(null); |
| | | // securityInvalidList.add(userExcel.getCardid()); |
| | | // securityInvalidStatus.set(false); |
| | | // } |
| | | // }else { |
| | | // user2.setHold("2"); |
| | | // user2.setSecuritynumber(null); |
| | | // securityInvalidList.add(userExcel.getCardid()); |
| | | // securityInvalidStatus.set(false); |
| | | // } |
| | | // }else { |
| | | // user2.setHold("2"); |
| | | // } |
| | | // if (null!=userExcel.getRegistered()){ |
| | | // user2.setRegistered(userExcel.getRegistered()); |
| | | // }else { |
| | | // user2.setRegistered(""); |
| | | // } |
| | | // user2.setUpdateTime(new Date()); |
| | | // //更新用户数据 |
| | | // this.updateById(user2); |
| | | // //qfqk 推送 |
| | | // myAsyncService.updateUserByQfqk(user); |
| | | // |
| | | // String s1 = |
| | | // "update blade_user set hold = " + "'" + user2.getHold() + "'" |
| | | // + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'" |
| | | // + ",dept_id = " + "'" + user2.getDeptId() + "'" |
| | | // + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'" |
| | | // + ",registered = " + "'" + user2.getRegistered() + "'" |
| | | // + " " + "where id = " + "'" + user2.getId() + "'"; |
| | | // //FtpUtil.sqlFileUpload(s1); |
| | | // myAsyncService.FTP(s1); |
| | | // }else { |
| | | // status.set(false); |
| | | // //加入集合 |
| | | // errorList.add(user.getCardid()); |
| | | // //forEach 只能使用 return 跳出本次循环 |
| | | // return; |
| | | // } |
| | | // }else { |
| | | // //如果是一致,则更新用户数据 |
| | | // if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") { |
| | | // user2.setHold("1"); |
| | | // user2.setSecuritynumber(user.getSecuritynumber()); |
| | | // //校验保安员证编号是否合规 |
| | | // SecurityPaper securityPaper = new SecurityPaper(); |
| | | // securityPaper.setIdCardNo(userExcel.getCardid()); |
| | | // List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper)); |
| | | // if (securityPaperList.size()>0){ |
| | | // boolean state = false; |
| | | // //遍历 |
| | | // for (SecurityPaper paper : securityPaperList) { |
| | | // if (paper.getNumber().equals(user.getSecuritynumber())){ |
| | | // state = true; |
| | | // } |
| | | // } |
| | | // if (!state){ |
| | | // user2.setHold("2"); |
| | | // user2.setSecuritynumber(null); |
| | | // securityInvalidList.add(userExcel.getCardid()); |
| | | // securityInvalidStatus.set(false); |
| | | // } |
| | | // }else { |
| | | // user2.setHold("2"); |
| | | // user2.setSecuritynumber(null); |
| | | // securityInvalidList.add(userExcel.getCardid()); |
| | | // securityInvalidStatus.set(false); |
| | | // } |
| | | // }else { |
| | | // user2.setHold("2"); |
| | | // } |
| | | // if (null!=userExcel.getRegistered()){ |
| | | // user2.setRegistered(userExcel.getRegistered()); |
| | | // }else { |
| | | // user2.setRegistered(""); |
| | | // } |
| | | // user2.setUpdateTime(new Date()); |
| | | // //更新用户数据 |
| | | // this.updateById(user2); |
| | | // //qfqk 推送 |
| | | // myAsyncService.updateUserByQfqk(user); |
| | | // |
| | | // String s1 = |
| | | // "update blade_user set hold = " + "'" + user2.getHold() + "'" |
| | | // + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'" |
| | | // + ",registered = " + "'" + user2.getRegistered() + "'" |
| | | // + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'" |
| | | // + " " + "where id = " + "'" + user2.getId() + "'"; |
| | | // //FtpUtil.sqlFileUpload(s1); |
| | | // myAsyncService.FTP(s1); |
| | | // } |
| | | // } |
| | | // }); |
| | | // //如果所有数据导入有一个异常 |
| | | // StringBuilder errorBuilder = new StringBuilder(); |
| | | // if (!status.get()){ |
| | | // String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | // throw new ServiceException("用户:["+errorAccount+"]导入失败!已在其他单位存在!"); |
| | | // errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"); |
| | | // } |
| | | // if (status.get()){ |
| | | // String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | // throw new ServiceException("成功导入用户:"+count.get()); |
| | | // if (!agetStatus.get()){ |
| | | // String errorAccount = StringUtils.join(ageErrorList, "\\\n"); |
| | | // errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"); |
| | | // } |
| | | // if (!securityInvalidStatus.get()){ |
| | | // String errorAccount = StringUtils.join(securityInvalidList, "\\\n"); |
| | | // errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | // } |
| | | // //抛出异常 |
| | | // if (errorBuilder.length()>0){ |
| | | // throw new ServiceException(errorBuilder.toString()); |
| | | // } |
| | | // } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public UserVO getUserInfoBySecurityNumber(String securityNumber) { |
| | | return baseMapper.getUserInfoBySecurityNumber(securityNumber); |
| | | public UserVO getUserInfoBySecurityNumber(String securityNumber,String cardid) { |
| | | UserVO userVO = baseMapper.getUserInfoBySecurityNumber(securityNumber,cardid); |
| | | //查询派遣信息 |
| | | if (null!=userVO) { |
| | | DispatcherVO dispatcherVO = baseMapper.getUserDispatcherInfo(userVO.getId()); |
| | | if (null != dispatcherVO) { |
| | | userVO.setDispatchUnitName(dispatcherVO.getDispatcherCompany()); |
| | | userVO.setDispatchStartTime(new SimpleDateFormat("yyyy-MM-dd").format(dispatcherVO.getDispatchertime())); |
| | | userVO.setDispatchEndTime(new SimpleDateFormat("yyyy-MM-dd").format(dispatcherVO.getEndTime())); |
| | | } |
| | | } |
| | | return userVO; |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | @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()) { |
| | | String encoded = null; |
| | |
| | | } |
| | | } |
| | | }); |
| | | //头像生成 |
| | | data.forEach(qrCodeExcel -> { |
| | | if (null!=qrCodeExcel.getSecuritynumber()) { |
| | | //查询用户头像url |
| | | User user = new User(); |
| | | user.setRealName(qrCodeExcel.getRealName()); |
| | | user.setStatus(1); |
| | | user.setIsDeleted(0); |
| | | user.setSecuritynumber(qrCodeExcel.getSecuritynumber()); |
| | | User user1 = this.getOne(Condition.getQueryWrapper(user)); |
| | | //url 拼接 |
| | | byte[] qrCodeImage = new byte[0]; |
| | | //获取图片 |
| | | qrCodeImage = ImageUtils.getFileStream(user1.getAvatar()); |
| | | //路径 |
| | | String path = "D:\\QrCode\\"; |
| | | FileOutputStream fileOutputStream = null; |
| | | try { |
| | | fileOutputStream = new FileOutputStream(path+user1.getRealName()+user1.getCardid()+".png"); |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | try { |
| | | //图片下载到本地 |
| | | fileOutputStream.write(qrCodeImage,0,qrCodeImage.length); |
| | | fileOutputStream.flush(); |
| | | fileOutputStream.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<SecurityExcel> exportSecurityInfo(UserVO user) { |
| | | public List<ExportSecurityExcel> exportSecurityInfo(UserVO user) { |
| | | return baseMapper.exportSecurityInfo(user); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 导入保安员 |
| | | * 导入保安员(admin 专用) |
| | | * |
| | | * @param data |
| | | * @param isCovered |
| | | */ |
| | | @Override |
| | | // @Transactional(rollbackFor = Exception.class) |
| | | public void importSecurityTest(List<SecurityExcel> data, Boolean isCovered, String deptId) { |
| | | public void importSecurityTest(List<SecurityExcel> data) { |
| | | //将不能导入的保安员账号存起来 |
| | | List<String> errorList = new ArrayList<>(); |
| | | //年龄不符的保安员信息存入集合 |
| | | List<String> ageErrorList = new ArrayList<>(); |
| | | //保安员证编号不符的保安员信息存入集合 |
| | | List<String> securityInvalidList = new ArrayList<>(); |
| | | //将需要更新的保安员信息存入集合 |
| | | List<User> updateList = new ArrayList<>(); |
| | | //需要新增的保安员集合 |
| | | List<User> userList = new ArrayList<>(); |
| | | //需要新增的从业记录集合 |
| | | List<Experience> experienceList = new ArrayList<>(); |
| | | //导入状态,默认为true ,如果有一个出现问题则为 false |
| | | AtomicInteger count = new AtomicInteger(); |
| | | AtomicBoolean status = new AtomicBoolean(true); |
| | | data.forEach(userExcel -> { |
| | | AtomicBoolean agetStatus = new AtomicBoolean(true); |
| | | AtomicBoolean securityInvalidStatus = new AtomicBoolean(true); |
| | | //遍历 |
| | | for (SecurityExcel userExcel : data) { |
| | | User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class)); |
| | | //设置部门id |
| | | String deptIds = userDeptService.selectIn(user.getDeptId()); |
| | | user.setDeptId(deptIds); |
| | | |
| | | //身份证校验 |
| | | if (null==user.getCardid() || user.getCardid().equals("")){ |
| | | throw new ServiceException("导入失败!身份证号码不能为空!"); |
| | | } |
| | | //身份证住址校验 |
| | | if (null==user.getRegistered() || user.getRegistered().equals("")){ |
| | | throw new ServiceException("导入失败!身份证住址不能为空!"); |
| | | } |
| | | if (null!=user.getCardid() && !user.getCardid().equals("")){ |
| | | //去除所有空格 |
| | | String cardid = user.getCardid().replaceAll(" ", ""); |
| | | //校验 |
| | | boolean b = IdCardNoUtil.checkIdCardNo(cardid); |
| | | if(b){ |
| | | user.setCardid(cardid); |
| | | }else { |
| | | agetStatus.set(false); |
| | | ageErrorList.add(user.getCardid()); |
| | | //forEach 只能使用 return 跳出本次循环 |
| | | // return; |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | //判断当前用户是否已在本单位,如果是的更新数据 |
| | | User user1 = new User(); |
| | | user1.setAccount(user.getCardid()); |
| | |
| | | user1.setStatus(1); |
| | | User user2 = this.getOne(Condition.getQueryWrapper(user1)); |
| | | if (null==user2){ |
| | | }else { |
| | | if (null!=userExcel.getRegistered()){ |
| | | user2.setRegistered(userExcel.getRegistered()); |
| | | //用户不存在,去新增 |
| | | // 设置租户ID |
| | | user.setTenantId("000000"); |
| | | //默认在职 |
| | | user.setStatus(1); |
| | | user.setIsDeleted(0); |
| | | //判断是否持证 |
| | | if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") { |
| | | user.setHold("1"); |
| | | //校验保安员证编号是否合规 |
| | | SecurityPaper securityPaper = new SecurityPaper(); |
| | | securityPaper.setIdCardNo(userExcel.getCardid()); |
| | | List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper)); |
| | | if (securityPaperList.size()>0){ |
| | | boolean state = false; |
| | | //遍历 |
| | | for (SecurityPaper paper : securityPaperList) { |
| | | if (paper.getNumber().equals(user.getSecuritynumber())){ |
| | | state = true; |
| | | } |
| | | } |
| | | if (!state){ |
| | | user.setHold("2"); |
| | | user.setSecuritynumber(null); |
| | | securityInvalidList.add(userExcel.getCardid()); |
| | | securityInvalidStatus.set(false); |
| | | } |
| | | }else { |
| | | user.setHold("2"); |
| | | user.setSecuritynumber(null); |
| | | securityInvalidList.add(userExcel.getCardid()); |
| | | securityInvalidStatus.set(false); |
| | | } |
| | | }else { |
| | | user2.setRegistered(""); |
| | | //创建保安证编号 |
| | | user.setHold("1"); |
| | | //去生成保安证编号 |
| | | String pre = SecurityPaperUtil.getSecurityPaper(); |
| | | //查询当前年份已有的保安证编号 |
| | | int max = this.getSecurityPaperCount(pre); |
| | | String result = null; |
| | | if (max == 0) { |
| | | result = pre + "00001"; |
| | | } else { |
| | | //格式化 |
| | | DecimalFormat decimalFormat = new DecimalFormat("00000"); |
| | | max++; |
| | | result = pre + (decimalFormat.format(max)); |
| | | } |
| | | user.setSecuritynumber(result); |
| | | |
| | | //生成保安证的同时向保安证管理表中插入一条数据 |
| | | SecurityPaper securityPaper = new SecurityPaper(); |
| | | securityPaper.setNumber(result); |
| | | securityPaper.setCreateTime(new Date()); |
| | | securityPaper.setIdCardNo(user.getCardid()); |
| | | securityPaper.setPeopleName(user.getRealName()); |
| | | securityPaper.setSource(3); |
| | | //新增保安员证信息 |
| | | securityPaperService.save(securityPaper); |
| | | } |
| | | count.getAndIncrement(); |
| | | //更新用户数据 |
| | | this.updateById(user2); |
| | | //分配保安角色 |
| | | Role role = new Role(); |
| | | role.setRoleAlias("保安"); |
| | | Role oneRole = roleService.getOne(Condition.getQueryWrapper(role)); |
| | | user.setRoleId(oneRole.getId().toString()); |
| | | |
| | | //性别 |
| | | if (null != userExcel.getSex()) { |
| | | if (userExcel.getSex().contains("男")) { |
| | | user.setSex(1); |
| | | } |
| | | if (userExcel.getSex().contains("女")) { |
| | | user.setSex(2); |
| | | } |
| | | } |
| | | |
| | | //设置账号 |
| | | user.setAccount(user.getCardid()); |
| | | //获取默认密码配置 |
| | | user.setPassword(user.getCardid().substring(user.getCardid().length() - 6)); |
| | | //加密 |
| | | if (Func.isNotEmpty(user.getPassword())) { |
| | | user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | } |
| | | Integer userCount = baseMapper.selectCountAccount(user.getAccount()); |
| | | if (userCount > 0 && Func.isEmpty(user.getId())) { |
| | | throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount())); |
| | | } |
| | | user.setCreateTime(new Date()); |
| | | user.setDispatch("1"); |
| | | user.setExaminationType("0"); |
| | | //加入集合 |
| | | userList.add(user); |
| | | //从业记录新增 |
| | | Experience experience = new Experience(); |
| | | experience.setCardid(user.getCardid()); |
| | | experience.setCompanyname(userExcel.getDeptId()); |
| | | experience.setName(user.getRealName()); |
| | | experience.setPost("保安员"); |
| | | experience.setEntrytime(new Date()); |
| | | //加入集合 |
| | | experienceList.add(experience); |
| | | |
| | | }else { |
| | | //匹配组织机构是否一致,如果不一致 |
| | | if(!user2.getDeptId().equals(user.getDeptId())){ |
| | | status.set(false); |
| | | //加入集合 |
| | | errorList.add(user.getCardid()); |
| | | //forEach 只能使用 return 跳出本次循环 |
| | | continue; |
| | | }else { |
| | | //如果是一致,则更新用户数据 |
| | | //判断是否持证 |
| | | if (null != userExcel.getSecuritynumber() && userExcel.getSecuritynumber() != "") { |
| | | user2.setHold("1"); |
| | | user2.setSecuritynumber(user.getSecuritynumber()); |
| | | //校验保安员证编号是否合规 |
| | | SecurityPaper securityPaper = new SecurityPaper(); |
| | | securityPaper.setIdCardNo(userExcel.getCardid()); |
| | | List<SecurityPaper> securityPaperList = securityPaperService.list(Condition.getQueryWrapper(securityPaper)); |
| | | if (securityPaperList.size()>0){ |
| | | boolean state = false; |
| | | //遍历 |
| | | for (SecurityPaper paper : securityPaperList) { |
| | | if (paper.getNumber().equals(user.getSecuritynumber())){ |
| | | state = true; |
| | | } |
| | | } |
| | | if (!state){ |
| | | user2.setHold("2"); |
| | | user2.setSecuritynumber(null); |
| | | securityInvalidList.add(userExcel.getCardid()); |
| | | securityInvalidStatus.set(false); |
| | | } |
| | | }else { |
| | | user2.setHold("2"); |
| | | user2.setSecuritynumber(null); |
| | | securityInvalidList.add(userExcel.getCardid()); |
| | | securityInvalidStatus.set(false); |
| | | } |
| | | }else { |
| | | //创建保安证编号 |
| | | user2.setHold("1"); |
| | | //去生成保安证编号 |
| | | String pre = SecurityPaperUtil.getSecurityPaper(); |
| | | //查询当前年份已有的保安证编号 |
| | | int max = this.getSecurityPaperCount(pre); |
| | | String result = null; |
| | | if (max == 0) { |
| | | result = pre + "00001"; |
| | | } else { |
| | | //格式化 |
| | | DecimalFormat decimalFormat = new DecimalFormat("00000"); |
| | | max++; |
| | | result = pre + (decimalFormat.format(max)); |
| | | } |
| | | user2.setSecuritynumber(result); |
| | | |
| | | //生成保安证的同时向保安证管理表中插入一条数据 |
| | | SecurityPaper securityPaper = new SecurityPaper(); |
| | | securityPaper.setNumber(result); |
| | | securityPaper.setCreateTime(new Date()); |
| | | securityPaper.setIdCardNo(user2.getCardid()); |
| | | securityPaper.setPeopleName(user2.getRealName()); |
| | | securityPaper.setSource(3); |
| | | //新增保安员证信息 |
| | | securityPaperService.save(securityPaper); |
| | | } |
| | | if (null!=userExcel.getRegistered()){ |
| | | user2.setRegistered(userExcel.getRegistered()); |
| | | }else { |
| | | user2.setRegistered(""); |
| | | } |
| | | user2.setUpdateTime(new Date()); |
| | | //更新用户数据 |
| | | this.updateById(user2); |
| | | //qfqk异步推送 |
| | | myAsyncService.updateUserByQfqk(user2); |
| | | //内网数据sql |
| | | String s1 = |
| | | "update blade_user set hold = " + "'" + user2.getHold() + "'" |
| | | + ",securitynumber = " + "'" + user2.getSecuritynumber() + "'" |
| | | + ",registered = " + "'" + user2.getRegistered() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'" |
| | | + " " + "where id = " + "'" + user2.getId() + "'"; |
| | | myAsyncService.FTP(s1); |
| | | } |
| | | } |
| | | }); |
| | | //如果所有数据导入有一个异常 |
| | | if (!status.get()) { |
| | | String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | throw new ServiceException("用户:[" + errorAccount + "]导入失败!不存在!"); |
| | | } |
| | | if (status.get()) { |
| | | System.out.println("共更新 = " + count.get()+" 人!"); |
| | | //批量插入 |
| | | //用户批量插入 |
| | | if (userList.size()>0) { |
| | | baseMapper.batchUserList(userList); |
| | | //用户批量插入异步推送 |
| | | myAsyncService.batchUserList(userList); |
| | | //sql 拼接 |
| | | StringBuilder builder = new StringBuilder(); |
| | | StringBuilder builder1 = new StringBuilder(); |
| | | //遍历 |
| | | for (User user : userList) { |
| | | //内网同步,sql 拼接 |
| | | String sql = "insert into blade_user(" + |
| | | "id,tenant_id,account,password,name,real_name,avatar,email,phone,sex," + |
| | | "role_id,dept_id,cardid,nativePlace,nation,fingerprint,education," + |
| | | "politicaloutlook,healstats,height,address,registered," + |
| | | "securitynumber,hold,jurisdiction,examination_type,status,is_deleted,dispatch,create_time) " + |
| | | "values(" + "'" + user.getId() + "'" + |
| | | "," + "'" + user.getTenantId() + "'" + |
| | | "," + "'" + user.getAccount() + "'" + |
| | | "," + "'" + user.getPassword() + "'" + |
| | | "," + "'" + user.getName() + "'" + |
| | | "," + "'" + user.getRealName() + "'" + |
| | | "," + "'" + user.getAvatar() + "'" + |
| | | "," + "'" + user.getEmail() + "'" + |
| | | "," + "'" + user.getPhone() + "'" + |
| | | "," + "'" + user.getSex() + "'" + |
| | | "," + "'" + user.getRoleId() + "'" + |
| | | "," + "'" + user.getDeptId() + "'" + |
| | | "," + "'" + user.getCardid() + "'" + |
| | | "," + "'" + user.getNativeplace() + "'" + |
| | | "," + "'" + user.getNation() + "'" + |
| | | "," + "'" + user.getFingerprint() + "'" + |
| | | "," + "'" + user.getEducation() + "'" + |
| | | "," + "'" + user.getPoliticaloutlook() + "'" + |
| | | "," + "'" + user.getHealstats() + "'" + |
| | | "," + "'" + user.getHeight() + "'" + |
| | | "," + "'" + user.getAddress() + "'" + |
| | | "," + "'" + user.getRegistered() + "'" + |
| | | "," + "'" + user.getSecuritynumber() + "'" + |
| | | "," + "'" + user.getHold() + "'" + |
| | | "," + "'" + user.getJurisdiction() + "'" + |
| | | "," + "'" + user.getExaminationType() + "'" + |
| | | "," + "'" + user.getStatus() + "'" + |
| | | "," + "'" + user.getIsDeleted() + "'" + |
| | | "," + "'" + user.getDispatch() + "'" + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" + ")"; |
| | | //拼接 |
| | | builder = builder.append(sql).append(";"); |
| | | List<String> list = Arrays.asList(builder.toString().split(";")); |
| | | //判断list.size 大小 |
| | | if (list.size()==1000){ |
| | | //执行 |
| | | myAsyncService.FTP(builder.toString()); |
| | | //清空 |
| | | builder.delete(0,builder.length()); |
| | | } |
| | | } |
| | | |
| | | //装换成map |
| | | Map<String, User> userMap = userList.stream().collect(Collectors.toMap(user -> user.getCardid(), user -> user)); |
| | | //匹配 |
| | | experienceList = experienceList.stream().map(experience -> { |
| | | if (experience.getCardid().equals(userMap.get(experience.getCardid()).getCardid())) { |
| | | experience.setSecurityid(userMap.get(experience.getCardid()).getId().toString()); |
| | | } |
| | | return experience; |
| | | }).collect(Collectors.toList()); |
| | | //批量插入从业记录 |
| | | baseMapper.batchExperienceList(experienceList); |
| | | //遍历,拼接sql ,同步数据到内网 |
| | | for (Experience experience : experienceList) { |
| | | String sql1 = "insert into sys_experience(id,name,post,entryTime,cardId,companyname,securityId) " + |
| | | "values(" + "'" + experience.getId() + "'" + "," + |
| | | "'" + experience.getName() + "'" + "," + |
| | | "'" + experience.getPost() + "'" + "," + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd").format(experience.getEntrytime()) + "'" + |
| | | "," + "'" + experience.getCardid() + "'" + |
| | | "," + "'" + experience.getCompanyname() + "'" + |
| | | "," + "'" + experience.getSecurityid() + "'" + ")"; |
| | | //拼接 |
| | | builder1 = builder1.append(sql1).append(";"); |
| | | String[] split1 = builder.toString().split(";"); |
| | | //判断list.size 大小 |
| | | if (split1.length==1000){ |
| | | //执行 |
| | | myAsyncService.FTP(builder1.toString()); |
| | | //清空 |
| | | builder1.delete(0,builder1.length()); |
| | | } |
| | | } |
| | | //剩余的继续执行 |
| | | myAsyncService.FTP(builder.toString()); |
| | | myAsyncService.FTP(builder1.toString()); |
| | | } |
| | | |
| | | //如果所有数据导入有一个异常 |
| | | StringBuilder errorBuilder = new StringBuilder(); |
| | | if (!status.get()){ |
| | | String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"); |
| | | } |
| | | if (!agetStatus.get()){ |
| | | String errorAccount = StringUtils.join(ageErrorList, "\\\n"); |
| | | errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"); |
| | | } |
| | | if (!securityInvalidStatus.get()){ |
| | | String errorAccount = StringUtils.join(securityInvalidList, "\\\n"); |
| | | errorBuilder.append("用户:[" + errorAccount + "]保安证编号不匹配,请核实!也可通过提供保安证件信息提交核实申请!"); |
| | | } |
| | | //抛出异常 |
| | | if (errorBuilder.length()>0){ |
| | | throw new ServiceException(errorBuilder.toString()); |
| | | } |
| | | } |
| | | |
| | |
| | | public List<Map<String, Object>> selectEquipent() { |
| | | return baseMapper.selectEquipent(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 年龄分布查询 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Object getAgeStatistics(UserVO user) { |
| | | //获取年龄分布数据 |
| | | List<Integer> list = baseMapper.getAgeStatistics(user); |
| | | //返回 |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 查询登录密码还是 123456 的单位信息 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Object getNotUpdatePwdInfo() { |
| | | //查询角色为保安公司管理员的用户信息 |
| | | User user = new User(); |
| | | user.setRoleId("1414575196264300546"); |
| | | user.setStatus(1); |
| | | user.setIsDeleted(0); |
| | | List<User> list = this.list(Condition.getQueryWrapper(user)); |
| | | List<User> list1 = new ArrayList<>(); |
| | | //遍历 |
| | | if (list.size()>0){ |
| | | byte[] bytes = DigestUtil.decodeHex(list.get(0).getPassword()); |
| | | try { |
| | | System.out.println("解密的密码 = " + new String(bytes)); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 根据用户 id 查询用户信息 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public User getUserById(String id) { |
| | | return baseMapper.getUserById(Long.parseLong(id)); |
| | | } |
| | | |
| | | /** |
| | | * 手动新增用户信息 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean insert(User user) { |
| | | int i = baseMapper.insertUser(user); |
| | | if (i>0){ |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | } |