fix: approve imported companies and clean duplicates

This commit is contained in:
2026-07-21 17:19:56 +08:00
parent 950e360a4e
commit c3800fc463
2 changed files with 157 additions and 3 deletions

View File

@@ -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;
}