feat(credit): 改进用户导入功能并过滤空行
- 在尝试导入时增加对空行的过滤处理 - 添加 filterEmptyRows 方法以移除完全空白的导入行 - 扩展 fallback 导入逻辑至三种表头情况 - 移除对唯一标识字段非空的强制校验 - 提升导入稳定性与容错能力
This commit is contained in:
@@ -146,13 +146,16 @@ public class CreditUserController extends BaseController {
|
||||
int successCount = 0;
|
||||
|
||||
try {
|
||||
List<CreditUserImportParam> list = tryImport(file, 1, 1);
|
||||
List<CreditUserImportParam> list = filterEmptyRows(tryImport(file, 1, 1));
|
||||
System.out.println("list = " + list);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
list = tryImport(file, 0, 1); // fallback:无标题行,只有表头
|
||||
list = filterEmptyRows(tryImport(file, 0, 1)); // fallback:无标题行,只有表头
|
||||
}
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
list = tryImport(file, 0, 2); // fallback:两行表头
|
||||
list = filterEmptyRows(tryImport(file, 0, 2)); // fallback:两行表头
|
||||
}
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
list = filterEmptyRows(tryImport(file, 0, 3)); // fallback:三行表头
|
||||
}
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return fail("未读取到数据,请确认模板表头与示例格式一致", null);
|
||||
@@ -191,10 +194,6 @@ public class CreditUserController extends BaseController {
|
||||
errorMessages.add("第" + (i + 1) + "行:项目名称不能为空");
|
||||
continue;
|
||||
}
|
||||
if (item.getCode() == null || item.getCode().trim().isEmpty()) {
|
||||
errorMessages.add("第" + (i + 1) + "行:唯一标识不能为空");
|
||||
continue;
|
||||
}
|
||||
System.out.println("item = " + item);
|
||||
|
||||
if (creditUserService.save(item)) {
|
||||
@@ -260,6 +259,35 @@ public class CreditUserController extends BaseController {
|
||||
return ExcelImportUtil.importExcel(file.getInputStream(), CreditUserImportParam.class, importParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* 过滤掉完全空白的导入行,避免空行导致导入失败
|
||||
*/
|
||||
private List<CreditUserImportParam> filterEmptyRows(List<CreditUserImportParam> rawList) {
|
||||
if (CollectionUtils.isEmpty(rawList)) {
|
||||
return rawList;
|
||||
}
|
||||
rawList.removeIf(this::isEmptyImportRow);
|
||||
return rawList;
|
||||
}
|
||||
|
||||
private boolean isEmptyImportRow(CreditUserImportParam param) {
|
||||
if (param == null) {
|
||||
return true;
|
||||
}
|
||||
return isBlank(param.getName())
|
||||
&& isBlank(param.getCode())
|
||||
&& isBlank(param.getRole())
|
||||
&& isBlank(param.getInfoType())
|
||||
&& isBlank(param.getAddress())
|
||||
&& isBlank(param.getProcurementName())
|
||||
&& isBlank(param.getWinningName())
|
||||
&& isBlank(param.getWinningPrice());
|
||||
}
|
||||
|
||||
private boolean isBlank(String value) {
|
||||
return value == null || value.trim().isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* 将CreditUserImportParam转换为CreditUser实体
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user