2.1单点登录相关问题
EAS集成同步的逻辑是s-HR将需要同步的数据id直接写入EAS数据库,由EAS调用s-HR的接口进行身份认证和获取数据。
2.1.1 EAS进入”s-HR数据集成”界面直接报错
报错后,查看EAS的apusic日志,若日志中出现类似“sso access error:{"code":1,"message":"token不合法!"}”、“Method failed: HTTP/1.1 302 Found”等报错,一般是单点登录问题,排查s-HR中“单点登录配置”设置的密钥与EAS中配置文件“shrIntegradeEasConfig.properties”中设置的otp.domino.secret密钥是否一致。
若依然报错,则联系总部查看shrIntegratedEas_class.jar中的类LtpaTokenManager的generate方法使用的是哪个密钥。
2.1.2数据库连接异常
s-HR是通过直接连接EAS数据库的形式来写入数据,所以在EAS配置中填写数据库地址时一定要连接测试,若报“数据库连接异常”,首先在“EAS集成配置”中排查数据库地址、用户名等。
2.1.3 调用s-HR接口获取对应组织、职位或者员工信息时报302
(1)token已被使用
可能是有多个系统使用了同样的账号进行单点登录,比如都用了user账号,导致同一秒中并发登录时产生了相同的token,且被使用,因此eas集成会偶发失败的问题,可以查看t_bd_otptokenrecord表中的token验证记录。
2.2 组织同步相关问题
2.2.1 报异常MissingRecord:AdminOrgUnit或者MissingRecord:FullOrgUnit
这种异常一般是缺少提示中的上级行政组织,需要先同步这个提示中的组织后,再同步该组织。
1、打开eas查询分析器,使用select fouterid from t_shr_idmapping wherefinnerid='提示中的id' ;sql查询,找到fouterid字段值如:“R8nTMPLqRvC99Ah7RUPtysznrtQ=”;
2、再到s-HR的查询分析器中查看一下,这个id对应的组织是哪个,查询语句:select * from T_ORG_Admin where fid ='R8nTMPLqRvC99Ah7RUPtysznrtQ=',
3、查询到组织后,根据组织的编码名称后,到eas那边看看这个组织是否同步过来了,如果没有同步过来,则需要先同步依赖的这个组织,才能接着同步当前报错的数据。
2.2.2 报异常“该行政组织下存在未失效的职位或有人员存在,不能进行封存”
此异常为EAS检验:该行政组织下存在未失效的职位或有人员存在,不能进行封存。S-HR已经封存这个组织,说明s-HR中这个组织下的职位已经封存,职员已经没有在这个组织下,要么是接口 eas职位和职员未和s-HR同步,要么是eas那边手动新增了职位,或者职员在这个组织下。
需查询eas该组织下存在职位,职员,对这些职位、职员先进行处理在进行同步这个组织的封存。
2.2.3 报异常“该业务属性已经封存,不能再次封存”
此异常为EAS检验:该业务属性已经封存,不能再次封存!说明此前已经手动在eas对组织的行政组织属性进行了封存。
对于已经启用s-HR和eas集成接口的,组织的行政组织封存操作需要在s-HR进行,不要在eas操作。已经操作的造成这个同步异常的,可以用以下方式处理:
方式一:直接忽视不处理。集成页面选中该数据点击不处理;
方式二:在eas再次对这个组织的行政组织属性进行启用,然后再来同步集成的这个同步数据。让组织通过集成同步进行封存(推荐)。
2.2.4 报异常“该组织不是行政组织,不能封存该属性!”
此异常为EAS检验:该组织不是行政组织,不能封存该属性!在eas中这个组织没有勾选行政组织属性,在eas对这个组织勾选行政组织属性操作后,再同步。
2.2.5 报异常“该组织属性存在未封存的下级组织,不能封存其组织属性!”
此异常为EAS检验:该组织属性存在未封存的下级组织,不能封存其组织属性!在eas中该组织的下级组织属于启用的状态。
检查eas中该组织的下级组织中哪个下级组织的行政组织还没有封存,在集成同步界面列表数据中找这个下级组织,先同步封存。没有找到可以在s-HR组织页面找到这个组织,进行修订组织简称字段后保存(触发下级组织推送到eas),然后在到集成页面对这个下级组织进行同步封存先,先同步下级组织的封存操作,再同步这个组织即可。
2.2.6 报异常“行政组织****的法人代表不能为空”
此异常为EAS检验:eas要求法人代表不能为空,需在s-HR页面维护这个组织的的法人代表或者是不勾选为法人组织,再编辑保存触发同步。
2.2.7 报异常“具有编码[0101]的管理单元、组织单元或合并单元组已经存在,请重新指定一个编码!”
分析:
情况1:组织为管理单元,在启用集成后,手动在eas新建的
情况2:不是管理单元,在启用集成后,现场人为在eas新建组织
情况3:启用集成前,初始化时,未梳理好eas已存在组织和s-HR组织的编码对应关系
情况4:存在s-HR新建的组织和eas的组织编码重复,但不是一个组织(极少发生)
方案:
情况1、2、3处理方式:
1、在eas客户端查询分析器中,根据这个提示查找eas中0101的组织 。
select *from t_org_admin where fnumber='0101'
人工确认,这个组织是否是s-HR里的0101的组织,如果不是,则需要调整编码,以便s-HR中0101这个组织可以同步到eas;如果是一个组织,则取出这个查询结果中的fid字段值备用,然后按第2步操作;
2、在s-HR客户端查询分析器中查询0101的组织取fid字段值备用
select *from t_org_admin where fnumber='0101'
3、在s-HR客户端查询分析器中查询映射关系表( --finnerid:EAS 的 fid ;--fouterid:shr 的fid)
select * from t_shr_idmapping where finnerid='EAS的组织fid' or fouterid='s-HR的组织fid'
检查查询结果:
(1) 如果没有记录,则需要插入一条新的映射关系
insert into t_shr_idmapping(fouterid ,finnerid ,FBOSTYPE)
values ('s-HR的id' , 'EAS的id', 'CCE7AED4');
(2)如果有两条记录,则删除其中一条,并把另外一条的映射关系修改正确;
(3)如果只有一条,则修正映射关系正确即可;
情况4处理方式:需调整eas这个组织的编码或者s-HR的这个组织编码不能重复。
2.3 岗位同步相关问题
2.3.1 报异常“编码000367已经存在,不能重复”
分析:
情况1:在启用集成后,现场人为在eas新建岗位;
情况2:启用集成前,初始化时,未梳理好eas已存在岗位和s-HR岗位的编码对应关系;
情况3:存在s-HR新建的岗位和eas的岗位编码重复,但不是一个组织(极少发生);
方案:
情况1和情况2处理方式:
1、在eas客户端查询分析器中,根据这个提示查找eas中这个岗位 。
select *from t_org_position where fnumber='提示中的编码'
人工确认,这个岗位是否是s-HR里的000367的岗位 如果不是,则需要调整编码 以便s-HR中000367这个岗位可以同步到eas。如果是一个岗位,则取出这个查询结果中的fid字段值备用,然后按第2步操作;
2、在s-HR客户端查询分析器中查询000367的岗位取fid字段值备用
select *from t_org_position where fnumber='000367
3、在s-HR客户端查询分析器中查询映射关系表( --finnerid:EAS 的 fid ;--fouterid:shr 的fid)
select * from t_shr_idmapping where finnerid='EAS的岗位fid' or fouterid='s-HR的岗位fid'
检查查询结果:
(1)如果没有记录 则需要插入一条新的映射关系
insert into t_shr_idmapping(fouterid ,finnerid ,FBOSTYPE)
values ('s-HR的id' , 'EAS的id', '74AE612E');
(2)如果有两条记录,则删除其中一条,并把另外一条的映射关系修改正确;
(3)如果只有一条,则修正映射关系正确即可;
情况3处理方式:需调整eas这个岗位的编码或者s-HR的这个岗位编码不能重复。
2.3.2 报异常“MissingRecord:Position”
提示缺失职位。
打开eas查询分析器,使用select fouterid from t_shr_idmapping where finnerid='提示中的id';sql查询,找到fouterid字段值“fx/7k89YTqKZPJUPQHNhPXSuYS4=”;
再到s-HR的查询分析器中查看一下,这个id (fx/7k89YTqKZPJUPQHNhPXSuYS4=)对应的岗位,
查询语句:select* from T_ORG_Position where fid ='fx/7k89YTqKZPJUPQHNhPXSuYS4=',查询到岗位后,根据岗位的编码名称,到eas那边看看这个岗位是否同步过来了,如果没有同步过来,则要先同步依赖的这个岗位,才能接着同步当前报错的数据。
如下处理过程:
--1、根据报错fid 取fouterid --g33RyK4DQOewtpmAJlsj/3SuYS4= 到shr 查询相应信息
select *from t_shr_idmapping where finnerid in('g33RyK4DQOewtpmAJlsj/3SuYS4=')
--2 根据shr取到的编码信息查询eas这边这个岗位是否同步过来,两个步骤
-- 1)select *from t_org_position where fnumber='ZLGW454'
--查询为空就是eas还没有同步过来,即eas没有建立这个岗位,所以岗位下的人肯定同步不过来;
-- 2)检查mapping关系表有没有创建这个对应关系,取shr那边这个岗位的fid来查询mapping关系表 如下:
select * from t_shr_idmapping where fouterid='g33RyK4DQOewtpmAJlsj/3SuYS4=',如mapping关系表有创建这个对应关系,则检查这个关系是否正确,取finnerid 查询eas这边,检查发现对应关系有了,但eas这边还是没有数据,则在s-HR中编辑保存这个岗位信息,再到集成界面刷新下。
select *from t_org_position where fid='g33RyK4DQOewtpmAJlsj/3SuYS4='