|  |  | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.concurrent.TimeUnit; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private MemberJoinMapper memberJoinMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private JkCabinetMapper jkCabinetMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private TrainTimeMapper trainTimeMapper; | 
 |  |  | 
 |  |  |  | 
 |  |  |     private Member initAddMemberModel(Member member, LoginUserInfo loginUserInfo) { | 
 |  |  |         Member insert=  new Member(); | 
 |  |  |         insert.setCreator(Objects.nonNull(loginUserInfo.getId())?loginUserInfo.getId():null); | 
 |  |  |         insert.setCreator(Objects.nonNull(loginUserInfo)?loginUserInfo.getId():null); | 
 |  |  |         insert.setCreateDate(new Date()); | 
 |  |  |         insert.setEditor(Objects.nonNull(loginUserInfo.getId())?loginUserInfo.getId():null); | 
 |  |  |         insert.setEditor(Objects.nonNull(loginUserInfo)?loginUserInfo.getId():null); | 
 |  |  |         insert.setEditDate(new Date()); | 
 |  |  |         insert.setHkOrgId(member.getHkOrgId()); | 
 |  |  |         insert.setIsdeleted(Constants.ZERO); | 
 |  |  | 
 |  |  |         insert.setCode(member.getCode()); | 
 |  |  |         insert.setType(Constants.TWO); | 
 |  |  |         insert.setHkDate(new Date()); | 
 |  |  |         insert.setDdId(member.getDdId()); | 
 |  |  |         insert.setErpId(member.getErpId()); | 
 |  |  |         insert.setWorkStatus(Constants.ZERO);//默认在职 | 
 |  |  |         insert.setCanVisit(Constants.ZERO);//默认不可访问 | 
 |  |  |         insert.setAuthStatus(Constants.ZERO); | 
 |  |  | 
 |  |  |                 queryWrapper.apply(" find_in_set('"+companySpecialId+"',REPLACE(t3.company_path,'/',',')) "); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if(null != member.getQueryAuth() && Constants.equalsInteger(member.getQueryAuth(),Constants.ONE)){ | 
 |  |  |             List<JkCabinet> jkCabinets = jkCabinetMapper.selectList(new QueryWrapper<JkCabinet>().lambda() | 
 |  |  |                     .eq(JkCabinet::getIsdeleted,Constants.ZERO) | 
 |  |  |                     .isNotNull(JkCabinet::getAuthMemberId) | 
 |  |  |             ); | 
 |  |  |             if(CollectionUtils.isNotEmpty(jkCabinets)){ | 
 |  |  |                 List<String> memberIdList = new ArrayList<>(); | 
 |  |  |                 List<String> authMemberId = jkCabinets.stream().map(i->i.getAuthMemberId()).collect(Collectors.toList()); | 
 |  |  |                 for (String s:authMemberId) { | 
 |  |  |                     memberIdList.addAll(Arrays.asList(s.split(","))) ; | 
 |  |  |                 } | 
 |  |  |                 queryWrapper.in(Member::getId,memberIdList); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         queryWrapper.eq(Member::getIsdeleted,Constants.ZERO); | 
 |  |  |         queryWrapper.eq(Member::getWorkStatus,Constants.ZERO); | 
 |  |  |         queryWrapper.orderByAsc(Member::getPinyin); | 
 |  |  | 
 |  |  |                 .eq(SystemUser::getDeleted,Constants.ZERO) | 
 |  |  |                 .last(" limit 1 ")); | 
 |  |  |         //非访客用户 进行判断是否存在用户 | 
 |  |  |         if(!Objects.isNull(user)){ | 
 |  |  |         if(Objects.isNull(user)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"您的账号暂未绑定系统,请联系管理员"); | 
 |  |  |         }else{ | 
 |  |  |             Member member = memberMapper.selectById(user.getMemberId()); | 
 |  |  |             if(member == null || member.getIsdeleted() == Constants.ONE){ | 
 |  |  |                 return; | 
 |  |  | //                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已删除,请联系管理员"); | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"账号绑定异常,请联系管理员"); | 
 |  |  |             } | 
 |  |  |             if(member.getStatus() != Constants.ZERO){ | 
 |  |  |                 return; | 
 |  |  | //                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已禁用,请联系管理员"); | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"您的账号已禁用,请联系管理员"); | 
 |  |  |             } | 
 |  |  |             if(StringUtils.isNotBlank(member.getIdcardNo())){ | 
 |  |  |                 member.setIdcardDecode(DESUtil.decrypt(Constants.EDS_PWD, member.getIdcardNo())); | 
 |  |  | 
 |  |  |         if(importing!=null && importing){ | 
 |  |  |             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,已存在员工导入任务正在执行中,请稍后再试!"); | 
 |  |  |         } | 
 |  |  |         redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_MEMBER,true); | 
 |  |  |         redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_MEMBER,true,30, TimeUnit.MINUTES); | 
 |  |  |         try { | 
 |  |  |             ExcelImporter ie = null; | 
 |  |  |             List<MemberImport> dataList =null; | 
 |  |  | 
 |  |  |     /** | 
 |  |  |      * 同步钉钉内部员工信息 | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public void syncDDUserInfo() throws ApiException { | 
 |  |  |         List<OapiV2UserGetResponse.UserGetResponse>  list = dingTalk.syncAllUserInfo(); | 
 |  |  |         if(CollectionUtils.isEmpty(list)){ | 
 |  |  | 
 |  |  |  | 
 |  |  |     private Member syncDDAddMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) { | 
 |  |  |         member.setCreateDate(new Date()); | 
 |  |  |         member.setErpId(deptGetResponse.getUserid()); | 
 |  |  |         member.setErpId(deptGetResponse.getUnionid()); | 
 |  |  |         member.setPhone(deptGetResponse.getMobile()); | 
 |  |  |         member.setName(deptGetResponse.getName()); | 
 |  |  |         member.setCode(deptGetResponse.getJobNumber()); | 
 |  |  |         member.setDdId(deptGetResponse.getUserid()); | 
 |  |  |         isMemberParamValidDetail(member,deptGetResponse.getDeptIdList()); | 
 |  |  |         //获取出生日期 | 
 |  |  |         //脱敏操作 | 
 |  |  | 
 |  |  |         if(Objects.nonNull(deptIdList)){ | 
 |  |  |             List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().lambda().in(Company::getErpId,deptIdList) | 
 |  |  |                     .eq(Company::getType,Constants.ONE).eq(Company::getIsdeleted,Constants.ZERO) | 
 |  |  |                     .isNotNull(Company::getHkId) | 
 |  |  | //                    .isNotNull(Company::getHkId) 暂时无法同步海康 先注释 | 
 |  |  |             ); | 
 |  |  |             if(CollectionUtils.isNotEmpty(companyList)){ | 
 |  |  |                 member.setHkOrgId(companyList.get(Constants.ZERO).getHkId()); | 
 |  |  | 
 |  |  |      | 
 |  |  |     public Member syncDDEditMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member updateMember) {  | 
 |  |  |         updateMember.setEditDate(new Date()); | 
 |  |  |         updateMember.setErpId(deptGetResponse.getUserid()); | 
 |  |  |         updateMember.setErpId(deptGetResponse.getUnionid()); | 
 |  |  |         updateMember.setPhone(deptGetResponse.getMobile()); | 
 |  |  |         updateMember.setName(deptGetResponse.getName()); | 
 |  |  |         updateMember.setCode(deptGetResponse.getJobNumber()); | 
 |  |  |         | 
 |  |  |         updateMember.setDdId(deptGetResponse.getUserid()); | 
 |  |  |         updateMember.setHkId(null); | 
 |  |  |         updateMember.setAuthStatus(Constants.ZERO); | 
 |  |  |         Boolean hkFlag = dealHkUserForUpdateBiz(updateMember); | 
 |  |  | 
 |  |  |                 .set(updateMember.getHkDate()!=null,Member::getHkDate,updateMember.getHkDate()) | 
 |  |  |                 .set(StringUtils.isNotBlank(updateMember.getRemark()),Member::getRemark,updateMember.getRemark()) | 
 |  |  |                 .set(StringUtils.isNotBlank(updateMember.getFaceImg()),Member::getFaceImg,updateMember.getFaceImg()) | 
 |  |  |                 .set(StringUtils.isNotBlank(updateMember.getDdId()),Member::getDdId,updateMember.getDdId()) | 
 |  |  |                 .set(updateMember.getFaceId()!=null,Member::getFaceId,updateMember.getFaceId()) | 
 |  |  |                 .set(updateMember.getCompanyId()!=null,Member::getCompanyId,updateMember.getCompanyId()) | 
 |  |  |                 .set(Member::getCode,updateMember.getCode()) | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void ddPushMemberInfo(String eventType, shade.com.alibaba.fastjson2.JSONObject eventData) throws ApiException { | 
 |  |  |         JSONArray jsonArray = eventData.getJSONArray("userId"); | 
 |  |  |         if(jsonArray.isEmpty()){ | 
 |  |  | 
 |  |  |             } | 
 |  |  |         }else if(eventType.equals("user_add_org")||eventType.equals("user_modify_org")){ | 
 |  |  |             for (int i = 0; i < jsonArray.size(); i++) { | 
 |  |  |                 OapiV2UserGetResponse.UserGetResponse userGetResponse =  dingTalk.syncUserInfo(jsonArray.getString(i)); | 
 |  |  |                 Member member  = memberMapper.selectOne(new QueryWrapper<Member>().lambda() | 
 |  |  |                         .eq(Member::getIsdeleted,Constants.ZERO) | 
 |  |  |                         .eq(Member::getErpId,jsonArray.getLong(i)) | 
 |  |  |                         .eq(Member::getErpId,userGetResponse.getUnionid()) | 
 |  |  |                         .last(" limit 1") | 
 |  |  |                 ); | 
 |  |  |                 OapiV2UserGetResponse.UserGetResponse deptGetResponse = dingTalk.syncUserInfo(jsonArray.getString(i)); | 
 |  |  |                 if(Objects.isNull(member)){ | 
 |  |  |                     getAddMemberModel(deptGetResponse,member); | 
 |  |  |                     member = new Member(); | 
 |  |  |                     getAddMemberModel(userGetResponse,member); | 
 |  |  |                 }else{ | 
 |  |  |                     getUpdateMemberModel(deptGetResponse,member); | 
 |  |  |                     getUpdateMemberModel(userGetResponse,member); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } |