feat(import): 实现Excel导入时链接地址自动提取功能

- 修改CreditAdministrativeLicense相关类将"许可类型"字段描述改为"许可类别"
- 在多个实体类(CreditBreachOfTrust、CreditCompetitor、CreditCourtAnnouncement等)中新增url字段用于存储链接地址
- 重构CreditCompany实体类调整字段顺序和位置
- 在各个控制器中实现Excel导入时链接地址的自动提取和填充逻辑
- 新增readKeyValueByHeaders方法支持从指定列读取键值对数据
- 新增readUrlByKey方法支持从超链接或独立列提取URL地址
- 优化Excel导入流程增加链接地址批量处理功能
- 修复EasyPOI无法读取单元格超链接地址的问题
This commit is contained in:
2026-01-19 14:23:48 +08:00
parent 071c44679a
commit 12fc77b35c
27 changed files with 310 additions and 35 deletions

View File

@@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 竞争对手控制器
@@ -150,6 +151,7 @@ public class CreditCompetitorController extends BaseController {
List<CreditCompetitorImportParam> list = importResult.getData();
int usedTitleRows = importResult.getTitleRows();
int usedHeadRows = importResult.getHeadRows();
int usedSheetIndex = importResult.getSheetIndex();
if (CollectionUtils.isEmpty(list)) {
return fail("未读取到数据,请确认模板表头与示例格式一致", null);
@@ -158,6 +160,7 @@ public class CreditCompetitorController extends BaseController {
User loginUser = getLoginUser();
Integer currentUserId = loginUser != null ? loginUser.getUserId() : null;
Integer currentTenantId = loginUser != null ? loginUser.getTenantId() : null;
Map<String, String> urlByCompanyName = ExcelImportSupport.readUrlByKey(file, usedSheetIndex, usedTitleRows, usedHeadRows, "企业名称");
final int chunkSize = 500;
final int mpBatchSize = 500;
@@ -168,6 +171,12 @@ public class CreditCompetitorController extends BaseController {
CreditCompetitorImportParam param = list.get(i);
try {
CreditCompetitor item = convertImportParamToEntity(param);
if (!ImportHelper.isBlank(item.getCompanyName())) {
String link = urlByCompanyName.get(item.getCompanyName().trim());
if (!ImportHelper.isBlank(link)) {
item.setUrl(link.trim());
}
}
if (item.getCompanyId() == null && companyId != null) {
item.setCompanyId(companyId);