This commit is contained in:
Marsway 2026-03-26 11:50:56 +08:00
parent c291a02a89
commit e3dfec1b4b
1 changed files with 13 additions and 0 deletions

View File

@ -149,6 +149,8 @@ def _extract_staff_code(staff_profile: dict[str, Any]) -> str:
return str(
staff_profile.get("staffCode")
or staff_profile.get("StaffCode")
or staff_profile.get("code")
or staff_profile.get("Code")
or staff_profile.get("employeeNo")
or ""
).strip()
@ -720,6 +722,17 @@ class SyncEhrToOaFormJob(BaseJob):
manager = _prefer_non_empty(manager, _cell_value(existing_field_map.get(display_to_code["汇报人"])))
hrbp_show = _prefer_non_empty(hrbp_show, _cell_show_value(existing_field_map.get(display_to_code["HRBP"])))
manager_show = _prefer_non_empty(manager_show, _cell_show_value(existing_field_map.get(display_to_code["汇报人"])))
# HRBP/汇报人强制走“EHR userId -> 工号 -> OA memberId”链路
# 不再回退旧值,避免把历史错误的 EHR userId 继续写回 OA 成员字段。
if not hrbp and verbose_trace:
logger.warning("HRBP 映射为空job_no=%s hrbp_uid=%s hrbp_code=%s", job_no, hrbp_uid, hrbp_code)
if not manager and verbose_trace:
logger.warning("汇报人映射为空job_no=%s manager_uid=%s manager_code=%s", job_no, manager_uid, manager_code)
# 重新覆盖,取消上面的旧值回退效果
hrbp = str(hrbp_member.get("id") or "")
manager = str(manager_member.get("id") or "")
hrbp_show = str(hrbp_member.get("name") or hrbp_code)
manager_show = str(manager_member.get("name") or manager_code)
is_leaving = _prefer_non_empty(is_leaving, _cell_value(existing_field_map.get(display_to_code["在离职"])))
domain_account = _prefer_non_empty(domain_account, _cell_value(existing_field_map.get(display_to_code["域账号"])))