1 Commits
dev ... import

Author SHA1 Message Date
d49ce6e73e feat(excel): 优化Excel导入功能支持指定工作表名称
- 在CreditBreachOfTrustController中添加对"失信被执行人"工作表的精确匹配
- 在CreditXgxfController中添加对"限制高消费"工作表的精确匹配
- 在CreditJudgmentDebtorController中实现被执行人工作表的优先级排序逻辑
- 新增normalizeSheetName方法统一处理工作表名称的空格和特殊字符
- 改进findDebtorSheetIndices方法优先选择名为"被执行人"的工作表
- 调整ExcelImportSupport调用方式以支持指定工作表索引参数
2026-01-16 15:31:27 +08:00
3 changed files with 23 additions and 5 deletions

View File

@@ -140,8 +140,9 @@ public class CreditBreachOfTrustController extends BaseController {
int successCount = 0; int successCount = 0;
try { try {
int sheetIndex = ExcelImportSupport.findSheetIndex(file, "失信被执行人", 0);
ExcelImportSupport.ImportResult<CreditJudicialImportParam> importResult = ExcelImportSupport.read( ExcelImportSupport.ImportResult<CreditJudicialImportParam> importResult = ExcelImportSupport.read(
file, CreditJudicialImportParam.class, this::isEmptyImportRow); file, CreditJudicialImportParam.class, this::isEmptyImportRow, sheetIndex);
List<CreditJudicialImportParam> list = importResult.getData(); List<CreditJudicialImportParam> list = importResult.getData();
int usedTitleRows = importResult.getTitleRows(); int usedTitleRows = importResult.getTitleRows();
int usedHeadRows = importResult.getHeadRows(); int usedHeadRows = importResult.getHeadRows();

View File

@@ -485,27 +485,43 @@ public class CreditJudgmentDebtorController extends BaseController {
} }
private List<Integer> findDebtorSheetIndices(MultipartFile excelFile) throws Exception { 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<>(); List<Integer> indices = new ArrayList<>();
try (InputStream is = excelFile.getInputStream(); Workbook workbook = WorkbookFactory.create(is)) { try (InputStream is = excelFile.getInputStream(); Workbook workbook = WorkbookFactory.create(is)) {
int sheetCount = workbook.getNumberOfSheets(); int sheetCount = workbook.getNumberOfSheets();
for (int i = 0; i < sheetCount; i++) { for (int i = 0; i < sheetCount; i++) {
String sheetName = workbook.getSheetName(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); indices.add(i);
} }
} }
} }
return indices; preferred.addAll(indices);
return preferred;
} }
private static boolean isDebtorSheetName(String sheetName) { private static boolean isDebtorSheetName(String sheetName) {
if (sheetName == null) { if (sheetName == null) {
return false; return false;
} }
String normalized = sheetName.replace(" ", "").trim(); String normalized = normalizeSheetName(sheetName);
return normalized.contains("被执行人") && !normalized.contains("失信") && !normalized.contains("历史"); 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) { private static boolean isExcelFileName(String name) {
if (name == null) { if (name == null) {
return false; return false;

View File

@@ -144,8 +144,9 @@ public class CreditXgxfController extends BaseController {
int successCount = 0; int successCount = 0;
try { try {
int sheetIndex = ExcelImportSupport.findSheetIndex(file, "限制高消费", 0);
ExcelImportSupport.ImportResult<CreditJudicialImportParam> importResult = ExcelImportSupport.read( ExcelImportSupport.ImportResult<CreditJudicialImportParam> importResult = ExcelImportSupport.read(
file, CreditJudicialImportParam.class, this::isEmptyImportRow); file, CreditJudicialImportParam.class, this::isEmptyImportRow, sheetIndex);
List<CreditJudicialImportParam> list = importResult.getData(); List<CreditJudicialImportParam> list = importResult.getData();
int usedTitleRows = importResult.getTitleRows(); int usedTitleRows = importResult.getTitleRows();
int usedHeadRows = importResult.getHeadRows(); int usedHeadRows = importResult.getHeadRows();