update
This commit is contained in:
parent
e3dfec1b4b
commit
2e55fd43ca
|
|
@ -146,14 +146,25 @@ def _extract_reporting_user_id(staff_profile: dict[str, Any]) -> int:
|
|||
def _extract_staff_code(staff_profile: dict[str, Any]) -> str:
|
||||
if not isinstance(staff_profile, dict):
|
||||
return ""
|
||||
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()
|
||||
for key in (
|
||||
"staffCode",
|
||||
"StaffCode",
|
||||
"code",
|
||||
"Code",
|
||||
"jobNumber",
|
||||
"JobNumber",
|
||||
"employeeNo",
|
||||
"EmployeeNo",
|
||||
):
|
||||
val = str(staff_profile.get(key) or "").strip()
|
||||
if val:
|
||||
return val
|
||||
lower_map = {str(k).lower(): v for k, v in staff_profile.items()}
|
||||
for key in ("staffcode", "code", "jobnumber", "employeeno"):
|
||||
val = str(lower_map.get(key) or "").strip()
|
||||
if val:
|
||||
return val
|
||||
return ""
|
||||
|
||||
|
||||
def _pick_best_member_by_code(members: list[dict[str, Any]]) -> dict[str, Any] | None:
|
||||
|
|
@ -470,6 +481,8 @@ class SyncEhrToOaFormJob(BaseJob):
|
|||
hrbp = str(hrbp_member.get("id") or "")
|
||||
hrbp_show = str(hrbp_member.get("name") or hrbp_code)
|
||||
manager_uid = _extract_reporting_user_id(staff_profile_by_user_id.get(user_id, {}))
|
||||
if manager_uid <= 0:
|
||||
manager_uid = _to_int_safe(rec.get("pOIdEmpAdmin"))
|
||||
manager_code = str(user_id_to_staff_code.get(manager_uid) or "")
|
||||
manager_member = code_to_member.get(manager_code, {})
|
||||
manager = str(manager_member.get("id") or "")
|
||||
|
|
@ -703,6 +716,8 @@ class SyncEhrToOaFormJob(BaseJob):
|
|||
hrbp = str(hrbp_member.get("id") or "")
|
||||
hrbp_show = str(hrbp_member.get("name") or hrbp_code)
|
||||
manager_uid = _extract_reporting_user_id(staff_profile_by_user_id.get(user_id, {}))
|
||||
if manager_uid <= 0:
|
||||
manager_uid = _to_int_safe(rec.get("pOIdEmpAdmin"))
|
||||
manager_code = str(user_id_to_staff_code.get(manager_uid) or "")
|
||||
manager_member = code_to_member.get(manager_code, {})
|
||||
manager = str(manager_member.get("id") or "")
|
||||
|
|
@ -722,17 +737,18 @@ 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 成员字段。
|
||||
# HRBP/汇报人优先走“EHR userId -> 工号 -> OA memberId”;
|
||||
# 若无法映射,保留 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)
|
||||
if str(hrbp_member.get("id") or "").strip():
|
||||
hrbp = str(hrbp_member.get("id") or "")
|
||||
hrbp_show = str(hrbp_member.get("name") or hrbp_code)
|
||||
if str(manager_member.get("id") or "").strip():
|
||||
manager = str(manager_member.get("id") or "")
|
||||
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["域账号"])))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue