From 0e7cfb2e0657ef7efebfcc47c0d8cfe1f31acf61 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 23 四月 2026 10:42:39 +0800
Subject: [PATCH] 导出销售台账送货单
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 39 ++++++++++++++++++++++++---------------
1 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index ceefa17..c5699b6 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -3,6 +3,8 @@
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.fill.FillConfig;
+import com.alibaba.excel.write.metadata.fill.FillWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -256,13 +258,12 @@
cond.setSalesLedgerId(ledger.getId());
List<SalesLedgerProduct> productList = salesLedgerProductServiceImpl.selectSalesLedgerProductList(cond);
- // 鑷姩搴忓彿
+ // 鑷姩搴忓彿+鐗╂枡缂栫爜璧嬪��
for (int i = 0; i < productList.size(); i++) {
SalesLedgerProduct product = productList.get(i);
if (product != null) {
product.setSerialNumber(i + 1);
product.setOrderNo(ledger.getSalesContractNo());
- // 瀹夊叏鑾峰彇鐗╂枡缂栫爜
Long productModelId = product.getProductModelId();
if (productModelId != null) {
ProductModel productModel = productModelMapper.selectById(productModelId);
@@ -271,13 +272,18 @@
}
}
}
-
}
- // 鍏宠仈鏌ヨ瀹㈡埛淇℃伅
+ // 鍏宠仈瀹㈡埛淇℃伅
Customer customer = customerMapper.selectById(ledger.getCustomerId());
- // 缁勮鏁版嵁
+ // 璁$畻鎬诲悎璁�
+ BigDecimal totalQuantity = BigDecimal.ZERO;
+ for (SalesLedgerProduct product : productList) {
+ totalQuantity = totalQuantity.add(product.getQuantity() == null ? BigDecimal.ZERO : product.getQuantity());
+ }
+
+ // 缁勮椤堕儴闈欐�佹暟鎹�
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("customerName", ledger.getCustomerName());
dataMap.put("companyAddress", customer.getCompanyAddress());
@@ -286,30 +292,33 @@
dataMap.put("companyPhone", customer.getCompanyPhone());
dataMap.put("salesContractNo", ledger.getSalesContractNo());
dataMap.put("deliveryDate", formatDate(LocalDate.now()));
- BigDecimal totalQuantity = new BigDecimal(0);
- for (SalesLedgerProduct product : productList) {
- totalQuantity = totalQuantity.add(product.getQuantity() == null ? BigDecimal.ZERO : product.getQuantity());
- }
- dataMap.put("totalQuantity", totalQuantity);
- // 鐢熸垚Excel
ByteArrayOutputStream bos = new ByteArrayOutputStream();
InputStream templateIs = this.getClass().getResourceAsStream("/static/shipping-note.xlsx");
ExcelWriter writer = EasyExcel.write(bos).withTemplate(templateIs).build();
WriteSheet sheet = EasyExcel.writerSheet().build();
+ // 鍏堝~鍏呮暟鎹紙鍖呮嫭鍚堣锛�
+ Map<String, Object> totalMap = new HashMap<>();
+ totalMap.put("totalQuantity", totalQuantity);
+ dataMap.putAll(totalMap);
writer.fill(dataMap, sheet);
-
+
+ // 鍐嶅~鍏呬骇鍝佸垪琛�
if (!productList.isEmpty()) {
- writer.fill(productList, sheet);
+ FillConfig fillConfig = FillConfig.builder()
+ .forceNewRow(Boolean.TRUE)
+ .build();
+ writer.fill(productList, fillConfig, sheet);
}
writer.finish();
templateIs.close();
- // 鍐欏叆ZIP
- String excelName = String.format("閫佽揣鍗昣%s.xlsx", Optional.ofNullable(ledger.getSalesContractNo()).orElse(String.valueOf(ledger.getId())));
+ // 鎵撳寘ZIP
+ String excelName = String.format("閫佽揣鍗昣%s.xlsx",
+ Optional.ofNullable(ledger.getSalesContractNo()).orElse(String.valueOf(ledger.getId())));
ZipEntry entry = new ZipEntry(excelName);
zos.putNextEntry(entry);
zos.write(bos.toByteArray());
--
Gitblit v1.9.3