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;
|
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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user