feat(excel): 优化Excel导入功能支持指定工作表名称
- 在CreditBreachOfTrustController中添加对"失信被执行人"工作表的精确匹配 - 在CreditXgxfController中添加对"限制高消费"工作表的精确匹配 - 在CreditJudgmentDebtorController中实现被执行人工作表的优先级排序逻辑 - 新增normalizeSheetName方法统一处理工作表名称的空格和特殊字符 - 改进findDebtorSheetIndices方法优先选择名为"被执行人"的工作表 - 调整ExcelImportSupport调用方式以支持指定工作表索引参数
This commit is contained in:
@@ -140,8 +140,9 @@ public class CreditBreachOfTrustController extends BaseController {
|
||||
int successCount = 0;
|
||||
|
||||
try {
|
||||
int sheetIndex = ExcelImportSupport.findSheetIndex(file, "失信被执行人", 0);
|
||||
ExcelImportSupport.ImportResult<CreditJudicialImportParam> importResult = ExcelImportSupport.read(
|
||||
file, CreditJudicialImportParam.class, this::isEmptyImportRow);
|
||||
file, CreditJudicialImportParam.class, this::isEmptyImportRow, sheetIndex);
|
||||
List<CreditJudicialImportParam> list = importResult.getData();
|
||||
int usedTitleRows = importResult.getTitleRows();
|
||||
int usedHeadRows = importResult.getHeadRows();
|
||||
|
||||
@@ -485,27 +485,43 @@ public class CreditJudgmentDebtorController extends BaseController {
|
||||
}
|
||||
|
||||
private List<Integer> findDebtorSheetIndices(MultipartFile excelFile) throws Exception {
|
||||
// Prefer an explicitly-named "被执行人" sheet when present.
|
||||
List<Integer> preferred = new ArrayList<>();
|
||||
List<Integer> indices = new ArrayList<>();
|
||||
try (InputStream is = excelFile.getInputStream(); Workbook workbook = WorkbookFactory.create(is)) {
|
||||
int sheetCount = workbook.getNumberOfSheets();
|
||||
for (int i = 0; i < sheetCount; i++) {
|
||||
String sheetName = workbook.getSheetName(i);
|
||||
if (isDebtorSheetName(sheetName)) {
|
||||
if (!isDebtorSheetName(sheetName)) {
|
||||
continue;
|
||||
}
|
||||
String normalized = normalizeSheetName(sheetName);
|
||||
if ("被执行人".equals(normalized)) {
|
||||
preferred.add(i);
|
||||
} else {
|
||||
indices.add(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
return indices;
|
||||
preferred.addAll(indices);
|
||||
return preferred;
|
||||
}
|
||||
|
||||
private static boolean isDebtorSheetName(String sheetName) {
|
||||
if (sheetName == null) {
|
||||
return false;
|
||||
}
|
||||
String normalized = sheetName.replace(" ", "").trim();
|
||||
String normalized = normalizeSheetName(sheetName);
|
||||
return normalized.contains("被执行人") && !normalized.contains("失信") && !normalized.contains("历史");
|
||||
}
|
||||
|
||||
private static String normalizeSheetName(String sheetName) {
|
||||
if (sheetName == null) {
|
||||
return "";
|
||||
}
|
||||
return sheetName.replace(" ", "").replace(" ", "").trim();
|
||||
}
|
||||
|
||||
private static boolean isExcelFileName(String name) {
|
||||
if (name == null) {
|
||||
return false;
|
||||
|
||||
@@ -144,8 +144,9 @@ public class CreditXgxfController extends BaseController {
|
||||
int successCount = 0;
|
||||
|
||||
try {
|
||||
int sheetIndex = ExcelImportSupport.findSheetIndex(file, "限制高消费", 0);
|
||||
ExcelImportSupport.ImportResult<CreditJudicialImportParam> importResult = ExcelImportSupport.read(
|
||||
file, CreditJudicialImportParam.class, this::isEmptyImportRow);
|
||||
file, CreditJudicialImportParam.class, this::isEmptyImportRow, sheetIndex);
|
||||
List<CreditJudicialImportParam> list = importResult.getData();
|
||||
int usedTitleRows = importResult.getTitleRows();
|
||||
int usedHeadRows = importResult.getHeadRows();
|
||||
|
||||
Reference in New Issue
Block a user