From ea9a80ccfc89a640e6b3b73276fc66fdc8f9cb1b Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 23 七月 2026 10:19:51 +0800
Subject: [PATCH] feat: 销售和采购单据打印下载
---
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java | 10 +++++
src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java | 3 +
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java | 22 +++++++++++
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 15 +++++++
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java | 11 +++++
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java | 3 +
6 files changed, 64 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
index 816ce27..07a090d 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -32,6 +32,7 @@
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
+import java.util.Map;
/**
* 閲囪喘鍙拌处Controller
@@ -250,4 +251,14 @@
public AjaxResult createPurchaseNo() {
return AjaxResult.success("鐢熸垚鎴愬姛",purchaseLedgerService.getPurchaseNo());
}
+
+ @Operation(summary = "鑾峰彇閲囪喘鍗曟墦鍗版暟鎹�")
+ @GetMapping("/printData/{id}")
+ public AjaxResult printData(@PathVariable Long id) {
+ Map<String, Object> data = purchaseLedgerService.getPrintData(id);
+ if (data == null) {
+ return AjaxResult.error("閲囪喘鍗曚笉瀛樺湪");
+ }
+ return AjaxResult.success(data);
+ }
}
diff --git a/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java b/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
index a0378af..b9afc5c 100644
--- a/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
+++ b/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
@@ -10,6 +10,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
+import java.util.Map;
/**
* 閲囪喘鍙拌处Service鎺ュ彛
@@ -44,4 +45,6 @@
AjaxResult importData(MultipartFile file);
PurchaseLedgerDto getPurchaseByCode(PurchaseLedgerDto purchaseLedgerDto);
+
+ Map<String, Object> getPrintData(Long id);
}
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index fa7726d..96b0a54 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -29,7 +29,9 @@
import com.ruoyi.other.mapper.TempFileMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
+import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysDeptMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.purchase.dto.PurchaseLedgerDto;
import com.ruoyi.purchase.dto.PurchaseLedgerImportDto;
@@ -87,6 +89,7 @@
private final SysUserMapper userMapper;
private final TempFileMapper tempFileMapper;
private final CommonFileMapper commonFileMapper;
+ private final SysDeptMapper sysDeptMapper;
private final SupplierManageMapper supplierManageMapper;
private final ProductMapper productMapper;
private final ProductModelMapper productModelMapper;
@@ -668,4 +671,23 @@
}
return sb.toString();
}
+
+ @Override
+ public Map<String, Object> getPrintData(Long id) {
+ PurchaseLedger purchaseLedger = getById(id);
+ if (purchaseLedger == null) {
+ return null;
+ }
+ List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(
+ new LambdaQueryWrapper<SalesLedgerProduct>()
+ .eq(SalesLedgerProduct::getSalesLedgerId, id)
+ .eq(SalesLedgerProduct::getType, 2)
+ );
+ SysDept dept = sysDeptMapper.selectDeptById(100L);
+ Map<String, Object> result = new HashMap<>();
+ result.put("companyName", dept != null ? dept.getDeptName() : "");
+ result.put("ledger", purchaseLedger);
+ result.put("products", products);
+ return result;
+ }
}
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index 44b8563..33ab62f 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -281,4 +281,14 @@
public R getSalesLedgerWithProductsLoss(Long salesLedgerId) {
return R.ok(salesLedgerService.getSalesLedgerWithProductsLoss(salesLedgerId));
}
+
+ @Operation(summary = "鑾峰彇閿�鍞崟鎵撳嵃鏁版嵁")
+ @GetMapping("/printData/{id}")
+ public AjaxResult printData(@PathVariable Long id) {
+ Map<String, Object> data = salesLedgerService.getPrintData(id);
+ if (data == null) {
+ return AjaxResult.error("閿�鍞崟涓嶅瓨鍦�");
+ }
+ return AjaxResult.success(data);
+ }
}
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
index 539e67c..bffc3d4 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -18,6 +18,7 @@
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
+import java.util.Map;
/**
* 閿�鍞彴璐ervice鎺ュ彛
@@ -55,4 +56,6 @@
List<LossProductModelDto> getSalesLedgerWithProductsLoss(Long salesLedgerId);
IPage<SalesLedgerDto> listSalesLedger(SalesLedgerDto salesLedgerDto, Page page);
+
+ Map<String, Object> getPrintData(Long id);
}
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 73709ad..b52b8bf 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -778,4 +778,19 @@
return totalAmount;
}
}
+
+ @Override
+ public Map<String, Object> getPrintData(Long id) {
+ SalesLedgerDto dto = new SalesLedgerDto();
+ dto.setId(id);
+ SalesLedgerDto ledger = getSalesLedgerWithProducts(dto);
+ if (ledger == null) {
+ return null;
+ }
+ SysDept dept = sysDeptMapper.selectDeptById(100L);
+ Map<String, Object> result = new HashMap<>();
+ result.put("companyName", dept != null ? dept.getDeptName() : "");
+ result.put("ledger", ledger);
+ return result;
+ }
}
--
Gitblit v1.9.3