From 5884572ac65063fcf6bd30d9ecc61b800030cfc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 4 Nov 2025 17:22:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E5=A4=8D=E9=92=A2=E6=9E=84?= =?UTF-8?q?=E4=BB=B6=E9=80=81=E8=B4=A7=E5=8D=95excel=E5=9C=A8=E4=BD=8E?= =?UTF-8?q?=E7=89=88=E6=9C=ACwps=E4=B8=AD=E6=97=A0=E6=B3=95=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=BA=8C=E7=BB=B4=E7=A0=81=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nflg-wms-admin/pom.xml | 11 +++++-- .../StructuralPackageOrderController.java | 29 ++++++++++-------- .../template/钢构包送货单模版.xlsx | Bin 12215 -> 12181 bytes 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/nflg-wms-admin/pom.xml b/nflg-wms-admin/pom.xml index 47b7f37e..8de9cccf 100644 --- a/nflg-wms-admin/pom.xml +++ b/nflg-wms-admin/pom.xml @@ -119,10 +119,15 @@ + + + + + - cn.idev.excel - fastexcel - 1.3.0 + com.alibaba + easyexcel + 3.3.4 org.springframework.retry diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java index ea599aca..9ba50989 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java @@ -8,12 +8,15 @@ import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.digest.DigestUtil; import cn.hutool.json.JSONUtil; -import cn.idev.excel.EasyExcel; -import cn.idev.excel.enums.CellDataTypeEnum; -import cn.idev.excel.metadata.data.ImageData; -import cn.idev.excel.metadata.data.WriteCellData; -import cn.idev.excel.write.metadata.WriteSheet; -import cn.idev.excel.write.metadata.fill.FillConfig; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.context.WriteContext; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.enums.WriteTypeEnum; +import com.alibaba.excel.metadata.data.ImageData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.fill.FillConfig; import com.nflg.wms.admin.pojo.document.PackageMaterialScanRecord; import com.nflg.wms.admin.pojo.dto.PdfPageDTO; import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO; @@ -685,10 +688,10 @@ public class StructuralPackageOrderController extends BaseController { ImageData imageData = new ImageData(); imageData.setImageType(ImageData.ImageType.PICTURE_TYPE_PNG); imageData.setImage(QRCodeUtil.generateQRCode(deliverOrder.getNo(), 100, 100)); - imageData.setTop(5); - imageData.setRight(5); - imageData.setBottom(5); - imageData.setLeft(5); + imageData.setTop(0); + imageData.setRight(0); + imageData.setBottom(0); + imageData.setLeft(0); imageData.setRelativeFirstRowIndex(0); imageData.setRelativeFirstColumnIndex(0); imageData.setRelativeLastRowIndex(2); @@ -699,7 +702,7 @@ public class StructuralPackageOrderController extends BaseController { VUtil.trueThrowBusinessError(Objects.isNull(supplier)).throwMessage("供应商不存在"); info.put("supplierName", supplier.getSupplierName()); info.put("abbreviation", supplier.getAbbreviation()); - info.put("today", DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd")); + info.put("today", DateTimeUtil.format(LocalDate.now())); List datas = deliverStructuralPackageOrderService.getInfoByDeliverOrderNo(deliverOrder.getNo()); datas.forEach(it -> { it.setTrayNum(Math.toIntExact(deliverStructuralPackageOrderTrayService.lambdaQuery() @@ -708,11 +711,13 @@ public class StructuralPackageOrderController extends BaseController { }); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(deliverOrder.getNo() + "送货单.xlsx", StandardCharsets.UTF_8)); - try (cn.idev.excel.ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(new ClassPathResource("template/钢构包送货单模版.xlsx").getInputStream()).build()) { + try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(new ClassPathResource("template/钢构包送货单模版.xlsx").getInputStream()).build()) { WriteSheet writeSheet = EasyExcel.writerSheet().build(); FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); excelWriter.fill(datas, fillConfig, writeSheet); excelWriter.fill(info, writeSheet); + WriteContext context = excelWriter.writeContext(); + context.currentSheet(writeSheet, WriteTypeEnum.FILL); } } diff --git a/nflg-wms-admin/src/main/resources/template/钢构包送货单模版.xlsx b/nflg-wms-admin/src/main/resources/template/钢构包送货单模版.xlsx index 36ed9974a371a0184c04cafe7b468526a8de2d5f..1d7f01ffe383ec4fd913b6e1532d26aec9a11262 100644 GIT binary patch delta 6503 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 aH2=MNegpu3|IhzMQQ`dDxIWxhKmHG#UPO2R delta 6532 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