From 26c02fdd230552c8a8a266dd8fd74fdc5333416a Mon Sep 17 00:00:00 2001 From: lym <1994302445@qq.com> Date: Sat, 15 Feb 2025 16:39:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=AF=BC=E5=85=A5=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=BF=A1=E6=81=AF=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/executor/util/ExcelWriterUtil.java | 27 +-------- .../manage/enums/ErrorCodeConstants.java | 4 ++ .../admin/plate/PlateController.java | 14 +++-- .../service/plate/PlateExcelListener.java | 4 +- .../manage/service/plate/PlateExcelUtil.java | 59 ------------------- .../manage/util/file/ExcelReadUtil.java | 24 ++------ .../manage/util/file/FileHelperUtil.java | 24 +++++++- 7 files changed, 45 insertions(+), 111 deletions(-) delete mode 100644 cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateExcelUtil.java diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java index 94c9799d8..2c227eb00 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java @@ -4,21 +4,21 @@ import com.alibaba.excel.EasyExcelFactory; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.fill.FillConfig; -import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springframework.util.ResourceUtils; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; -import java.time.format.DateTimeFormatter; -import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; + /** * excel 文件写入 */ @@ -60,27 +60,6 @@ public class ExcelWriterUtil { } } - // 填充订单数据 - private static Map fillOrderData(OrderDO order) { - Map orderMap = new HashMap<>(); - orderMap.put("customOrderNo", order.getCustomOrderNo()); - orderMap.put("orderId", order.getId().toString()); - orderMap.put("orderData", order.getOrderDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); - orderMap.put("customer", order.getCustomer()); - orderMap.put("address", order.getAddress()); - orderMap.put("phoneNumber", order.getPhoneNumber()); - orderMap.put("remark", order.getRemark()); - orderMap.put("splitter", order.getSplitter()); - orderMap.put("salesman", order.getSalesman()); - orderMap.put("dealerPhoneNumber", order.getDealerPhoneNumber()); - orderMap.put("dealer", order.getDealer()); - orderMap.put("deliveryDate", order.getDeliveryDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); - return orderMap; - } - // 填充配置 - private static FillConfig fillConfig() { - return FillConfig.builder().forceNewRow(Boolean.TRUE).build(); - } } diff --git a/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/ErrorCodeConstants.java b/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/ErrorCodeConstants.java index 224578b83..8f28d5ec2 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/ErrorCodeConstants.java +++ b/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/ErrorCodeConstants.java @@ -13,4 +13,8 @@ public class ErrorCodeConstants { public static final ErrorCode PARTS_UNIT_NOT_NULL = new ErrorCode(1_004_001_002, "配件-组件或五金或封边条,单位禁止为空"); public static final ErrorCode PARTS_EDGE_NOT_NULL = new ErrorCode(1_004_001_003, "配件-封边条颜色、宽厚禁止为空"); + public static final ErrorCode FILE_NULL = new ErrorCode(1_004_001_004, "上传文件为空"); + public static final ErrorCode FILE_FORMAT_ERROR = new ErrorCode(1_004_001_005, "导入文件格式有误"); + public static final ErrorCode FILE_EXCEED_SIZE = new ErrorCode(1_004_001_006, "文件大小超过 10M"); + public static final ErrorCode FILE_CONTENT_NULL = new ErrorCode(1_004_001_007, "文件大小为空"); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/PlateController.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/PlateController.java index 65cb1efb5..5b941b482 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/PlateController.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/PlateController.java @@ -1,7 +1,8 @@ package com.cf.imes.module.manage.controller.admin.plate; import com.cf.imes.module.manage.controller.admin.plate.vo.plate.*; -import com.cf.imes.module.manage.service.plate.PlateExcelUtil; +import com.cf.imes.module.manage.service.plate.PlateExcelListener; +import com.cf.imes.module.manage.util.file.ExcelReadUtil; import io.swagger.v3.oas.annotations.Parameters; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; @@ -32,7 +33,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import javax.validation.constraints.NotEmpty; @Tag(name = "管理后台 - 板材库管理") @RestController @@ -149,10 +149,12 @@ public class PlateController { @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport, @RequestParam(value = "organId") Long organId, HttpServletResponse response) throws Exception { - PlateExcelUtil plateExcelUtil = new PlateExcelUtil(); - List list = plateExcelUtil.read(file, PlateImportExcelVO.class); + ExcelReadUtil excelReadUtil = new ExcelReadUtil(); + PlateExcelListener listener = new PlateExcelListener(); + List list = excelReadUtil.read(file, PlateImportExcelVO.class, listener); + // 判断文件是否导入成功 - if (!plateExcelUtil.getFlag()) + if (!excelReadUtil.getFlag()) ExcelUtils.write(response, IMPORT_TEMPLATE, "板材列表", PlateImportExcelVO.class, list); else { if (list.isEmpty()){ @@ -164,7 +166,7 @@ public class PlateController { } } - plateExcelUtil.clear(); +// plateExcelUtil.clear(); } } \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateExcelListener.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateExcelListener.java index 3034ebf82..1e0c28ee6 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateExcelListener.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateExcelListener.java @@ -1,14 +1,14 @@ package com.cf.imes.module.manage.service.plate; import com.alibaba.excel.context.AnalysisContext; -import com.alibaba.excel.event.AnalysisEventListener; import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlateImportExcelVO; +import com.cf.imes.module.manage.util.file.ExcelListener; import lombok.extern.slf4j.Slf4j; import java.util.*; @Slf4j -public final class PlateExcelListener extends AnalysisEventListener { +public final class PlateExcelListener extends ExcelListener { /** * 自定义用于暂时存储data diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateExcelUtil.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateExcelUtil.java deleted file mode 100644 index 1aef3d134..000000000 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateExcelUtil.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.cf.imes.module.manage.service.plate; - -import com.alibaba.excel.EasyExcelFactory; -import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlateImportExcelVO; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -@Slf4j -public class PlateExcelUtil { - - private String value; - - private PlateExcelListener excelListener = new PlateExcelListener<>(); - - public List read(MultipartFile file, Class head) throws IOException { - - if (file.isEmpty()) { - value = "文件为空"; - throw new IOException("文件为空"); - } else if (!(file.getOriginalFilename().endsWith(".xlsx") || file.getOriginalFilename().endsWith(".xls"))) { - value = "文件格式不正确"; - throw new IOException("文件格式不正确"); - } else if (file.getSize() > 1024 * 1024 * 10) { - value = "文件大小超过 10M"; - throw new IOException("文件大小超过 10M"); - } else if (file.getSize() == 0) { - value = "文件大小为 0"; - throw new IOException("文件大小为 0"); - } else { - EasyExcelFactory.read(file.getInputStream(), PlateImportExcelVO.class, excelListener) - .autoCloseStream(true) // 不要自动关闭,交给 Servlet 自己处理 - .headRowNumber(1).sheet(0).doRead(); - //获取读取的数据 - List list = excelListener.getDatas(); - - if (excelListener.getValueMap().size() > 0) - excelListener.getValueMap().forEach((k, v) -> { - list.get(k - 1).setResult(v); - }); - return list; - } - } - - public boolean getFlag() { - return excelListener.getFlag(); - } - - public void clear() { - excelListener.getDatas().clear(); - } - - public Map getValueMap() { - return excelListener.getValueMap(); - } -} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/file/ExcelReadUtil.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/file/ExcelReadUtil.java index 19259f31a..d9879a1d9 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/file/ExcelReadUtil.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/file/ExcelReadUtil.java @@ -5,6 +5,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -18,25 +20,10 @@ public final class ExcelReadUtil{ public List read(MultipartFile file, Class head, ExcelListener listener) throws IOException { value = ""; - flag = true; + Long fileSize = 1024 * 1024 * 10L; // 10 MB + flag = FileHelperUtil.checkFile(file, fileSize); - if (file.isEmpty()) { - value = "文件为空"; - flag = false; - throw new IOException("文件为空"); - } else if (!(file.getOriginalFilename().endsWith(".xlsx") || file.getOriginalFilename().endsWith(".xls"))) { - value = "文件格式不正确"; - flag = false; - throw new IOException("文件格式不正确"); - } else if (file.getSize() > 1024 * 1024 * 10) { - value = "文件大小超过 10M"; - flag = false; - throw new IOException("文件大小超过 10M"); - } else if (file.getSize() == 0) { - value = "文件大小为 0"; - flag = false; - throw new IOException("文件大小为 0"); - } else { + if (flag) { EasyExcelFactory.read(file.getInputStream(), head, listener) .autoCloseStream(true) // 不要自动关闭,交给 Servlet 自己处理 .headRowNumber(1).sheet(0).doRead(); @@ -48,6 +35,7 @@ public final class ExcelReadUtil{ } return list; } + return new ArrayList<>(); } public String getValue() { diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/file/FileHelperUtil.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/file/FileHelperUtil.java index 7c23e50a6..7911366b1 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/file/FileHelperUtil.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/util/file/FileHelperUtil.java @@ -1,6 +1,6 @@ package com.cf.imes.module.manage.util.file; -import org.springframework.boot.system.ApplicationHome; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.*; @@ -8,9 +8,10 @@ import java.net.URLEncoder; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS; +import static com.cf.imes.module.manage.enums.ErrorCodeConstants.*; /** - * 文件上传下载相工具类 + * 文件相关工具类 */ public class FileHelperUtil { @@ -38,4 +39,23 @@ public class FileHelperUtil { throw exception(FILE_NOT_EXISTS); } } + + // 文件条件判断 + public static boolean checkFile(MultipartFile file, + Long fileSize) { + if (file.isEmpty()) { + throw exception(FILE_NULL); + } + if (!(file.getOriginalFilename().endsWith(".xlsx") || file.getOriginalFilename().endsWith(".xls"))) { + throw exception(FILE_FORMAT_ERROR); + } + if (file.getSize() > fileSize) { + throw exception(FILE_EXCEED_SIZE); + } + if (file.getSize() == 0) { + throw exception(FILE_CONTENT_NULL); + } + + return true; + } }