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