| | |
| | | |
| | | import cn.hutool.core.util.IdcardUtil; |
| | | import cn.hutool.core.util.PhoneUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.TypeReference; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | import com.doumee.core.haikang.model.param.respose.UserAddResponse; |
| | | import com.doumee.core.haikang.model.param.respose.UserDelResponse; |
| | | import com.doumee.core.haikang.service.HKService; |
| | | import com.doumee.core.jiandaoyun.api.arch.DeptApiClient; |
| | | import com.doumee.core.jiandaoyun.constants.HttpConstant; |
| | | import com.doumee.core.jiandaoyun.model.dept.DeptEntityModel; |
| | | import com.doumee.core.jiandaoyun.model.user.UserEntityModel; |
| | | import com.doumee.dao.web.response.DDAuthorizeVO; |
| | | import com.doumee.service.business.third.TmsService; |
| | | import com.doumee.service.business.third.model.LoginUserInfo; |
| | |
| | | Member member=new Member(); |
| | | member.setId(id); |
| | | member.setIsdeleted(Constants.ONE); |
| | | member.setEditor(loginUserInfo.getId()); |
| | | member.setEditor(loginUserInfo!=null?loginUserInfo.getId():null); |
| | | member.setEditDate(date); |
| | | member.setHkStatus(Constants.ZERO); |
| | | member.setRemark("人员已删除,等待删除门禁权限"); |
| | |
| | | * 同步钉钉内部员工信息 |
| | | */ |
| | | @Override |
| | | public void syncDDUserInfo() throws ApiException { |
| | | public void syncDDUserInfo(){ |
| | | try { |
| | | List<OapiV2UserGetResponse.UserGetResponse> list = dingTalk.syncAllUserInfo(); |
| | | if(CollectionUtils.isEmpty(list)){ |
| | | return; |
| | |
| | | if(delIds.size()>0){ |
| | | syncDelMember(delIds); |
| | | } |
| | | }catch (Exception e){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"同步钉钉人员信息异常!"); |
| | | } |
| | | |
| | | |
| | | } |
| | | @Override |
| | | public String syncJdyUserInfo() { |
| | | DeptApiClient deptApiClient = new DeptApiClient(HttpConstant.API_KEY, HttpConstant.HOST); |
| | | try { |
| | | Map<String, Object> result = deptApiClient.deptMemberList(1,true,deptApiClient.getDefaultVersion()); |
| | | if(result!=null && result.get("users")!=null ){ |
| | | TypeReference<List<UserEntityModel>> typeReference = new TypeReference<List<UserEntityModel>>(){}; |
| | | Object obj = result.get("users"); |
| | | List<UserEntityModel> list = com.alibaba.fastjson.JSONObject.parseObject(JSON.toJSONString(obj), typeReference.getType()); |
| | | if(list !=null && list.size()>0){ |
| | | List<Member> addList = new ArrayList<>(); |
| | | List<Member> updateList = new ArrayList<>(); |
| | | List<String> delIds = new ArrayList<>();//修改为使用钉钉id erpId |
| | | List<Member> allList = memberMapper.selectList(new QueryWrapper<Member>().lambda() |
| | | .eq(Member::getIsdeleted,Constants.ZERO) |
| | | .eq(Member::getType,Constants.TWO)); |
| | | dealMemberChangeListJdy(list,addList,updateList,delIds,allList); |
| | | if(delIds.size()>0){ |
| | | syncDelMember(delIds); |
| | | } |
| | | return "同步数据:新增【"+addList.size()+"】条,更新【"+updateList.size()+"】条,删除【"+delIds.size()+"】条"; |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "同步钉钉数据为空!"); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "同步数据异常!"); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | private void syncDelMember(List<String> delIds) { |
| | |
| | | } |
| | | } |
| | | } |
| | | private void dealMemberChangeListJdy(List<UserEntityModel> list, List<Member> addList, List<Member> updateList, List<String> delIds, List<Member> allList) { |
| | | Date date = new Date(); |
| | | for(UserEntityModel respone : list){ |
| | | //根据erpid查询企业信息,判断是新增还是更新 |
| | | Member param = new Member(); |
| | | param.setErpId(respone.getUsername()); |
| | | param.setName(respone.getName()); |
| | | param.setDdId(respone.getIntegrate_id()); |
| | | param.setCompanyIdList(respone.getDepartments()); |
| | | Member member = findMemberByERPId(allList,respone.getUsername()); |
| | | if(member == null){ |
| | | //如果是新增 |
| | | //封装新增组织对象数据 |
| | | addList.add(syncDDAddMemberModel(param,new Member())); |
| | | }else{ |
| | | updateList.add(syncDDEditMemberModel(param,member)); |
| | | } |
| | | } |
| | | if(allList!=null && allList.size()>0){ |
| | | for(Member m : allList){ |
| | | if(!isMemberDeletedJdy(m,list)){ |
| | | delIds.add(m.getErpId()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private Member getAddMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) { |
| | | return syncDDAddMemberModel(deptGetResponse,member); |
| | | Member param = new Member(); |
| | | param.setErpId(deptGetResponse.getUnionid()); |
| | | param.setPhone(deptGetResponse.getMobile()); |
| | | param.setName(deptGetResponse.getName()); |
| | | param.setCode(deptGetResponse.getJobNumber()); |
| | | param.setDdId(deptGetResponse.getUserid()); |
| | | param.setCompanyIdList(deptGetResponse.getDeptIdList()); |
| | | return syncDDAddMemberModel(param,member); |
| | | } |
| | | |
| | | |
| | | private Member getUpdateMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) { |
| | | return syncDDEditMemberModel(deptGetResponse,member); |
| | | Member param = new Member(); |
| | | param.setErpId(deptGetResponse.getUnionid()); |
| | | param.setPhone(deptGetResponse.getMobile()); |
| | | param.setName(deptGetResponse.getName()); |
| | | param.setCode(deptGetResponse.getJobNumber()); |
| | | param.setDdId(deptGetResponse.getUserid()); |
| | | param.setCompanyIdList(deptGetResponse.getDeptIdList()); |
| | | return syncDDEditMemberModel(param,member); |
| | | } |
| | | |
| | | |
| | | private Member syncDDAddMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) { |
| | | private Member syncDDAddMemberModel(Member deptGetResponse,Member member) { |
| | | member.setCreateDate(new Date()); |
| | | member.setErpId(deptGetResponse.getUnionid()); |
| | | member.setPhone(deptGetResponse.getMobile()); |
| | | member.setErpId(deptGetResponse.getErpId()); |
| | | member.setPhone(deptGetResponse.getPhone()); |
| | | member.setName(deptGetResponse.getName()); |
| | | member.setCode(deptGetResponse.getJobNumber()); |
| | | member.setDdId(deptGetResponse.getUserid()); |
| | | isMemberParamValidDetail(member,deptGetResponse.getDeptIdList()); |
| | | member.setCode(deptGetResponse.getCode()); |
| | | member.setDdId(deptGetResponse.getDdId()); |
| | | isMemberParamValidDetail(member,deptGetResponse.getCompanyIdList()); |
| | | //获取出生日期 |
| | | //脱敏操作 |
| | | Member insert = initAddMemberModel(member,null); |
| | |
| | | } |
| | | member.setCompanyType(Constants.ONE); |
| | | SystemUser queryUserDto = new SystemUser(); |
| | | queryUserDto.setUsername(member.getPhone()); |
| | | queryUserDto.setUsername(StringUtils.defaultString(member.getPhone(),member.getErpId())); |
| | | queryUserDto.setDeleted(Boolean.FALSE); |
| | | SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1")); |
| | | if (user != null) { |
| | |
| | | } |
| | | } |
| | | |
| | | public Member syncDDEditMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member updateMember) { |
| | | public Member syncDDEditMemberModel(Member deptGetResponse1,Member updateMember) { |
| | | updateMember.setEditDate(new Date()); |
| | | updateMember.setErpId(deptGetResponse.getUnionid()); |
| | | updateMember.setPhone(deptGetResponse.getMobile()); |
| | | updateMember.setName(deptGetResponse.getName()); |
| | | updateMember.setCode(deptGetResponse.getJobNumber()); |
| | | updateMember.setDdId(deptGetResponse.getUserid()); |
| | | // updateMember.setErpId(deptGetResponse.getErpId()); |
| | | // updateMember.setPhone(deptGetResponse.getPhone()); |
| | | // updateMember.setName(deptGetResponse.getName()); |
| | | // updateMember.setCode(deptGetResponse.getCode()); |
| | | // updateMember.setDdId(deptGetResponse.getDdId()); |
| | | updateMember.setHkId(null); |
| | | updateMember.setAuthStatus(Constants.ZERO); |
| | | Boolean hkFlag = dealHkUserForUpdateBiz(updateMember); |
| | |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | private boolean isMemberDeletedJdy(Member member, List<UserEntityModel> list) { |
| | | for(UserEntityModel m : list){ |
| | | if(StringUtils.equals(m.getUsername(),member.getErpId())){ |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public void ddPushMemberInfo(String eventType, shade.com.alibaba.fastjson2.JSONObject eventData) throws ApiException { |