update
This commit is contained in:
parent
2e55fd43ca
commit
76a17f5274
|
|
@ -435,8 +435,9 @@ class SyncEhrToOaFormJob(BaseJob):
|
|||
continue
|
||||
member_id = str(best.get("id") or "").strip()
|
||||
member_name = str(best.get("name") or best.get("loginName") or "").strip()
|
||||
member_code = str(best.get("code") or code).strip()
|
||||
if member_id:
|
||||
code_to_member[code] = {"id": member_id, "name": member_name}
|
||||
code_to_member[code] = {"id": member_id, "name": member_name, "code": member_code}
|
||||
except Exception as e: # noqa: BLE001
|
||||
logger.warning("OA 人员查询失败:code=%s err=%r", code, e)
|
||||
logger.info(
|
||||
|
|
@ -665,6 +666,7 @@ class SyncEhrToOaFormJob(BaseJob):
|
|||
data_list: list[dict[str, Any]] = []
|
||||
not_found_in_oa = 0
|
||||
unmatched_samples: list[str] = []
|
||||
debug_rows = 0
|
||||
for job_no, item in ehr_by_job_no.items():
|
||||
oa_record_id = merged_id_by_job_no.get(job_no)
|
||||
matched_by = "raw"
|
||||
|
|
@ -725,6 +727,31 @@ class SyncEhrToOaFormJob(BaseJob):
|
|||
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 "")
|
||||
|
||||
debug_payload = {
|
||||
"job_no": job_no,
|
||||
"ehr_user_id": user_id,
|
||||
"oa_record_id": oa_record_id,
|
||||
"matched_by": matched_by,
|
||||
"ehr_hrbp_user_id": hrbp_uid,
|
||||
"ehr_hrbp_staff_code": hrbp_code,
|
||||
"oa_hrbp_member": {
|
||||
"id": str(hrbp_member.get("id") or ""),
|
||||
"code": str(hrbp_member.get("code") or ""),
|
||||
"name": str(hrbp_member.get("name") or ""),
|
||||
},
|
||||
"ehr_manager_user_id": manager_uid,
|
||||
"ehr_manager_staff_code": manager_code,
|
||||
"oa_manager_member": {
|
||||
"id": str(manager_member.get("id") or ""),
|
||||
"code": str(manager_member.get("code") or ""),
|
||||
"name": str(manager_member.get("name") or ""),
|
||||
},
|
||||
"employeeInfo": emp,
|
||||
"recordInfo": rec,
|
||||
}
|
||||
logger.info("DEBUG_EMPLOYEE_MAPPING %s", json.dumps(debug_payload, ensure_ascii=False, default=str))
|
||||
debug_rows += 1
|
||||
|
||||
company = _prefer_non_empty(company, _cell_value(existing_field_map.get(display_to_code["所属公司"])))
|
||||
name = _prefer_non_empty(name, _cell_value(existing_field_map.get(display_to_code["姓名"])))
|
||||
rd_attr = _prefer_non_empty(rd_attr, _cell_value(existing_field_map.get(display_to_code["研发属性"])))
|
||||
|
|
@ -788,11 +815,17 @@ class SyncEhrToOaFormJob(BaseJob):
|
|||
len(data_list),
|
||||
not_found_in_oa,
|
||||
)
|
||||
if not data_list:
|
||||
raise RuntimeError(
|
||||
"No updates prepared for OA batch-update (check jobNumber matching between EHR and OA, and form field mapping). "
|
||||
f"unmatched_sample={unmatched_samples}"
|
||||
)
|
||||
logger.warning("DEBUG模式:已停止 batch-update,仅输出映射日志,debug_rows=%s", debug_rows)
|
||||
return {
|
||||
"debug_only": True,
|
||||
"ehr_total_rows": len(emp_rows),
|
||||
"ehr_distinct_job_numbers": len(ehr_by_job_no),
|
||||
"oa_existing_job_numbers": len(oa_id_by_job_no),
|
||||
"prepared_updates": len(data_list),
|
||||
"not_found_in_oa": not_found_in_oa,
|
||||
"unmatched_sample": unmatched_samples[:50],
|
||||
"debug_rows": debug_rows,
|
||||
}
|
||||
|
||||
# 6) 分批执行 batch-update
|
||||
success_count = 0
|
||||
|
|
|
|||
Loading…
Reference in New Issue