fix(aihr): gate organization display fields in production

This commit is contained in:
2026-07-14 12:07:10 +08:00
parent 183b68a529
commit ed998753be
8 changed files with 46 additions and 18 deletions
@@ -68,6 +68,9 @@ public class AihrOrgSyncService {
@Value("${aihr.org-sync.signing-secret:${AIHR_ORG_SYNC_SIGNING_SECRET:}}")
private String configuredSigningSecret;
@Value("${aihr.org-sync.store-display-fields:${AIHR_ORG_SYNC_STORE_DISPLAY_FIELDS:false}}")
private boolean storeDisplayFields;
public SyncResponse sync(SyncRequest request) {
SyncRequest req = request == null ? new SyncRequest(null, null, null, null, null, null, null, null) : request;
String baseUrl = normalizeBaseUrl(configuredBaseUrl);
@@ -208,9 +211,9 @@ public class AihrOrgSyncService {
rs.getLong("id"),
rs.getString("project_code"),
rs.getString("project_name"),
rs.getString("dept_name"),
storeDisplayFields ? rs.getString("dept_name") : "",
rs.getString("ext_party_id"),
rs.getString("person_name"),
storeDisplayFields ? rs.getString("person_name") : "",
rs.getString("position_name"),
rs.getString("position_level"),
rs.getString("employment_status"),
@@ -387,19 +390,20 @@ public class AihrOrgSyncService {
String projectName = firstNonBlank(
text(employee, "project_name", "projectName", "company_name", "companyName"),
company == null ? "" : company.name(),
deptName,
storeDisplayFields ? deptName : "",
"组织架构"
);
String personName = firstNonBlank(text(employee, "name", "person_name", "personName", "employee_name", "employeeName"), "-");
String positionName = firstNonBlank(text(employee, "position_name", "positionName", "job_title", "jobTitle",
"post_name", "postName", "job_name", "jobName", "role_name", "roleName", "position", "title"), "员工");
String positionLevel = firstNonBlank(text(employee, "position_level", "positionLevel", "job_level", "jobLevel"), level(positionName));
return new OrgRow(
projectCode,
projectName,
deptName,
storeDisplayFields ? deptName : "",
extPartyId,
phone(employee),
firstNonBlank(text(employee, "name", "person_name", "personName", "employee_name", "employeeName"), "-"),
storeDisplayFields ? personName : "",
positionName,
positionLevel(positionLevel, positionName),
status(text(employee, "status", "employment_status", "employmentStatus")),
@@ -442,16 +446,26 @@ public class AihrOrgSyncService {
String keywordValue = clean(keyword);
if (!keywordValue.isBlank()) {
String like = "%" + keywordValue + "%";
where.append("""
and (person_name like ? or ext_party_id like ? or person_phone like ?
or position_name like ? or dept_name like ? or project_name like ?)
""");
args.add(like);
args.add(like);
args.add(like);
args.add(like);
args.add(like);
args.add(like);
if (storeDisplayFields) {
where.append("""
and (person_name like ? or ext_party_id like ? or person_phone like ?
or position_name like ? or dept_name like ? or project_name like ?)
""");
args.add(like);
args.add(like);
args.add(like);
args.add(like);
args.add(like);
args.add(like);
} else {
where.append("""
and (ext_party_id like ? or position_name like ? or project_code like ? or project_name like ?)
""");
args.add(like);
args.add(like);
args.add(like);
args.add(like);
}
}
String project = clean(projectCode);
if (!project.isBlank()) {