|  |  |  | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  | import org.springframework.web.multipart.MultipartFile; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  | 
|---|
|  |  |  | // 生成密码 | 
|---|
|  |  |  | user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt)); | 
|---|
|  |  |  | user.setSalt(salt); | 
|---|
|  |  |  | user.setNeedChangePwd(Constants.ZERO); | 
|---|
|  |  |  | // 创建用户记录 | 
|---|
|  |  |  | user.setType(insert.getType()); | 
|---|
|  |  |  | user.setAvatar(insert.getFaceImg()); | 
|---|
|  |  |  | 
|---|
|  |  |  | insert.setCode(member.getCode()); | 
|---|
|  |  |  | insert.setType(Constants.TWO); | 
|---|
|  |  |  | insert.setHkDate(new Date()); | 
|---|
|  |  |  | insert.setWorkStatus(Constants.ONE);//默认在职 | 
|---|
|  |  |  | insert.setWorkStatus(Constants.ZERO);//默认在职 | 
|---|
|  |  |  | insert.setCanVisit(Constants.ZERO);//默认不可访问 | 
|---|
|  |  |  | insert.setAuthStatus(Constants.ZERO); | 
|---|
|  |  |  | insert.setName(member.getName()); | 
|---|
|  |  |  | insert.setHkId(UUID.randomUUID().toString().replace("-","")); | 
|---|
|  |  |  | insert.setHkStatus(Constants.ONE); | 
|---|
|  |  |  | insert.setSex(Constants.getSexByCardNo( member.getIdcardNo()));//根据身份证号获取性别 | 
|---|
|  |  |  | insert.setBirthday( DateUtil.fromStringToDate("yyyyMMdd",IdcardUtil.getBirthByIdCard(member.getIdcardNo()))); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(member.getIdcardNo())){ | 
|---|
|  |  |  | insert.setBirthday( DateUtil.fromStringToDate("yyyyMMdd",IdcardUtil.getBirthByIdCard(member.getIdcardNo()))); | 
|---|
|  |  |  | insert.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo()));//身份证号加密 | 
|---|
|  |  |  | insert.setIdcardDecode( Constants.getTuominStr(member.getIdcardNo())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | insert.setPhone(member.getPhone()); | 
|---|
|  |  |  | insert.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo()));//身份证号加密 | 
|---|
|  |  |  | insert.setIdcardDecode( Constants.getTuominStr(member.getIdcardNo())); | 
|---|
|  |  |  | insert.setStatus(Constants.ZERO); | 
|---|
|  |  |  | return  insert; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if (StringUtils.isNotBlank(member.getIdcardNo()) && !IdcardUtil.isValidCard(member.getIdcardNo())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证号格式有误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() | 
|---|
|  |  |  | .in(Member::getType,new Integer[]{Constants.ZERO,Constants.TWO}) | 
|---|
|  |  |  | .eq(Member::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo())) | 
|---|
|  |  |  | .eq(Member::getIsdeleted,Constants.ZERO)) >0){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "身份证号【"+member.getIdcardNo()+"】已被使用,不能重复"); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(member.getIdcardNo())){ | 
|---|
|  |  |  | if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() | 
|---|
|  |  |  | .in(Member::getType,new Integer[]{Constants.ZERO,Constants.TWO}) | 
|---|
|  |  |  | .eq(Member::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo())) | 
|---|
|  |  |  | .eq(Member::getIsdeleted,Constants.ZERO)) >0){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "身份证号【"+member.getIdcardNo()+"】已被使用,不能重复"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() | 
|---|
|  |  |  | .eq(Member::getPhone,  member.getPhone()) | 
|---|
|  |  |  | 
|---|
|  |  |  | if (PhoneUtil.isPhone(member.getPhone())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"电话号码格式有误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (IdcardUtil.isValidCard(member.getIdcardNo())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证号格式有误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (IdcardUtil.getGenderByIdCard(member.getIdcardNo()) == member.getSex()){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"性别有误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //获取出生日期 | 
|---|
|  |  |  | String birthByIdCard = IdcardUtil.getBirthByIdCard(member.getIdcardNo()); | 
|---|
|  |  |  | //脱敏操作 | 
|---|
|  |  |  | String hide = IdcardUtil.hide(member.getIdcardNo(), 5, 14); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //转换日期 | 
|---|
|  |  |  | Member insert = new Member(); | 
|---|
|  |  |  | insert.setCreator(loginUserInfo.getId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | insert.setImgurl(member.getImgurl()); | 
|---|
|  |  |  | insert.setType(Constants.ZERO); | 
|---|
|  |  |  | insert.setName(member.getName()); | 
|---|
|  |  |  | insert.setBirthday(DateUtil.fromStringToDate("yyyyMMdd",birthByIdCard)); | 
|---|
|  |  |  | insert.setPhone(member.getPhone()); | 
|---|
|  |  |  | insert.setIdcardNo(Utils.Secure.encryptString(member.getIdcardNo())); | 
|---|
|  |  |  | IdcardUtil.isValidCard(member.getIdcardNo()); | 
|---|
|  |  |  | insert.setIdcardDecode(hide); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(member.getIdcardNo())){ | 
|---|
|  |  |  | if (IdcardUtil.isValidCard(member.getIdcardNo())){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证号格式有误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (IdcardUtil.getGenderByIdCard(member.getIdcardNo()) == member.getSex()){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"性别有误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //获取出生日期 | 
|---|
|  |  |  | String birthByIdCard = IdcardUtil.getBirthByIdCard(member.getIdcardNo()); | 
|---|
|  |  |  | insert.setBirthday(DateUtil.fromStringToDate("yyyyMMdd",birthByIdCard)); | 
|---|
|  |  |  | insert.setIdcardNo(Utils.Secure.encryptString(member.getIdcardNo())); | 
|---|
|  |  |  | IdcardUtil.isValidCard(member.getIdcardNo()); | 
|---|
|  |  |  | //脱敏操作 | 
|---|
|  |  |  | String hide = IdcardUtil.hide(member.getIdcardNo(), 5, 14); | 
|---|
|  |  |  | insert.setIdcardDecode(hide); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | insert.setStatus(Constants.ZERO); | 
|---|
|  |  |  | insert.setParentId(member.getParentId()); | 
|---|
|  |  |  | memberMapper.insert(insert); | 
|---|
|  |  |  | 
|---|
|  |  |  | .set(updateMember.getFaceId()!=null,Member::getFaceId,updateMember.getFaceId()) | 
|---|
|  |  |  | .set(updateMember.getCompanyId()!=null,Member::getCompanyId,updateMember.getCompanyId()) | 
|---|
|  |  |  | .set(StringUtils.isNotBlank(updateMember.getCode()),Member::getCode,updateMember.getCode()) | 
|---|
|  |  |  | .set( updateMember.getPositionId()!=null,Member::getPositionId,updateMember.getPositionId()) | 
|---|
|  |  |  | .set( updateMember.getIsDangyuan()!=null,Member::getIsDangyuan,updateMember.getIsDangyuan()) | 
|---|
|  |  |  | .set( updateMember.getJobDate()!=null,Member::getJobDate,updateMember.getJobDate()) | 
|---|
|  |  |  | .set(StringUtils.isNotBlank(updateMember.getCode()),Member::getCode,updateMember.getCode()) | 
|---|
|  |  |  | .eq(Member::getId,updateMember.getId())); | 
|---|
|  |  |  | dealTrainTIme(updateMember,1,loginUserInfo); | 
|---|
|  |  |  | cancelAllMemberEmpower(updateMember,memberRoleMapper,empowerMapper); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Objects.nonNull(member.getCompanyType())){ | 
|---|
|  |  |  | queryWrapper.eq(Company::getType,member.getCompanyType()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isNotBlank(member.getCompanyTypes())){ | 
|---|
|  |  |  | queryWrapper.in(Company::getType,Arrays.asList(member.getCompanyTypes().split(","))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(null != member.getType()) { | 
|---|
|  |  |  | queryWrapper.eq(Member::getType,member.getType()); | 
|---|
|  |  |  | 
|---|
|  |  |  | queryWrapper.selectAs(Position::getName,Member::getPositionName); | 
|---|
|  |  |  | queryWrapper.leftJoin(Position.class,Position::getId,Member::getPositionId); | 
|---|
|  |  |  | queryWrapper.eq(Member::getType,pageWrap.getModel().getType()); | 
|---|
|  |  |  | LoginUserInfo userInfo =pageWrap.getModel().getLoginUserInfo(); | 
|---|
|  |  |  | if(userInfo!=null && userInfo.getCompanyIdList()!=null){ | 
|---|
|  |  |  | if( userInfo.getCompanyIdList().size() ==0){ | 
|---|
|  |  |  | //只能看自己 | 
|---|
|  |  |  | queryWrapper.eq(Member::getId,userInfo.getMemberId()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | queryWrapper.in(Company::getId,userInfo.getCompanyIdList()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        queryWrapper.eq(Objects.nonNull(model.getCompanyId()),Member::getCompanyId,model.getCompanyId()) | 
|---|
|  |  |  | queryWrapper.in(Objects.nonNull(pageWrap.getModel().getCompanyIds())&&pageWrap.getModel().getCompanyIds().size()>0, | 
|---|
|  |  |  | Member::getCompanyId,pageWrap.getModel().getCompanyIds()) | 
|---|
|  |  |  | 
|---|
|  |  |  | .eq(Objects.nonNull(pageWrap.getModel().getCanVisit()),Member::getCanVisit,pageWrap.getModel().getCanVisit()) | 
|---|
|  |  |  | .eq(Objects.nonNull(pageWrap.getModel().getStatus()),Member::getStatus,pageWrap.getModel().getStatus()) | 
|---|
|  |  |  | .eq(Objects.nonNull(pageWrap.getModel().getHkStatus()),Member::getHkStatus,pageWrap.getModel().getHkStatus()) | 
|---|
|  |  |  | .eq(Objects.nonNull(pageWrap.getModel().getWorkStatus()),Member::getWorkStatus,pageWrap.getModel().getWorkStatus()) | 
|---|
|  |  |  | .eq(Objects.isNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(Objects.nonNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,pageWrap.getModel().getIsdeleted()) | 
|---|
|  |  |  | .eq(Objects.nonNull(pageWrap.getModel().getCompanyType()),Company::getType,pageWrap.getModel().getCompanyType()) | 
|---|
|  |  |  | 
|---|
|  |  |  | .eq(StringUtils.isNotBlank(checkVisitedDTO.getName()),Member::getName,checkVisitedDTO.getName()) | 
|---|
|  |  |  | .eq(Member::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(Member::getStatus,Constants.ZERO) | 
|---|
|  |  |  | .eq(Member::getWorkStatus,Constants.ZERO) | 
|---|
|  |  |  | .eq(Member::getCanVisit,Constants.ONE) | 
|---|
|  |  |  | .eq(Member::getType,Constants.memberType.internal) | 
|---|
|  |  |  | .eq(Company::getType,Constants.ONE) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | List<MemberVO> memberVOList = new ArrayList<>(); | 
|---|
|  |  |  | if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)) { | 
|---|
|  |  |  | 
|---|
|  |  |  | ExcelImporter ie = null; | 
|---|
|  |  |  | List<MemberImport> dataList =null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | ie = new ExcelImporter(file,1,0); | 
|---|
|  |  |  | ie = new ExcelImporter(file,2,0); | 
|---|
|  |  |  | dataList = ie.getDataList(MemberImport.class,null); | 
|---|
|  |  |  | }  catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | 
|---|
|  |  |  | List<Member> newList = new ArrayList<>(); | 
|---|
|  |  |  | for(int i=0;i<dataList.size();i++){ | 
|---|
|  |  |  | MemberImport model = dataList.get(i); | 
|---|
|  |  |  | model.setPhone(ScientificNotationTUtil.convertToString(model.getPhone())); | 
|---|
|  |  |  | model.setIdcardNo(ScientificNotationTUtil.convertToString(model.getIdcardNo())); | 
|---|
|  |  |  | if(StringUtils.isBlank(model.getName()) | 
|---|
|  |  |  | &&StringUtils.isBlank(model.getIdcardNo()) | 
|---|
|  |  |  | &&StringUtils.isBlank(model.getPhone()) | 
|---|
|  |  |  | 
|---|
|  |  |  | ,List<Company> companyList | 
|---|
|  |  |  | ,Integer companyType) { | 
|---|
|  |  |  | if(StringUtils.isBlank(model.getName()) | 
|---|
|  |  |  | ||StringUtils.isBlank(model.getIdcardNo()) | 
|---|
|  |  |  | //                ||StringUtils.isBlank(model.getIdcardNo()) | 
|---|
|  |  |  | ||StringUtils.isBlank(model.getPhone()) | 
|---|
|  |  |  | ||StringUtils.isBlank(model.getCompanyName())){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行人员信息不完整,请检查表格内容!"); | 
|---|
|  |  |  | 
|---|
|  |  |  | if (!PhoneUtil.isPhone(model.getPhone())){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行手机号【"+model.getPhone()+"】格式不正确,请检查表格内容!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if ( !isDebug && !IdcardUtil.isValidCard(model.getIdcardNo())){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行身份证号【"+model.getIdcardNo()+"】格式不正确,请检查表格内容!"); | 
|---|
|  |  |  | if(model.getPhone().indexOf(".")>=Constants.ZERO){ | 
|---|
|  |  |  | model.setPhone( | 
|---|
|  |  |  | String.valueOf(new BigDecimal(model.getPhone()).intValue()) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isNotBlank(model.getIdcardNo())){ | 
|---|
|  |  |  | if ( !isDebug && !IdcardUtil.isValidCard(model.getIdcardNo())){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行身份证号【"+model.getIdcardNo()+"】格式不正确,请检查表格内容!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for(Member member: newList){ | 
|---|
|  |  |  | if(StringUtils.equals(model.getIdcardNo(),member.getIdcardNo())){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行身份证号【"+model.getIdcardNo()+"】重复出现,请检查表格内容!"); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(model.getIdcardNo())&&StringUtils.isNotBlank(member.getIdcardNo())) { | 
|---|
|  |  |  | if (StringUtils.equals(model.getIdcardNo(), member.getIdcardNo())) { | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,第" + (index + 3) + "行身份证号【" + model.getIdcardNo() + "】重复出现,请检查表格内容!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.equals(model.getPhone(),member.getPhone())){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行手机号【"+model.getPhone()+"】重复出现,请检查表格内容!"); | 
|---|
|  |  |  | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行组织名称【"+model.getCompanyName()+"】类型不正确,请检查表格内容!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String candNo = DESUtil.encrypt(Constants.EDS_PWD, model.getIdcardNo()); | 
|---|
|  |  |  | if(findMemberFromListByIdcard(candNo,memberList ) !=null){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行身份证号【"+model.getIdcardNo()+"】已存在,请检查表格内容!"); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(model.getIdcardNo())){ | 
|---|
|  |  |  | if(findMemberFromListByIdcard(candNo,memberList ) !=null){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行身份证号【"+model.getIdcardNo()+"】已存在,请检查表格内容!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(findMemberFromListByPhone(model.getPhone(),memberList ) !=null){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行手机号【"+model.getPhone()+"】已存在,请检查表格内容!"); | 
|---|
|  |  |  | } | 
|---|