组织同步前提条件:EAS组织必须是行政组织,才能与云之家同步。新增组织:EAS组织是正常状态。上传数据为组织长名称,云之家会按照上传的组织长名称的层级,建立云之家的多级组织。删除组织:EAS组织是封存状态,且已与云之家组织映射。映射关系:EAS组织长名称与云之家一致。(若组织未绑定,会导致后续人员、部门负责人等接口出现问题,必须优先解决)
排查数据脚本:文件名:EAS组织表selecto.FNAME_L2,o.FISADMINORGUNIT,o.FISSEALUP ,o.FISFREEZE from T_ORG_ADMIN o where fname_l2 LIKE '%部门名称%' ;文件名:组织关联中间表select* from T_PM_EASXTORGMAP whereforglongname LIKE '%部门名称%' ;文件名:云之家组织数据select* from T_XT_ORG where forglongname LIKE '%部门名称%' ;文件名:同步组织日志select* from T_XT_SYNCDEPTLOG wherefoldorglongname LIKE '%部门名称%' ;
人员同步前提条件:必须是有职位的职员,才能与云之家同步。新增人员:Ø 状态为正常、试用、返聘员工(职员表t_bd_person的FEmployeeTypeID对应T_HR_BDEmployeeType表中的FinService等于1或者4);Ø 关联用户的职员:职员未禁用(T_BD_Person中职员禁用状态FDELETEDSTATUS =1) 、用户未删除(EAS用户表T_PM_USER中用户删除FIsDelete= 0);Ø 未关联用户的职员:职员未禁用(T_BD_Person中职员禁用状态FDELETEDSTATUS =1)。Ø 手机或者邮箱正常。(不为空,不重复)Ø 与云之家未绑定。(T_PM_EASXTUSERMAP中FXtId为空)必须满足以上所有条件才能上传云之家。映射关系:EAS人员与云之家人员的手机号及姓名一致,则建立映射关系。若手机号码为空,则会按照邮箱一致绑定。每次同步都会根据最新的手机、邮箱关系更新关联关系。若手机和邮箱都为空,则可以通过更新中间表方式,手工建立绑定关系。(若人员未绑定,会导致后续上级、兼职等接口出现问题,必须优先解决)
无关联用户的职员或者一个职员对应一个用户,此情况只对应一个云之家用户;若一个职员关联了N个用户,则云之家用户会生成N个,需特别注意。手机号码获取规则如下:手机号码获取规则变化:有关联用户的职员,优先从用户获取手机,用户手机为空则获取职员手机;无关联用户的职员,获取职员手机。邮箱获取规则变化:有关联用户的职员,优先从用户获取邮箱,用户邮箱为空则获取职员邮箱;无关联用户的职员,获取职员邮箱。修改手机号码建议直接修改用户的手机。
删除人员:前提条件已与云之家绑定(T_PM_EASXTUSERMAP中FXtId不为空)Ø 状态不是正常、试用、返聘员工(职员表t_bd_person的FEmployeeTypeID对应T_HR_BDEmployeeType表中的FinService不等于1和4);Ø 职员禁用(T_BD_Person中职员禁用状态FDELETEDSTATUS =2) Ø 用户删除(EAS用户表T_PM_USER中用户删除FIsDelete=1)。满足以上3个条件任意其一,则删除云之家人员。(T_PM_EASXTUSERMAP的同步状态设置为离职,Fstatus=0)
检查HR的用工状态是否符合同步规则:select h.FINSERVICE ,h.* from T_HR_BDEmployeeType h;排查数据脚本文件名:EAS职员表有关联用户的职员:select h.FNAME_L2 ,h.FINSERVICE,p.fNAME_L2,p.FDELETEDSTATUS,p.FCELL,p.FEMAIL,u.FIsDelete,u.FFORBIDDEN ,u.FCELL,u.FEMAIL from T_BD_PERSONp,T_HR_BDEmployeeType h, T_PM_USER u whereu.FPERSONID=p.fid and p.FEMPLOYEETYPEID =h.fid and p.fname_L2 LIKE '%人员名称%' ;无关联用户的职员:select h.FNAME_L2 ,h.FINSERVICE,p.fNAME_L2,p.FDELETEDSTATUS ,p.FCELL,p.FEMAIL from T_BD_PERSONp,T_HR_BDEmployeeType h where p.FEMPLOYEETYPEID =h.fid and p.fname_L2 LIKE '%人员名称%' ;文件名:人员关联中间表select* from T_PM_EASXTUSERMAP wherefpersonname LIKE '%人员名称%';文件名:云之家人员数据select* from T_XT_USER where fpersonname LIKE '%人员名称%';文件名:同步人员日志select* from T_XT_SYNCPERSONLOG wherefpersonname LIKE '%人员名称%';
部门负责人同步部门负责人同步,必须组织、人员都已与云之家建立绑定关系。
部门负责人为某组织的负责人岗位包含的职员。
文件名:EAS部门负责人信息selectp.fname_L2,pos.fname_l2,org.fname_L2,org.FDISPLAYNAME_L2 from T_ORG_Positionpos,T_ORG_ADMIN org,T_ORG_PositionMember pm,T_BD_PERSON p where pos.FADMINORGUNITID = org.FID and p.fid = pm.FPERSONID and pm.FPOSITIONID =pos.fID and pos.FISRESPPOSITION= 1 and org.FNAME_L2 LIKE '%部门名称%'文件名:部门负责人关联中间表select* from T_PM_EASXTORGLEADER where forglongname LIKE '%部门名称%'文件名:云之家部门负责人数据select* from T_XT_ORGLEADER where forglongname LIKE '%部门名称%';文件名:同步负责人日志select* from T_XT_SYNCORGLEADERLOG where forglongname LIKE '%部门名称%';
兼职同步兼职同步,必须组织、人员都已与云之家建立绑定关系。
兼职信息为该人的非主职位及所在组织信息。
文件名:人员职位信息selectp.fname_L2,org.fname_L2,org.FDISPLAYNAME_L2,pos.fname_l2,pm.FISPRIMARY from T_ORG_Position pos,T_ORG_ADMINorg,T_ORG_PositionMember pm,T_BD_PERSONp where pos.FADMINORGUNITID = org.FID and p.fid = pm.FPERSONID and pm.FPOSITIONID =pos.fID and p.fname_L2 LIKE '%人员名称%'文件名:兼职关联中间表select* from T_PM_EASXTPARTMAP where fjobtitle LIKE '%兼职名称%' 文件名:云之家兼职数据select* from T_XT_PART where fjobtitle LIKE '%兼职名称%' 文件名:同步兼职日志select* from T_XT_SYNCPARTLOG where fjobtitle LIKE '%兼职名称%'文件名:云之家人员数据select* from T_PM_EASXTUSERMAP where fpersonname LIKE '%人员姓名%' 文件名:云之家组织数据select* from T_XT_ORG where fname LIKE '%组织名称%'
上级同步上级同步,必须人员都已与云之家建立绑定关系。
上级为该人的上级岗位中所包含的职员。
【历史数据处理】补丁部署时A. 若之前有使用旧同步工具,请先把旧工具的文件从对应路径下删除掉(删除旧文件参考旧同步工具包中的部署文档);若配置后台事务,也需要在后台事务删除掉:a、进入系统平台->后台事务->后台事务定义找到同步任务,找到任务为oneKeyBinding的同步事项删除掉。 b、进入系统平台->后台事务->后台事务定义表 找到对应任务,把任务禁用。 B. 历史留存的数据,会影响到人员新增、离职等。可在安装新补丁包后,执行以下语句:删除人员中间表 DELETE FROM T_PM_EASXTUSERMAP 删除组织中间表DELETE FROM T_PM_EASXTORGMAP注:第一次部署同步工具,避免之前遗留的垃圾数据存在影响,可做同步工具初始化操作。 C. 若云之家的组织存在问题或云之家遗留了大量的离职人员,建议在云之家执行组织初始化。
根据同步结果,处理历史数据带来的影响,经常出现的情况如下:组织同步问题(组织一定要绑定成功,不然会影响人员数据同步):1) 新增组织项目中,总是出现组织未绑定的同步记录。从页面看,云之家和EAS组织名称是一样的。解决方法:EAS组织名称创建时,多建了一个空格,导致跟云之家的组织名称不一致,无法绑定成功,需要把多出空格的组织名称修改正确。2) 组织不支持下划线格式和斜杠格式的组织名称上传,例如“aaa_bbbb”、“aaa\bbbb”。这种名称,上传时同步工具会截断名称,导致出错。3) 其他问题,请看论坛中的案例分析。人员同步问题(正常人员一定要绑定成功,不然会影响部门负责人、兼职、上级等接口同步):1) 检查HR的用工状态是否符合同步规则:select h.FINSERVICE ,h.* from T_HR_BDEmployeeType h需上传用工状态类型必须为1或者4.2) 在云之家管理中心页面,未分配中存在大量人员,需要处理:a、 工作圈组织根目录下的人员需要特别关注,这些人员多为高层领导,需要手工移动过去。(删除兼职,然后移动到根目录下)b、 剩余的人员多为离职或更换过手机号码的人员,可全部删除。c、 处理完成后,再执行一次全量同步,未分配中不会再有人员。3) 新增人员中,总是出现未绑定的人员。解决方法:在云之家管理中心页面,对应的组织下查找该人员,与EAS的手机、邮箱对比。人员绑定的逻辑是:优先对比手机号码,若一致则绑定。若手机号码为空,则对比邮箱,邮箱一致则绑定。经常出现的现象有:1、云之家中的人员只有邮箱,但EAS人员有手机、邮箱。原因:之前只有邮箱的时候就上传了,补齐EAS手机,但是再上传更新不了手机。操作方法:删除云之家的人员,去掉EAS人员的邮箱,再上传。2、对应组织下有该人,但从云之家获取的手机不一致。原因:EAS手机成了该人员的副账号。下载时只会获取主账号,导致无法绑定。操作方法:找云之家支持人员解决。或者云之家中把主账号改为该手机,再同步即可。3、新增人员出现失败的数据。操作方法:在同步日志中,都有原因说明。若手机号码不规范,则修改手机号码;邮箱不规范修改邮箱。有种特别现象,是手机末尾多出一空格,看着一样,其实已经是12位。这个要修改。4) 更新人员辅助信息总是在重复上传。原因:更新的信息,云之家未更新修改时间。操作方法:在数据查看页面,执行数据更新操作,再执行快速同步就不会出现了。5) 更新人员组织总是在重复上传。操作方法:组织上传有问题,需先解决组织上传问题。6) 其他问题,请持续关注论坛更新。
【典型案例分析】云之家中人员是正常的,EAS中人员已离职,如何通过同步工具删除云之家的数据?1、 新增离职人员到中间表。insertinto T_PM_EASXTUSERMAP(FID,FPersonId,FUserId,FXtId,FPersonName,FCell,FOrgLongName,FPosition,FEmail,FUserNumber,FUserName,FForbidden,FIsDelete,FAgentUser,FcreateTime)select newbosid('F4AF4F04') FID,p.fidFPersonId,u.fid FUserId,null FXtId,LTRIM(RTRIM(p.FName_l2)) FPersonName, casewhen(u.FID is null) then RTRIM(p.FCell) else RTRIM(u.FCell) end FCell,case whenCHARINDEX('_',org.fdisplayname_l2) > 0 then to_char(REPLACE(SUBSTRING(org.fdisplayname_l2,CHARINDEX('_',org.fdisplayname_l2)+1,length(org.fdisplayname_l2)),'_', '\')) else to_char('\') endFOrgLongName,pos.FName_l2 FPosition,case when(u.FID is null) thenRTRIM(p.FEmail) else RTRIM(u.FEmail) end FEmail,u.FNumberFUserNumber,u.FName_l2 FUserName,u.FForbidden,case when(u.FID is null) then(case when(p.FDeletedStatus = 1) then 0 else 1 end) else u.FIsDelete endFIsDelete,u.FAgentUser,now() createtime from t_bd_person p left outer joint_pm_user u on u.fpersonid = p.fid left outer join T_HR_BDEmployeeType empTypeON p.FEmployeeTypeID = empType.FID left outer join t_org_positionmember opm onopm.FPERSONID = p.FID LEFT OUTER JOIN T_org_position pos on opm.FPOSITIONID =pos.fid left outer join t_org_admin org ON pos.fadminorgunitid = org.fid where notexists(select FPersonId from T_PM_EASXTUSERMAP easxt where (casewhen(easxt.fuserid is not null) then easxt.fuserid else easxt.fpersonid end) =(case when(u.fid is not null) then u.fid else p.fid end))2、关联云之家IDupdate t_pm_easxtusermap set fxtid =(select xt.fid from t_xt_user xt where xt.fcell is not null and(t_pm_easxtusermap.fxtid = '' or t_pm_easxtusermap.fxtid is null or(t_pm_easxtusermap.fxtid != xt.fid and t_pm_easxtusermap.fxtid is not null))and xt.fcell=t_pm_easxtusermap.fcell and xt.fcell not in (select fcell FROMt_xt_user group by fcell having count(fcell) >= 2 and fcell is not null)) where exists(selectxt.fid from t_xt_user xt where xt.fcell is not null and(t_pm_easxtusermap.fxtid = '' or t_pm_easxtusermap.fxtid is null or(t_pm_easxtusermap.fxtid != xt.fid and t_pm_easxtusermap.fxtid is not null))and xt.fcell=t_pm_easxtusermap.fcell and xt.fcell not in (select fcell FROMt_xt_user group by fcell having count(fcell) >= 2 and fcell is not null))3、执行同步。
推荐阅读