From d49ce6e73e8a02ab2ca13314f43a49721264a847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 16 Jan 2026 15:31:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(excel):=20=E4=BC=98=E5=8C=96Excel=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=8A=9F=E8=83=BD=E6=94=AF=E6=8C=81=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E8=A1=A8=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在CreditBreachOfTrustController中添加对"失信被执行人"工作表的精确匹配 - 在CreditXgxfController中添加对"限制高消费"工作表的精确匹配 - 在CreditJudgmentDebtorController中实现被执行人工作表的优先级排序逻辑 - 新增normalizeSheetName方法统一处理工作表名称的空格和特殊字符 - 改进findDebtorSheetIndices方法优先选择名为"被执行人"的工作表 - 调整ExcelImportSupport调用方式以支持指定工作表索引参数 --- .../CreditBreachOfTrustController.java | 3 ++- .../CreditJudgmentDebtorController.java | 22 ++++++++++++++++--- .../controller/CreditXgxfController.java | 3 ++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditBreachOfTrustController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditBreachOfTrustController.java index be64a51..41b86b6 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditBreachOfTrustController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditBreachOfTrustController.java @@ -140,8 +140,9 @@ public class CreditBreachOfTrustController extends BaseController { int successCount = 0; try { + int sheetIndex = ExcelImportSupport.findSheetIndex(file, "失信被执行人", 0); ExcelImportSupport.ImportResult importResult = ExcelImportSupport.read( - file, CreditJudicialImportParam.class, this::isEmptyImportRow); + file, CreditJudicialImportParam.class, this::isEmptyImportRow, sheetIndex); List list = importResult.getData(); int usedTitleRows = importResult.getTitleRows(); int usedHeadRows = importResult.getHeadRows(); diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditJudgmentDebtorController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditJudgmentDebtorController.java index b85ed9f..e54c4cd 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditJudgmentDebtorController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditJudgmentDebtorController.java @@ -485,27 +485,43 @@ public class CreditJudgmentDebtorController extends BaseController { } private List findDebtorSheetIndices(MultipartFile excelFile) throws Exception { + // Prefer an explicitly-named "被执行人" sheet when present. + List preferred = new ArrayList<>(); List 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; diff --git a/src/main/java/com/gxwebsoft/credit/controller/CreditXgxfController.java b/src/main/java/com/gxwebsoft/credit/controller/CreditXgxfController.java index de1b4d9..7e4693c 100644 --- a/src/main/java/com/gxwebsoft/credit/controller/CreditXgxfController.java +++ b/src/main/java/com/gxwebsoft/credit/controller/CreditXgxfController.java @@ -144,8 +144,9 @@ public class CreditXgxfController extends BaseController { int successCount = 0; try { + int sheetIndex = ExcelImportSupport.findSheetIndex(file, "限制高消费", 0); ExcelImportSupport.ImportResult importResult = ExcelImportSupport.read( - file, CreditJudicialImportParam.class, this::isEmptyImportRow); + file, CreditJudicialImportParam.class, this::isEmptyImportRow, sheetIndex); List list = importResult.getData(); int usedTitleRows = importResult.getTitleRows(); int usedHeadRows = importResult.getHeadRows();