update
This commit is contained in:
parent
3e4cd2a58a
commit
a9114c6a45
|
|
@ -167,6 +167,46 @@ def _extract_staff_code(staff_profile: dict[str, Any]) -> str:
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_mobile_phone(emp_info: dict[str, Any]) -> str:
|
||||||
|
if not isinstance(emp_info, dict):
|
||||||
|
return ""
|
||||||
|
candidate_keys = (
|
||||||
|
"mobile",
|
||||||
|
"mobilePhone",
|
||||||
|
"phone",
|
||||||
|
"phoneNumber",
|
||||||
|
"tel",
|
||||||
|
"telephone",
|
||||||
|
"cellphone",
|
||||||
|
"cellPhone",
|
||||||
|
"Mobile",
|
||||||
|
"MobilePhone",
|
||||||
|
"Phone",
|
||||||
|
"PhoneNumber",
|
||||||
|
"Tel",
|
||||||
|
"Telephone",
|
||||||
|
"Cellphone",
|
||||||
|
"CellPhone",
|
||||||
|
)
|
||||||
|
for key in candidate_keys:
|
||||||
|
raw = emp_info.get(key)
|
||||||
|
if isinstance(raw, dict):
|
||||||
|
val = raw.get("value")
|
||||||
|
if val is None or str(val).strip() == "":
|
||||||
|
val = raw.get("showValue")
|
||||||
|
raw = val
|
||||||
|
s = str(raw or "").strip()
|
||||||
|
if s:
|
||||||
|
return s
|
||||||
|
translate = emp_info.get("translateProperties")
|
||||||
|
if isinstance(translate, dict):
|
||||||
|
for key in candidate_keys:
|
||||||
|
s = str(translate.get(key) or "").strip()
|
||||||
|
if s:
|
||||||
|
return s
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
def _pick_best_member_by_code(members: list[dict[str, Any]]) -> dict[str, Any] | None:
|
def _pick_best_member_by_code(members: list[dict[str, Any]]) -> dict[str, Any] | None:
|
||||||
if not members:
|
if not members:
|
||||||
return None
|
return None
|
||||||
|
|
@ -262,7 +302,7 @@ class SyncEhrToOaFormJob(BaseJob):
|
||||||
|
|
||||||
同步字段:
|
同步字段:
|
||||||
- 工号(作为唯一对应关系,不写入)
|
- 工号(作为唯一对应关系,不写入)
|
||||||
- 所属公司、姓名、研发属性、工作地点、入职日期、离职日期、身份证号、HRBP、汇报人、在离职、域账号
|
- 所属公司、姓名、研发属性、工作地点、入职日期、离职日期、身份证号、手机号、HRBP、汇报人、在离职、域账号
|
||||||
"""
|
"""
|
||||||
|
|
||||||
job_id = "sync_ehr_to_oa.sync_form"
|
job_id = "sync_ehr_to_oa.sync_form"
|
||||||
|
|
@ -306,6 +346,7 @@ class SyncEhrToOaFormJob(BaseJob):
|
||||||
raise ValueError("secret_cfg.app_key and secret_cfg.app_secret are required")
|
raise ValueError("secret_cfg.app_key and secret_cfg.app_secret are required")
|
||||||
|
|
||||||
domain_custom_key = str(params.get("domain_account_custom_key") or "").strip() or None
|
domain_custom_key = str(params.get("domain_account_custom_key") or "").strip() or None
|
||||||
|
mobile_custom_key = str(params.get("mobile_phone_custom_key") or "").strip() or None
|
||||||
verbose_trace = _to_bool_or_none(params.get("verbose_trace"))
|
verbose_trace = _to_bool_or_none(params.get("verbose_trace"))
|
||||||
if verbose_trace is None:
|
if verbose_trace is None:
|
||||||
verbose_trace = True
|
verbose_trace = True
|
||||||
|
|
@ -506,6 +547,9 @@ class SyncEhrToOaFormJob(BaseJob):
|
||||||
entry_date = _date_only(rec.get("entryDate"))
|
entry_date = _date_only(rec.get("entryDate"))
|
||||||
leave_date = _date_only(rec.get("lastWorkDate"))
|
leave_date = _date_only(rec.get("lastWorkDate"))
|
||||||
id_number = str(emp.get("iDNumber") or "")
|
id_number = str(emp.get("iDNumber") or "")
|
||||||
|
mobile_phone = _extract_mobile_phone(emp)
|
||||||
|
if not mobile_phone and mobile_custom_key:
|
||||||
|
mobile_phone = _custom_prop_value(emp.get("customProperties"), mobile_custom_key)
|
||||||
hrbp_uid = _to_int_safe(rec.get(_EHR_HRBP_ID_KEY) or _custom_prop_value(rec.get("customProperties"), _EHR_HRBP_ID_KEY))
|
hrbp_uid = _to_int_safe(rec.get(_EHR_HRBP_ID_KEY) or _custom_prop_value(rec.get("customProperties"), _EHR_HRBP_ID_KEY))
|
||||||
hrbp_code = str(user_id_to_staff_code.get(hrbp_uid) or "")
|
hrbp_code = str(user_id_to_staff_code.get(hrbp_uid) or "")
|
||||||
hrbp_member = code_to_member.get(hrbp_code, {})
|
hrbp_member = code_to_member.get(hrbp_code, {})
|
||||||
|
|
@ -521,7 +565,7 @@ class SyncEhrToOaFormJob(BaseJob):
|
||||||
is_leaving = "是" if _date_only(rec.get("lastWorkDate")) else "否"
|
is_leaving = "是" if _date_only(rec.get("lastWorkDate")) else "否"
|
||||||
domain_account = _custom_prop_value(emp.get("customProperties"), domain_custom_key) or str(emp.get("_Name") or "")
|
domain_account = _custom_prop_value(emp.get("customProperties"), domain_custom_key) or str(emp.get("_Name") or "")
|
||||||
logger.info(
|
logger.info(
|
||||||
"EHR 字段预览:job_no=%s company=%s name=%s rd_attr=%s place=%s entry_date=%s leave_date=%s id_number=%s hrbp_id=%s hrbp_show=%s manager_id=%s manager_show=%s is_leaving=%s domain_account=%s",
|
"EHR 字段预览:job_no=%s company=%s name=%s rd_attr=%s place=%s entry_date=%s leave_date=%s id_number=%s mobile_phone=%s hrbp_id=%s hrbp_show=%s manager_id=%s manager_show=%s is_leaving=%s domain_account=%s",
|
||||||
job_no,
|
job_no,
|
||||||
company,
|
company,
|
||||||
name,
|
name,
|
||||||
|
|
@ -530,6 +574,7 @@ class SyncEhrToOaFormJob(BaseJob):
|
||||||
entry_date,
|
entry_date,
|
||||||
leave_date,
|
leave_date,
|
||||||
id_number,
|
id_number,
|
||||||
|
mobile_phone,
|
||||||
hrbp,
|
hrbp,
|
||||||
hrbp_show,
|
hrbp_show,
|
||||||
manager,
|
manager,
|
||||||
|
|
@ -596,6 +641,7 @@ class SyncEhrToOaFormJob(BaseJob):
|
||||||
"入职日期",
|
"入职日期",
|
||||||
"离职日期",
|
"离职日期",
|
||||||
"身份证号",
|
"身份证号",
|
||||||
|
"手机号",
|
||||||
"HRBP",
|
"HRBP",
|
||||||
"汇报人",
|
"汇报人",
|
||||||
"在离职",
|
"在离职",
|
||||||
|
|
@ -746,6 +792,9 @@ class SyncEhrToOaFormJob(BaseJob):
|
||||||
entry_date = _date_only(rec.get("entryDate"))
|
entry_date = _date_only(rec.get("entryDate"))
|
||||||
leave_date = _date_only(rec.get("lastWorkDate"))
|
leave_date = _date_only(rec.get("lastWorkDate"))
|
||||||
id_number = str(emp.get("iDNumber") or "")
|
id_number = str(emp.get("iDNumber") or "")
|
||||||
|
mobile_phone = _extract_mobile_phone(emp)
|
||||||
|
if not mobile_phone and mobile_custom_key:
|
||||||
|
mobile_phone = _custom_prop_value(emp.get("customProperties"), mobile_custom_key)
|
||||||
hrbp_uid = _to_int_safe(rec.get(_EHR_HRBP_ID_KEY) or _custom_prop_value(rec.get("customProperties"), _EHR_HRBP_ID_KEY))
|
hrbp_uid = _to_int_safe(rec.get(_EHR_HRBP_ID_KEY) or _custom_prop_value(rec.get("customProperties"), _EHR_HRBP_ID_KEY))
|
||||||
hrbp_code = str(user_id_to_staff_code.get(hrbp_uid) or "")
|
hrbp_code = str(user_id_to_staff_code.get(hrbp_uid) or "")
|
||||||
hrbp_member = code_to_member.get(hrbp_code, {})
|
hrbp_member = code_to_member.get(hrbp_code, {})
|
||||||
|
|
@ -803,6 +852,7 @@ class SyncEhrToOaFormJob(BaseJob):
|
||||||
# 未离职不填离职日期(保持空),不再回填旧值。
|
# 未离职不填离职日期(保持空),不再回填旧值。
|
||||||
leave_date = str(leave_date or "").strip()
|
leave_date = str(leave_date or "").strip()
|
||||||
id_number = _prefer_non_empty(id_number, _cell_value(existing_field_map.get(display_to_code["身份证号"])))
|
id_number = _prefer_non_empty(id_number, _cell_value(existing_field_map.get(display_to_code["身份证号"])))
|
||||||
|
mobile_phone = _prefer_non_empty(mobile_phone, _cell_value(existing_field_map.get(display_to_code["手机号"])))
|
||||||
hrbp = _prefer_non_empty(hrbp, _cell_value(existing_field_map.get(display_to_code["HRBP"])))
|
hrbp = _prefer_non_empty(hrbp, _cell_value(existing_field_map.get(display_to_code["HRBP"])))
|
||||||
manager = _prefer_non_empty(manager, _cell_value(existing_field_map.get(display_to_code["汇报人"])))
|
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"])))
|
hrbp_show = _prefer_non_empty(hrbp_show, _cell_show_value(existing_field_map.get(display_to_code["HRBP"])))
|
||||||
|
|
@ -830,6 +880,7 @@ class SyncEhrToOaFormJob(BaseJob):
|
||||||
{"name": display_to_code["入职日期"], "value": entry_date, "showValue": entry_date},
|
{"name": display_to_code["入职日期"], "value": entry_date, "showValue": entry_date},
|
||||||
{"name": display_to_code["离职日期"], "value": leave_date, "showValue": leave_date},
|
{"name": display_to_code["离职日期"], "value": leave_date, "showValue": leave_date},
|
||||||
{"name": display_to_code["身份证号"], "value": id_number, "showValue": id_number},
|
{"name": display_to_code["身份证号"], "value": id_number, "showValue": id_number},
|
||||||
|
{"name": display_to_code["手机号"], "value": mobile_phone, "showValue": mobile_phone},
|
||||||
{"name": display_to_code["HRBP"], "value": hrbp, "showValue": hrbp_show},
|
{"name": display_to_code["HRBP"], "value": hrbp, "showValue": hrbp_show},
|
||||||
{"name": display_to_code["汇报人"], "value": manager, "showValue": manager_show},
|
{"name": display_to_code["汇报人"], "value": manager, "showValue": manager_show},
|
||||||
{"name": display_to_code["在离职"], "value": is_leaving, "showValue": is_leaving},
|
{"name": display_to_code["在离职"], "value": is_leaving, "showValue": is_leaving},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue