diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CommonRouteController.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CommonRouteController.java index 61966056..db31a347 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CommonRouteController.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CommonRouteController.java @@ -38,6 +38,7 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.common.excel.ImportFailureExcelUtil; +import org.springblade.common.excel.ImportFailureException; import org.springblade.transport.excel.CommonRouteExportExcel; import org.springblade.transport.excel.CommonRouteImportExcel; import org.springblade.transport.pojo.entity.CommonRoute; @@ -109,15 +110,22 @@ public class CommonRouteController extends BladeController { @ApiOperationSupport(order = 6) @Operation(summary = "导入常用线路", description = "传入excel") public R importCommonRoute(MultipartFile file, HttpServletResponse response) { - List failureList = commonRouteService.importCommonRoute( - ExcelUtil.read(file, CommonRouteImportExcel.class) - ); - if (Func.isNotEmpty(failureList)) { - ImportFailureExcelUtil.export( + if (file == null || file.isEmpty()) { + return R.fail("上传文件不能为空"); + } + String fileName = Func.toStrWithEmpty(file.getOriginalFilename(), "").toLowerCase(); + if (!fileName.endsWith(".xls") && !fileName.endsWith(".xlsx")) { + return R.fail("请上传 .xls,.xlsx 标准格式文件"); + } + try { + commonRouteService.importCommonRoute(ExcelUtil.read(file, CommonRouteImportExcel.class)); + } catch (ImportFailureException exception) { + // 任一行失败即整批回滚,导出原表全部数据并标注错误,用户修正后重新导入。 + ImportFailureExcelUtil.exportFailureReasonOnly( response, "常用线路导入失败明细" + DateUtil.time(), "导入失败明细", - failureList, + exception.getFailureList(), CommonRouteImportExcel.class ); return null; diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonRouteServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonRouteServiceImpl.java index 10d7f8d0..505ffd51 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonRouteServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CommonRouteServiceImpl.java @@ -25,6 +25,7 @@ package org.springblade.transport.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springblade.common.excel.ImportFailureException; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.utils.BeanUtil; @@ -130,6 +131,10 @@ public class CommonRouteServiceImpl extends BaseServiceImpl failureList = new ArrayList<>(); for (int index = 0; index < data.size(); index++) { CommonRouteImportExcel excel = data.get(index); @@ -142,6 +147,11 @@ public class CommonRouteServiceImpl extends BaseServiceImpl