| | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.google.zxing.WriterException; |
| | | import lombok.AllArgsConstructor; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.logging.log4j.util.Strings; |
| | | import org.springblade.common.cache.DictCache; |
| | | import org.springblade.common.cache.ParamCache; |
| | | import org.springblade.common.cache.SysCache; |
| | | import org.springblade.common.cache.UserCache; |
| | | import org.springblade.common.config.QrcodeConfig; |
| | | import org.springblade.common.constant.AgeUtil; |
| | | import org.springblade.common.constant.CommonConstant; |
| | | import org.springblade.common.constant.TenantConstant; |
| | | import org.springblade.common.enums.DictEnum; |
| | | 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.Condition; |
| | |
| | | import org.springblade.core.tool.utils.*; |
| | | import org.springblade.modules.FTP.FtpUtil; |
| | | import org.springblade.modules.auth.enums.UserEnum; |
| | | import org.springblade.modules.dispatcher.service.IDispatcherService; |
| | | import org.springblade.modules.dispatcher.vo.DispatcherUnitVO; |
| | | 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.entity.*; |
| | | 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.IRoleService; |
| | | import org.springblade.modules.system.service.IUserDeptService; |
| | | import org.springblade.modules.system.service.IUserOauthService; |
| | | import org.springblade.modules.system.service.IUserService; |
| | | import org.springblade.modules.system.service.*; |
| | | import org.springblade.modules.system.vo.UserInfoDetail; |
| | | import org.springblade.modules.system.vo.UserVO; |
| | | import org.springblade.modules.system.wrapper.UserWrapper; |
| | | import org.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.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | import static org.springblade.common.constant.CommonConstant.DEFAULT_PARAM_PASSWORD; |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 服务实现类 |
| | |
| | | private final IRoleService roleService; |
| | | private final BladeTenantProperties tenantProperties; |
| | | private final IInformationService iInformationService; |
| | | private final IDeptService deptService; |
| | | private final JurisdictionService jurisdictionService; |
| | | private final IExperienceService experienceService; |
| | | private final MyAsyncService myAsyncService; |
| | | private final SecurityPaperService securityPaperService; |
| | | private final IUserDetailService userDetailService; |
| | | |
| | | private final IUserWxService userWxService; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | if (Func.isNotEmpty(user.getPassword())) { |
| | | user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | } |
| | | Integer userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, user.getAccount())); |
| | | // Integer userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, user.getAccount())); |
| | | Integer userCount = baseMapper.selectCountAccount(user.getAccount()); |
| | | if (userCount > 0 && Func.isEmpty(user.getId())) { |
| | | 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) " + |
| | | "values(" + "'" + user.getId() + "'" + "," + "'" + user.getTenantId() + "'" + "," + "'" + user.getAccount() + "'" + "," + |
| | | "'" + user.getPassword() + "'" + "," + "'" + user.getRealName() + "'" + "," + |
| | | "'" + user.getEmail() + "'" + "," + "'" + user.getPhone() + "'" + "," + "'" + user.getSex() + "'" + "," + "'" + user.getRoleId() + "'" + |
| | | "," + "'" + user.getDeptId() + "'" + |
| | | "," + "'" + user.getCardid() + "'" + |
| | | "," + "'" + user.getNativeplace() + "'" + |
| | | "," + "'" + user.getNation() + "'" + |
| | | "," + "'" + user.getPoliticaloutlook() + "'" + |
| | | "," + "'" + user.getHealstats() + "'" |
| | | + "," + "'" + user.getHeight() + "'" + |
| | | "," + "'" + user.getAddress() + "'" + |
| | | "," + "'" + user.getRegistered() + "'" + "," + |
| | | "'" + user.getSecuritynumber() + "'" + |
| | | "," + "'" + user.getHold() + "'" + |
| | | "," + "'" + user.getStatus() + "'" + |
| | | "," + "'" + user.getDispatch() + "'"+ |
| | | "," + "'" + user.getJurisdiction() + "'"+ |
| | | "," + "'" + user.getIsDeleted() + "'" |
| | | + ")"; |
| | | FtpUtil.sqlFileUpload(s); |
| | | return b; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean updateUser(User user) { |
| | | // String tenantId = user.getTenantId(); |
| | | // Integer userCount = baseMapper.selectCount( |
| | | // Wrappers.<User>query().lambda() |
| | | // .eq(User::getTenantId, tenantId) |
| | | // .eq(User::getAccount, user.getAccount()) |
| | | // .notIn(User::getId, user.getId()) |
| | | // ); |
| | | // if (userCount > 0) { |
| | | // throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount())); |
| | | // } |
| | | return updateUserInfo(user) && submitUserDept(user); |
| | | } |
| | | |
| | |
| | | |
| | | @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!=user.getAgeType() && user.getAgeType()!=4){ |
| | | List<UserVO> userVOS = baseMapper.selectUserPagesByAge(page, user); |
| | | //机构名称拼接 |
| | | userVOS.forEach(userVO -> { |
| | | 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); |
| | | }else { |
| | | List<UserVO> userVOS = baseMapper.selectUserPages(page, user); |
| | | //机构名称拼接 |
| | | userVOS.forEach(userVO -> { |
| | | if (null!=userVO.getDeptId()) { |
| | | |
| | | List<String> deptNameList = SysCache.getDeptNames(userVO.getAncestors()+","+userVO.getDeptId()); |
| | | |
| | | userVO.setFullDeptName(getFullDeptName(deptNameList)); |
| | | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | private String getFullDeptName(List<String> deptNameList) { |
| | | String fullDeptName = ""; |
| | | if (deptNameList.size()>1){ |
| | | //多级 |
| | | if (StringUtil.isNotBlank(deptNameList.get(0))){ |
| | | //本市保安公司 xxx xxx xxx |
| | | String first = deptNameList.get(0); |
| | | if (first.equals("本市保安公司") || first.equals("保安培训学校") || first.equals("自招保安单位") || first.equals("武装押运公司") || first.equals("分公司") || first.equals("其他")){ |
| | | deptNameList.remove(0); |
| | | fullDeptName = StringUtil.join(deptNameList,","); |
| | | } |
| | | } |
| | | }); |
| | | return page.setRecords(userVOS); |
| | | } |
| | | return fullDeptName; |
| | | } |
| | | |
| | | @Override |
| | |
| | | return buildUserInfo(user); |
| | | } |
| | | |
| | | /** |
| | | * 获取用户信息(wx) |
| | | * @param tenantId |
| | | * @param phone |
| | | * @param userEnum |
| | | * @return |
| | | */ |
| | | @Override |
| | | public UserInfo userInfoByWx(String tenantId, String phone, UserEnum userEnum) { |
| | | User user = baseMapper.getUserByPhone(tenantId, phone); |
| | | return buildUserInfo(user, userEnum); |
| | | } |
| | | |
| | | @Override |
| | | public UserInfo userInfo(String tenantId, String account, String password, UserEnum userEnum) { |
| | | User user = baseMapper.getUser(tenantId, account, password); |
| | | return buildUserInfo(user, userEnum); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public UserInfo wxUserInfo(String tenantId, String account, String password, UserEnum userEnum) { |
| | | //先去blade_user_wx表里查 |
| | | UserWx userWx = userWxService.getUserWx(tenantId, account, password); |
| | | |
| | | if (userWx != null){ |
| | | //根据身份证号去user表里查 |
| | | User userParam = new User(); |
| | | userParam.setCardid(userWx.getCardid()); |
| | | userParam.setIsDeleted(0); |
| | | |
| | | List<User> list = list(Condition.getQueryWrapper(userParam)); |
| | | //user表里有数据,就直接返回user表的数据 |
| | | if (list.size()>0){ |
| | | User user = list.get(0); |
| | | return buildUserInfo(user, userEnum); |
| | | }else{ |
| | | // |
| | | User user = BuildUser(userWx); |
| | | return buildUserInfo(user, userEnum); |
| | | } |
| | | }else{ |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | private User BuildUser(UserWx userWx) { |
| | | User user = new User(); |
| | | |
| | | user.setId(userWx.getId()); |
| | | user.setCode(userWx.getCode()); |
| | | user.setUserType(userWx.getUserType()); |
| | | user.setAccount(userWx.getAccount()); |
| | | user.setPassword(userWx.getPassword()); |
| | | user.setName(userWx.getName()); |
| | | user.setRealName(userWx.getRealName()); |
| | | user.setAvatar(userWx.getAvatar()); |
| | | user.setEmail(userWx.getEmail()); |
| | | user.setPhone(userWx.getPhone()); |
| | | user.setBirthday(userWx.getBirthday()); |
| | | user.setSex(userWx.getSex()); |
| | | user.setRoleId(userWx.getRoleId()); |
| | | user.setDeptId(userWx.getDeptId()); |
| | | user.setPostId(userWx.getPostId()); |
| | | user.setCardid(userWx.getCardid()); |
| | | user.setNativeplace(userWx.getNativeplace()); |
| | | user.setNation(userWx.getNation()); |
| | | user.setEducation(userWx.getEducation()); |
| | | user.setPoliticaloutlook(userWx.getPoliticaloutlook()); |
| | | user.setHeight(userWx.getHeight()); |
| | | user.setCell(userWx.getCell()); |
| | | user.setEmail(userWx.getEmail()); |
| | | user.setHold(userWx.getHold()); |
| | | user.setStatus(userWx.getStatus()); |
| | | user.setJurisdiction(userWx.getJurisdiction()); |
| | | user.setSecuritynumber(userWx.getSecuritynumber()); |
| | | user.setExaminationType(userWx.getExaminationType()); |
| | | user.setFingerprint(userWx.getFingerprint()); |
| | | user.setPhoto(userWx.getPhoto()); |
| | | user.setDispatch(userWx.getDispatch()); |
| | | user.setMyPicture(userWx.getMyPicture()); |
| | | user.setIsApply(userWx.getIsApply()); |
| | | user.setBirthtime(userWx.getBirthtime()); |
| | | user.setIsTrain(userWx.getIsTrain()); |
| | | user.setHealstats(userWx.getHealstats()); |
| | | user.setSoil(userWx.getSoil()); |
| | | user.setPaperTime(userWx.getPaperTime()); |
| | | user.setReasonForLeav(userWx.getReasonForLeav()); |
| | | user.setImgForLeav(userWx.getImgForLeav()); |
| | | user.setHoldv(userWx.getHoldv()); |
| | | user.setHoldvtime(userWx.getHoldvtime()); |
| | | user.setInsurance(userWx.getInsurance()); |
| | | user.setAuditTime(userWx.getAuditTime()); |
| | | user.setGuncode(userWx.getGuncode()); |
| | | user.setEquipmentCode(userWx.getEquipmentCode()); |
| | | user.setIsFreeze(userWx.getIsFreeze()); |
| | | user.setAuditStatus(userWx.getAuditStatus()); |
| | | |
| | | return user; |
| | | } |
| | | |
| | | |
| | | private UserInfo buildUserInfo(User user) { |
| | | return buildUserInfo(user, UserEnum.WEB); |
| | |
| | | return deleteLogic(Func.toLongList(userIds)); |
| | | } |
| | | |
| | | /** |
| | | * 用户民警的导入 |
| | | * @param data |
| | | * @param isCovered |
| | | * @param deptId |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | // @Transactional(rollbackFor = Exception.class) 去除事务回滚 |
| | | public void importUser(List<UserExcel> data, Boolean isCovered,String deptId) { |
| | | //将不能导入的账号存起来 |
| | | List<String> errorList = new ArrayList<>(); |
| | | //导入状态,默认为true ,如果有一个出现问题则为 false |
| | | AtomicBoolean status = new AtomicBoolean(true); |
| | | data.forEach(userExcel -> { |
| | | User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class)); |
| | | // 设置租户ID |
| | | user.setTenantId("000000"); |
| | | //默认在职 |
| | | user.setStatus(1); |
| | | //判断是否持证 |
| | | 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); |
| | | } |
| | | } |
| | | //设置部门id |
| | | String deptIds = userDeptService.selectIn(user.getDeptId()); |
| | | if (null!=deptIds && !deptIds.equals("")) { |
| | | if (null != deptId && !deptId.equals("")) { |
| | | if (!deptId.equals(deptIds)) { |
| | | throw new ServiceException("不能导入不是本公司的保安员数据!"); |
| | | // 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()+"]不存在!"); |
| | | // } |
| | | user.setDeptId(deptIds); |
| | | //判断当前用户是否已在本单位,如果是的更新数据 |
| | | User user1 = new User(); |
| | | user1.setAccount(user.getDeptId()); |
| | | // user1.setAccount(user.getCode()); |
| | | 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); |
| | | user.setCreateTime(new Date()); |
| | | user.setUpdateTime(new Date()); |
| | | //设置账号 |
| | | user.setAccount(userExcel.getDeptId()); |
| | | //user.setAccount(user.getCode()); |
| | | //分配角色 |
| | | 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.setDeptId(deptIds); |
| | | |
| | | //获取辖区的数据 |
| | | Jurisdiction jurisdiction = new Jurisdiction(); |
| | | jurisdiction.setDeptName(userExcel.getDeptId()); |
| | | Jurisdiction one = jurisdictionService.getOne(Condition.getQueryWrapper(jurisdiction)); |
| | | user.setJurisdiction(one.getId().toString()); |
| | | |
| | | |
| | | //获取默认密码配置 |
| | | user.setPassword("123456"); |
| | | // user.setPassword(user.getCode()); |
| | | //加密 |
| | | 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())); |
| | | } |
| | | //新增 |
| | | this.save(user); |
| | | //内网同步 |
| | | String s = "insert into blade_user(" + |
| | | "id,tenant_id,code,account,password,real_name,phone,sex,role_id,dept_id," + |
| | | "create_time,update_time,cardid,status,is_deleted,jurisdiction) " + |
| | | "values(" + "'" + user.getId() + "'" + "," + |
| | | "'" + user.getTenantId() + "'" + "," + |
| | | "'" + user.getCode() + "'" + "," + |
| | | "'" + user.getAccount() + "'" + "," + |
| | | "'" + user.getPassword() + "'" + "," + |
| | | "'" + user.getRealName() + "'" + "," + |
| | | "'" + user.getPhone() + "'" + "," + |
| | | "'" + user.getSex() + "'" + "," + |
| | | "'" + user.getRoleId() + "'" + |
| | | "," + "'" + user.getDeptId() + "'" + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateTime()) + "'" + |
| | | "," + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getUpdateTime()) + "'" + |
| | | "," + "'" + user.getCardid() + "'" + |
| | | "," + "'" + user.getStatus() + "'" + |
| | | "," + "'" + user.getIsDeleted() + "'" + |
| | | "," + "'" + user.getJurisdiction() + "'" |
| | | + ")"; |
| | | //FtpUtil.sqlFileUpload(s); |
| | | myAsyncService.dataSync(s); |
| | | }else { |
| | | //匹配组织机构是否一致,如果不一致 |
| | | if(!user2.getDeptId().equals(user.getDeptId())){ |
| | | Dept dept = deptService.getById(user2.getDeptId()); |
| | | status.set(false); |
| | | //加入集合 |
| | | errorList.add(user.getCardid()); |
| | | //forEach 只能使用 return 跳出本次循环 |
| | | return; |
| | | }else { |
| | | //如果是一致,则更新用户数据 |
| | | //更新用户数据 |
| | | user2.setUpdateTime(new Date()); |
| | | if (null!=user.getPhone() && !user.getPhone().equals("")){ |
| | | user2.setPhone(user.getPhone()); |
| | | } |
| | | if (null!=user.getRealName() && !user.getRealName().equals("")){ |
| | | user2.setRealName(user.getRealName()); |
| | | } |
| | | if (null!=user.getCardid() && !user.getCardid().equals("")){ |
| | | user2.setCardid(user.getCardid()); |
| | | } |
| | | if (null!=user.getCode() && !user.getCode().equals("")){ |
| | | user2.setCode(user.getCode()); |
| | | user2.setAccount(user.getCode()); |
| | | } |
| | | user2.setAccount(userExcel.getDeptId()); |
| | | this.updateById(user2); |
| | | String s1 = |
| | | "update blade_user set account = " + "'" + user2.getAccount() + "'" |
| | | + ",code = " + "'" + user2.getCode() + "'" |
| | | + ",real_name = " + "'" + user2.getRealName() + "'" |
| | | + ",phone = " + "'" + user2.getPhone() + "'" |
| | | + ",update_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user2.getUpdateTime()) + "'" |
| | | + ",cardid = " + "'" + user2.getCardid() + "'" |
| | | + " " + "where id = " + "'" + user2.getId() + "'"; |
| | | //FtpUtil.sqlFileUpload(s1); |
| | | myAsyncService.dataSync(s1); |
| | | } |
| | | } |
| | | //设置账号 |
| | | user.setAccount(user.getCardid()); |
| | | //获取默认密码配置 |
| | | user.setPassword(user.getCardid().substring(user.getCardid().length() - 6)); |
| | | // user.setPassword(ParamCache.getValue(DEFAULT_PARAM_PASSWORD)); |
| | | //新增 |
| | | this.submit(user); |
| | | }); |
| | | //如果所有数据导入有一个异常 |
| | | if (!status.get()){ |
| | | String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | throw new ServiceException("用户:["+errorAccount+"]导入失败!已在其他单位存在!"); |
| | | } |
| | | } |
| | | |
| | | // @Override |
| | | // public List<UserExcel> exportUser(Wrapper<User> queryWrapper) { |
| | | // List<UserExcel> userList = baseMapper.exportUser(queryWrapper); |
| | | // userList.forEach(user -> { |
| | | @Override |
| | | public List<UserExcel> exportUser(Map<String, Object> param) { |
| | | List<UserExcel> userList = baseMapper.exportUser(param); |
| | | userList.forEach(user -> { |
| | | // user.setUserTypeName(DictCache.getValue(DictEnum.USER_TYPE, user.getUserType())); |
| | | // user.setRoleName(StringUtil.join(SysCache.getRoleNames(user.getRoleId()))); |
| | | // user.setDeptName(StringUtil.join(SysCache.getDeptNames(user.getDeptId()))); |
| | | // user.setPostName(StringUtil.join(SysCache.getPostNames(user.getPostId()))); |
| | | // }); |
| | | // return userList; |
| | | // } |
| | | |
| | | if (user.getSex() != null && StringUtil.isNotBlank(user.getSex())){ |
| | | if (user.getSex().equals("1")){ |
| | | user.setSex("男"); |
| | | }else if (user.getSex().equals("2")){ |
| | | user.setSex("女"); |
| | | } |
| | | } |
| | | }); |
| | | return userList; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | */ |
| | | @Override |
| | | public List<User> selectUserPageSecurityUnit(IPage<User> page, User user) { |
| | | return baseMapper.selectUserPageSecurity(page, user); |
| | | return baseMapper.selectUserPageSecurity(null, user); |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public List<TreeNode> getSecurityApplyTree(UserVO user) { |
| | | Map<Long, TreeNode> map = baseMapper.getSecurityApplyTree(user); |
| | | // 总的 |
| | | List<TreeNode> allList = new ArrayList<>(); |
| | | // 考试未通过 |
| | | List<TreeNode> notList = new ArrayList<>(); |
| | | // 新申报报名的 |
| | | List<TreeNode> newList = new ArrayList<>(); |
| | | // 查询 |
| | | List<TreeNode> treeNodeList = baseMapper.getSecurityApplyTree(user); |
| | | // 遍历 |
| | | if (treeNodeList.size()>0){ |
| | | for (TreeNode treeNode : treeNodeList) { |
| | | if (treeNode.getType()==1){ |
| | | notList.add(treeNode); |
| | | } |
| | | if (treeNode.getType()==2){ |
| | | newList.add(treeNode); |
| | | } |
| | | } |
| | | } |
| | | if (newList.size()>0){ |
| | | // 新申报报名的 |
| | | TreeNode treeNode = new TreeNode(); |
| | | treeNode.setName("新申报名单"); |
| | | treeNode.setChildren(newList); |
| | | allList.add(treeNode); |
| | | } |
| | | if (notList.size()>0){ |
| | | // 考试未通过 |
| | | TreeNode treeNode = new TreeNode(); |
| | | treeNode.setName("未通过考试名单"); |
| | | treeNode.setChildren(notList); |
| | | allList.add(treeNode); |
| | | } |
| | | // 返回 |
| | | return allList; |
| | | } |
| | | |
| | | /** |
| | | * 派遣保安员列表树 安员列表树,帅选无保安证,下拉tree |
| | | * |
| | | * @param user 用户信息 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<TreeNode> getSecurityDispatcherTree(UserVO user) { |
| | | Map<Long, TreeNode> map = baseMapper.getSecurityDispatcherTree(user); |
| | | List<TreeNode> tree = new ArrayList<>(); |
| | | if (map.size() > 1) { |
| | | map.forEach((id, treeNode) -> { |
| | |
| | | tree.add(treeNode); |
| | | } |
| | | }); |
| | | //将原有的保安员加入到集合 |
| | | if (null!=user.getId()){ |
| | | TreeNode treeNode = new TreeNode(); |
| | | treeNode.setId(user.getId()); |
| | | treeNode.setHasChildren(false); |
| | | treeNode.setName(user.getRealName()); |
| | | treeNode.setParentId(Long.parseLong(user.getDeptId())); |
| | | tree.get(0).getChildren().add(treeNode); |
| | | } |
| | | //获取子节点 |
| | | List<TreeNode> children = tree.get(0).getChildren(); |
| | | //排序 |
| | | List<TreeNode> nodes = children.stream().sorted(Comparator.comparing(TreeNode::getId)).collect(Collectors.toList()); |
| | | //设置排序后的集合 |
| | | tree.get(0).setChildren(nodes); |
| | | } |
| | | //返回 |
| | | return tree; |
| | | } |
| | | |
| | |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void importSecurity(List<UserExcel> data, Boolean isCovered) { |
| | | public void importSecurity(List<SecurityExcel> 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<>(); |
| | | //需要新增的保安员集合 |
| | | 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==userExcel.getPermanentResidenceAddress() || userExcel.getPermanentResidenceAddress().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.setSex(Integer.parseInt(userExcel.getSex())); |
| | | // 学历 |
| | | user.setEducation(userExcel.getEducation()); |
| | | |
| | | //判断当前用户是否已在本单位,如果是的更新数据 |
| | | 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); |
| | | securityNumberCheck(securityInvalidList, securityInvalidStatus, user, userExcel.getSecuritynumber(), userExcel.getCardid()); |
| | | //分配保安角色 |
| | | Role role = new Role(); |
| | | role.setRoleAlias("保安"); |
| | | Role oneRole = roleService.getOne(Condition.getQueryWrapper(role)); |
| | | user.setRoleId(oneRole.getId().toString()); |
| | | |
| | | //设置账号 |
| | | user.setAccount(user.getCardid()); |
| | | //获取默认密码配置 |
| | | user.setPassword(user.getCardid().substring(user.getCardid().length() - 6)); |
| | | //加密 |
| | | if (Func.isNotEmpty(user.getPassword())) { |
| | | user.setPassword(DigestUtil.encrypt(user.getPassword())); |
| | | } |
| | | Integer userCount = baseMapper.selectCountAccount(user.getAccount()); |
| | | if (userCount > 0 && Func.isEmpty(user.getId())) { |
| | | throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount())); |
| | | } |
| | | user.setCreateTime(new Date()); |
| | | user.setDispatch("1"); |
| | | user.setExaminationType("0"); |
| | | //新增 |
| | | boolean save = this.save(user); |
| | | //并更新详情数据 |
| | | if(save){ |
| | | UserDetailEntity detailEntity = new UserDetailEntity(); |
| | | detailEntity.setUserId(user.getId()); |
| | | detailEntity.setDwellAddress(userExcel.getDwellAddress()); |
| | | detailEntity.setEducationExperience(userExcel.getEducationExperience()); |
| | | detailEntity.setMemberOfFamily(userExcel.getMemberOfFamily()); |
| | | detailEntity.setWorkExperience(userExcel.getWorkExperience()); |
| | | detailEntity.setPermanentResidenceAddress(userExcel.getPermanentResidenceAddress()); |
| | | if (!Strings.isBlank(userExcel.getMarriageStatus())) { |
| | | detailEntity.setMarriageStatus(Integer.parseInt(userExcel.getMarriageStatus())); |
| | | } |
| | | if (!Strings.isBlank(userExcel.getSignLevel())) { |
| | | detailEntity.setSignLevel(Integer.parseInt(userExcel.getSignLevel())); |
| | | } |
| | | detailEntity.setUnitName(userExcel.getUnitName()); |
| | | detailEntity.setPermanentResidenceAddress(userExcel.getPermanentResidenceAddress()); |
| | | detailEntity.setDwellAddress(userExcel.getDwellAddress()); |
| | | detailEntity.setAcceptancePoliceUnit(userExcel.getAcceptancePoliceUnit()); |
| | | detailEntity.setAcceptancePerson(userExcel.getAcceptancePerson()); |
| | | if (!Strings.isBlank(userExcel.getAcceptanceTime())){ |
| | | try { |
| | | detailEntity.setAcceptanceTime(new SimpleDateFormat("yyyy/MM/dd").parse(userExcel.getAcceptanceTime())); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | userDetailService.save(detailEntity); |
| | | } |
| | | //加入集合 |
| | | // 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()); |
| | | // 新增 |
| | | experienceService.save(experience); |
| | | //加入集合 |
| | | // experienceList.add(experience); |
| | | |
| | | }else { |
| | | //匹配组织机构是否一致,如果不一致 |
| | | if(!user2.getDeptId().equals(user.getDeptId())){ |
| | | status.set(false); |
| | | //加入集合 |
| | | errorList.add(user.getCardid()); |
| | | //forEach 只能使用 return 跳出本次循环 |
| | | // return; |
| | | continue; |
| | | }else { |
| | | // 学历 |
| | | if (null!=userExcel.getEducation()){ |
| | | user2.setEducation(user.getEducation()); |
| | | }else { |
| | | user2.setEducation(""); |
| | | } |
| | | |
| | | // 政治面貌 |
| | | if (null!=userExcel.getPoliticaloutlook()){ |
| | | user2.setPoliticaloutlook(userExcel.getPoliticaloutlook()); |
| | | }else { |
| | | user2.setPoliticaloutlook(""); |
| | | } |
| | | |
| | | user2.setUpdateTime(new Date()); |
| | | //更新用户数据 |
| | | boolean update = this.updateById(user2); |
| | | //并更新详情数据 |
| | | if(update){ |
| | | // 通过用户id 查询,如果存在则更新,不存在则更新 |
| | | QueryWrapper<UserDetailEntity> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("is_deleted",0).eq("user_id",user2.getId()); |
| | | UserDetailEntity one = userDetailService.getOne(wrapper); |
| | | if (null!=one){ |
| | | one.setDwellAddress(userExcel.getDwellAddress()); |
| | | one.setEducationExperience(userExcel.getEducationExperience()); |
| | | one.setMemberOfFamily(userExcel.getMemberOfFamily()); |
| | | one.setWorkExperience(userExcel.getWorkExperience()); |
| | | one.setPermanentResidenceAddress(userExcel.getPermanentResidenceAddress()); |
| | | if (!Strings.isBlank(userExcel.getMarriageStatus())) { |
| | | one.setMarriageStatus(Integer.parseInt(userExcel.getMarriageStatus())); |
| | | } |
| | | if (!Strings.isBlank(userExcel.getSignLevel())) { |
| | | one.setSignLevel(Integer.parseInt(userExcel.getSignLevel())); |
| | | } |
| | | one.setUnitName(userExcel.getUnitName()); |
| | | one.setPermanentResidenceAddress(userExcel.getPermanentResidenceAddress()); |
| | | one.setDwellAddress(userExcel.getDwellAddress()); |
| | | one.setAcceptancePoliceUnit(userExcel.getAcceptancePoliceUnit()); |
| | | one.setAcceptancePerson(userExcel.getAcceptancePerson()); |
| | | if (!Strings.isBlank(userExcel.getAcceptanceTime())){ |
| | | try { |
| | | one.setAcceptanceTime(new SimpleDateFormat("yyyy/MM/dd").parse(userExcel.getAcceptanceTime())); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | userDetailService.updateById(one); |
| | | }else { |
| | | UserDetailEntity detailEntity = new UserDetailEntity(); |
| | | detailEntity.setUserId(user2.getId()); |
| | | detailEntity.setDwellAddress(userExcel.getDwellAddress()); |
| | | detailEntity.setEducationExperience(userExcel.getEducationExperience()); |
| | | detailEntity.setMemberOfFamily(userExcel.getMemberOfFamily()); |
| | | detailEntity.setWorkExperience(userExcel.getWorkExperience()); |
| | | detailEntity.setPermanentResidenceAddress(userExcel.getPermanentResidenceAddress()); |
| | | if (!Strings.isBlank(userExcel.getMarriageStatus())) { |
| | | detailEntity.setMarriageStatus(Integer.parseInt(userExcel.getMarriageStatus())); |
| | | } |
| | | if (!Strings.isBlank(userExcel.getSignLevel())) { |
| | | detailEntity.setSignLevel(Integer.parseInt(userExcel.getSignLevel())); |
| | | } |
| | | detailEntity.setUnitName(userExcel.getUnitName()); |
| | | detailEntity.setPermanentResidenceAddress(userExcel.getPermanentResidenceAddress()); |
| | | detailEntity.setDwellAddress(userExcel.getDwellAddress()); |
| | | detailEntity.setAcceptancePoliceUnit(userExcel.getAcceptancePoliceUnit()); |
| | | detailEntity.setAcceptancePerson(userExcel.getAcceptancePerson()); |
| | | if (!Strings.isBlank(userExcel.getAcceptanceTime())){ |
| | | try { |
| | | detailEntity.setAcceptanceTime(new SimpleDateFormat("yyyy/MM/dd").parse(userExcel.getAcceptanceTime())); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | userDetailService.save(detailEntity); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //批量插入 |
| | | //用户批量插入 |
| | | // if (userList.size()>0) { |
| | | // baseMapper.batchUserList(userList); |
| | | // //装换成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); |
| | | // } |
| | | |
| | | //如果所有数据导入有一个异常 |
| | | 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()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 判断是否持证 |
| | | * @param securityInvalidList |
| | | * @param securityInvalidStatus |
| | | * @param user |
| | | * @param securitynumber |
| | | * @param cardid2 |
| | | */ |
| | | public void securityNumberCheck(List<String> securityInvalidList, AtomicBoolean securityInvalidStatus, User user, String securitynumber, String cardid2) { |
| | | //判断是否持证 |
| | | if (null != securitynumber && securitynumber != "") { |
| | | user.setHold("1"); |
| | | //校验保安员证编号是否合规 |
| | | SecurityPaper securityPaper = new SecurityPaper(); |
| | | securityPaper.setIdCardNo(cardid2); |
| | | 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(cardid2); |
| | | securityInvalidStatus.set(false); |
| | | } |
| | | } else { |
| | | user.setHold("2"); |
| | | user.setSecuritynumber(null); |
| | | securityInvalidList.add(cardid2); |
| | | securityInvalidStatus.set(false); |
| | | } |
| | | } else { |
| | | user.setHold("2"); |
| | | } |
| | | } |
| | | |
| | | @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 |
| | | user.setTenantId("000000"); |
| | | //默认在职 |
| | | user.setStatus(1); |
| | | user.setDispatch("1"); |
| | | //判断是否持证 |
| | | 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); |
| | | } |
| | | } |
| | | //设置部门id |
| | | user.setDeptId(userDeptService.selectIn(user.getDeptId())); |
| | | //设置账号 |
| | | user.setAccount(user.getCardid()); |
| | | //获取默认密码配置 |
| | | user.setPassword(user.getCardid().substring(user.getCardid().length() - 6)); |
| | | // user.setPassword(ParamCache.getValue(DEFAULT_PARAM_PASSWORD)); |
| | | //新增 |
| | | this.submit(user); |
| | | 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.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); |
| | | //判断是否持证 |
| | | securityNumberCheck(securityInvalidList, securityInvalidStatus, user, userExcel.getSecuritynumber(), userExcel.getCardid()); |
| | | //分配保安角色 |
| | | 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); |
| | | |
| | | } |
| | | 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); |
| | | }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.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); |
| | | } |
| | | } |
| | | }); |
| | | //如果所有数据导入有一个异常 |
| | | 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()); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | * @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 UserVO getUserDetails(User user) { |
| | | |
| | | |
| | | |
| | | return baseMapper.getUserDetails(user); |
| | | } |
| | | |
| | |
| | | if (Integer.parseInt(type) == 4) { |
| | | list = baseMapper.getWorkReportInfo(type, deptid, jurisdiction); |
| | | } |
| | | //现场检查获取保安员 |
| | | if (Integer.parseInt(type) == 5) { |
| | | list = baseMapper.getSecurityInfo(jurisdiction); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | |
| | | public User getUserInfo(String username) { |
| | | return baseMapper.getUserInfo(username); |
| | | } |
| | | |
| | | /** |
| | | * 生成二维码 |
| | | * @param data |
| | | * @param isCovered |
| | | * @param deptId |
| | | */ |
| | | @Override |
| | | public void importQrCode(List<QrCodeExcel> data, Boolean isCovered, String deptId) { |
| | | String url = QrcodeConfig.baseUrl + "securityInfo.html"; |
| | | //二维码生成 |
| | | data.forEach(qrCodeExcel -> { |
| | | if (null!=qrCodeExcel.getSecuritynumber()) { |
| | | String encoded = null; |
| | | try { |
| | | //中文字符串编码 |
| | | encoded = URLEncoder.encode(qrCodeExcel.getSecuritynumber(),"UTF-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | //url 拼接 |
| | | String content = url + "?securityNumber=" + encoded; |
| | | byte[] qrCodeImage = new byte[0]; |
| | | try { |
| | | //生成二维码字节流 |
| | | qrCodeImage = QRCodeUtil.getQRCodeImage(content, 350, 350); |
| | | } catch (WriterException e) { |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String path = "D:\\QrCode\\"; |
| | | FileOutputStream fileOutputStream = null; |
| | | try { |
| | | fileOutputStream = new FileOutputStream(path+qrCodeExcel.getSecuritynumber()+".png"); |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | try { |
| | | //图片下载到本地 |
| | | fileOutputStream.write(qrCodeImage,0,qrCodeImage.length); |
| | | fileOutputStream.flush(); |
| | | fileOutputStream.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | //头像生成 |
| | | 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(); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 根据用户账户查询用户是否存在 |
| | | * @param account |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Integer selectCountAccount(String account) { |
| | | return baseMapper.selectCountAccount(account); |
| | | } |
| | | |
| | | /** |
| | | * 保安员信息导出 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<SecurityExcel> exportSecurityInfo(UserVO user) { |
| | | return baseMapper.exportSecurityInfo(user); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 导入保安员(admin 专用) |
| | | * |
| | | * @param data |
| | | */ |
| | | @Override |
| | | 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 |
| | | 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()); |
| | | user.setDeptId(deptIds); |
| | | |
| | | //身份证校验 |
| | | if (null==user.getCardid() || user.getCardid().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.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); |
| | | 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().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 { |
| | | //如果是一致,则更新用户数据 |
| | | user2.setUpdateTime(new Date()); |
| | | //更新用户数据 |
| | | this.updateById(user2); |
| | | } |
| | | } |
| | | } |
| | | //批量插入 |
| | | //用户批量插入 |
| | | if (userList.size()>0) { |
| | | baseMapper.batchUserList(userList); |
| | | |
| | | //装换成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); |
| | | } |
| | | |
| | | //如果所有数据导入有一个异常 |
| | | 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()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | 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)); |
| | | } |
| | | |
| | | /** |
| | | * 6个月未登录人员,进行冻结 |
| | | */ |
| | | @Override |
| | | public void sixMonthNotLoginHandle() { |
| | | // 查询6个月未登录人员 |
| | | List<String> userIds = baseMapper.getMoreDayNotLoginUser(183); |
| | | // 统一冻结操作 |
| | | baseMapper.updateFreeze(userIds); |
| | | } |
| | | |
| | | /** |
| | | * 12个月未登录人员,进行注销 |
| | | */ |
| | | @Override |
| | | public void oneYearNotLoginHandle() { |
| | | // 查询12个月未登录人员 |
| | | List<String> userIds = baseMapper.getMoreDayNotLoginUser(366); |
| | | // 统一注销操作 |
| | | baseMapper.updateLogout(userIds); |
| | | } |
| | | |
| | | /** |
| | | * 判断用户是否存在(根据手机号) |
| | | * @param phone |
| | | * @return |
| | | */ |
| | | @Override |
| | | public UserInfo getUserByPhone(String phone) { |
| | | User user = baseMapper.getUserByPhone("000000", phone); |
| | | return buildUserInfo(user, UserEnum.WEB); |
| | | } |
| | | |
| | | /** |
| | | * 判断是否报名 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean getUserIsApply(Long id) { |
| | | User user = baseMapper.getUserIsApply(id); |
| | | if (null!=user){ |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 自定义查询详情信息 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public UserVO getUserDetailById(Long id) { |
| | | return baseMapper.getUserDetailById(id); |
| | | } |
| | | |
| | | /** |
| | | * 数据处理 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Object dataHandler() { |
| | | // 查询未关联的保安员 |
| | | List<User> list = baseMapper.getNotGlList(); |
| | | // 批量插入 |
| | | for (User user : list) { |
| | | UserDetailEntity detailEntity = new UserDetailEntity(); |
| | | detailEntity.setUserId(user.getId()); |
| | | userDetailService.save(detailEntity); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 微信注册用户,需要密码和手机号 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Boolean wxRegister(User user) { |
| | | User params = new User(); |
| | | params.setCardid(user.getCardid()); |
| | | //查看数据库是否有相同身份证号 |
| | | List<User> list = list(Condition.getQueryWrapper(params)); |
| | | if (list.size()>0){ |
| | | throw new ServiceException("该身份证号已注册"); |
| | | } |
| | | |
| | | //注册新用户 |
| | | user.setAccount(user.getPhone()); |
| | | |
| | | //微信注册角色 |
| | | user.setRoleId("1734015564173127681"); |
| | | //微信注册机构 |
| | | user.setDeptId("1734016112398020609"); |
| | | |
| | | user.setTenantId("000000"); |
| | | |
| | | if (StringUtil.isNotBlank(user.getRealName())){ |
| | | user.setName(user.getRealName()); |
| | | }else{ |
| | | user.setName("微信用户"+user.getPhone()); |
| | | user.setRealName("微信用户"+user.getPhone()); |
| | | } |
| | | boolean save = save(user); |
| | | return save; |
| | | } |
| | | |
| | | @Override |
| | | public UserInfoDetail getUserInfoDetail(String id) { |
| | | return baseMapper.getUserInfoDetail(id); |
| | | } |
| | | |
| | | @Override |
| | | public boolean batchAudit(String ids, String auditStatus) { |
| | | return baseMapper.batchAudit(ids,auditStatus); |
| | | } |
| | | |
| | | @Override |
| | | public void importSecurityPaperTime(List<UserCertificateExcel> data, Boolean isCovered, String deptId) { |
| | | //将不能导入的保安员账号存起来 |
| | | List<String> errorList = new ArrayList<>(); |
| | | |
| | | //导入状态,默认为true ,如果有一个出现问题则为 false |
| | | AtomicBoolean status = new AtomicBoolean(true); |
| | | AtomicBoolean securityInvalidStatus = new AtomicBoolean(true); |
| | | //遍历 |
| | | for (UserCertificateExcel userExcel : data) { |
| | | |
| | | //身份证校验 |
| | | if (null == userExcel.getCardid() || userExcel.getCardid().equals("")) { |
| | | throw new ServiceException("导入失败!身份证号码不能为空!"); |
| | | } |
| | | if (null != userExcel.getCardid() && !userExcel.getCardid().equals("")) { |
| | | //去除所有空格 |
| | | String cardid = userExcel.getCardid().replaceAll(" ", ""); |
| | | //校验 |
| | | boolean b = IdCardNoUtil.checkIdCardNo(cardid); |
| | | if (b) { |
| | | userExcel.setCardid(cardid); |
| | | } else { |
| | | //forEach 只能使用 return 跳出本次循环 |
| | | // return; |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | //根据身份证、保安证编号获取用户 |
| | | User userInfoByIdCardNo = baseMapper.getUserInfoByIdCardNoAndSecurityNumber(userExcel.getCardid(),userExcel.getSecuritynumber()); |
| | | |
| | | if (userInfoByIdCardNo == null){ |
| | | throw new ServiceException("导入失败!身份证号和保安证编号与系统不匹配!"); |
| | | } |
| | | |
| | | User user = new User(); |
| | | user.setId(userInfoByIdCardNo.getId()); |
| | | |
| | | if (!Strings.isBlank(userExcel.getPaperTime())) { |
| | | try { |
| | | user.setPaperTime(new SimpleDateFormat("yyyy-MM-dd").parse(userExcel.getPaperTime())); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | updateById(user); |
| | | |
| | | //如果所有数据导入有一个异常 |
| | | StringBuilder errorBuilder = new StringBuilder(); |
| | | if (!status.get()) { |
| | | String errorAccount = StringUtils.join(errorList, "\\\n"); |
| | | errorBuilder.append("用户:[" + errorAccount + "]导入失败!已在其他单位存在!"); |
| | | } |
| | | |
| | | //抛出异常 |
| | | if (errorBuilder.length() > 0) { |
| | | throw new ServiceException(errorBuilder.toString()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |