fix(aihr): gate organization display fields in production
This commit is contained in:
+29
-15
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user