Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -309,8 +309,11 @@ public class ExternalJobImportServiceImpl implements IExternalJobImportService {
|
||||
}
|
||||
|
||||
private Long resolveCompany(ExternalJobCandidate candidate) {
|
||||
String normalizedCompanyName = normalizedCompanyName(candidate.getCompanyName());
|
||||
List<Long> ids = jdbcTemplate.queryForList(
|
||||
"SELECT company_id FROM company WHERE del_flag = '0' AND LOWER(BTRIM(name)) = LOWER(BTRIM(?))", Long.class, candidate.getCompanyName());
|
||||
"SELECT company_id FROM company WHERE del_flag = '0' "
|
||||
+ "AND LOWER(REGEXP_REPLACE(BTRIM(name), '[[:space:]]+', '', 'g')) = ?",
|
||||
Long.class, normalizedCompanyName);
|
||||
if (ids.size() > 1) {
|
||||
candidate.getWarnings().add("匹配到多个同名企业,岗位未绑定 company_id");
|
||||
return null;
|
||||
@@ -324,14 +327,15 @@ public class ExternalJobImportServiceImpl implements IExternalJobImportService {
|
||||
+ "scale = CASE WHEN NULLIF(BTRIM(scale), '') IS NULL THEN ? ELSE scale END, "
|
||||
+ "company_nature = CASE WHEN NULLIF(BTRIM(company_nature), '') IS NULL THEN ? ELSE company_nature END, "
|
||||
+ "contact_person = CASE WHEN NULLIF(BTRIM(contact_person), '') IS NULL THEN ? ELSE contact_person END, "
|
||||
+ "status = 1, company_status = '0', not_pass_reason = NULL, "
|
||||
+ "update_by = ?, update_time = CURRENT_TIMESTAMP WHERE company_id = ?",
|
||||
emptyToNull(candidate.getLocation()), emptyToNull(candidate.getCompanyDescription()), emptyToNull(firstNonBlank(candidate.getIndustrySub(), candidate.getIndustryType())),
|
||||
emptyToNull(candidate.getCompanyScaleCode()), emptyToNull(candidate.getCompanyNatureCode()), emptyToNull(candidate.getContactPerson()), SYSTEM_USER, companyId);
|
||||
return companyId;
|
||||
}
|
||||
return insertAndReturnGeneratedKey(
|
||||
"INSERT INTO company (name, location, industry, scale, company_nature, description, contact_person, del_flag, create_by, create_time, company_status) "
|
||||
+ "VALUES (?, ?, ?, ?, ?, ?, ?, '0', ?, CURRENT_TIMESTAMP, '0')",
|
||||
"INSERT INTO company (name, location, industry, scale, company_nature, description, contact_person, del_flag, create_by, create_time, status, company_status) "
|
||||
+ "VALUES (?, ?, ?, ?, ?, ?, ?, '0', ?, CURRENT_TIMESTAMP, 1, '0')",
|
||||
"company_id", candidate.getCompanyName(), emptyToNull(candidate.getLocation()), emptyToNull(firstNonBlank(candidate.getIndustrySub(), candidate.getIndustryType())),
|
||||
emptyToNull(candidate.getCompanyScaleCode()), emptyToNull(candidate.getCompanyNatureCode()), emptyToNull(candidate.getCompanyDescription()), emptyToNull(candidate.getContactPerson()), SYSTEM_USER);
|
||||
}
|
||||
@@ -653,6 +657,11 @@ public class ExternalJobImportServiceImpl implements IExternalJobImportService {
|
||||
return value == null ? "" : value.trim();
|
||||
}
|
||||
|
||||
/** 企业去重键:仅折叠大小写与空白,不将名称近似匹配误判为同一企业。 */
|
||||
private String normalizedCompanyName(String value) {
|
||||
return trim(value).replaceAll("\\s+", "").toLowerCase(Locale.ROOT);
|
||||
}
|
||||
|
||||
private String firstNonBlank(String first, String second) {
|
||||
return !isBlank(first) ? first : second;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user