From a0d55bcc8bfebd408d16166b27b7e05b3e4c9f4a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 02 十一月 2026 16:51:50 +0800
Subject: [PATCH] feat(erp): 采购/销售明细按含税单价口径拆税,供应商合同补供应商名称与附件

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpSupplierContractController.java |   35 ++++++++++++++++++++++++++++++++---
 1 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpSupplierContractController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpSupplierContractController.java
index 96b3b99..99ede65 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpSupplierContractController.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpSupplierContractController.java
@@ -4,6 +4,7 @@
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
@@ -14,6 +15,9 @@
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierContractDO;
 import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderMapper;
 import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierContractService;
+import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi;
+import cn.iocoder.yudao.module.srm.api.supplier.dto.SrmSupplierRespDTO;
+import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -26,6 +30,7 @@
 
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -43,6 +48,10 @@
     private ErpSupplierContractService contractService;
     @Resource
     private ErpPurchaseOrderMapper purchaseOrderMapper;
+    @Resource
+    private StorageAttachmentApi storageAttachmentApi;
+    @Resource
+    private SrmSupplierApi srmSupplierApi;
 
     @PostMapping("/create")
     @Operation(summary = "鍒涘缓渚涘簲鍟嗗悎鍚�")
@@ -74,7 +83,12 @@
     @PreAuthorize("@ss.hasPermission('erp:supplier-contract:query')")
     public CommonResult<ErpSupplierContractRespVO> getContract(@RequestParam("id") Long id) {
         ErpSupplierContractDO contract = contractService.getContract(id);
-        return success(contract == null ? null : buildResp(contract));
+        if (contract == null) {
+            return success(null);
+        }
+        ErpSupplierContractRespVO respVO = buildRespList(java.util.Collections.singletonList(contract)).get(0);
+        respVO.setAttachmentList(storageAttachmentApi.listAttachments("erp_supplier_contract", id));
+        return success(respVO);
     }
 
     @GetMapping("/page")
@@ -112,15 +126,22 @@
         if (CollUtil.isEmpty(list)) {
             return java.util.Collections.emptyList();
         }
+        // 渚涘簲鍟嗗悕绉帮細鎵归噺鏌ヨ鍚庡洖濉紝閬垮厤閫愯鏌ュ簱
+        Map<Long, SrmSupplierRespDTO> supplierMap = getSupplierMap(
+                list.stream().map(ErpSupplierContractDO::getSupplierId)
+                        .filter(java.util.Objects::nonNull)
+                        .collect(Collectors.toSet()));
         List<ErpSupplierContractRespVO> result = new java.util.ArrayList<>(list.size());
         for (ErpSupplierContractDO contract : list) {
-            result.add(buildResp(contract));
+            result.add(buildResp(contract, supplierMap));
         }
         return result;
     }
 
-    private ErpSupplierContractRespVO buildResp(ErpSupplierContractDO contract) {
+    private ErpSupplierContractRespVO buildResp(ErpSupplierContractDO contract, Map<Long, SrmSupplierRespDTO> supplierMap) {
         ErpSupplierContractRespVO vo = BeanUtils.toBean(contract, ErpSupplierContractRespVO.class);
+        // 渚涘簲鍟嗗悕绉帮紙鍒楄〃銆佽鎯呫�佸鍑洪兘瑕佸弽鏄撅紝鍚﹀垯渚涘簲鍟嗗垪鏄┖鐨勶級
+        MapUtils.findAndThen(supplierMap, vo.getSupplierId(), supplier -> vo.setSupplierName(supplier.getName()));
         // 鎵ц杩涘害锛氬叧鑱旂殑閲囪喘璁㈠崟鏁伴噺涓庨噾棰濆悎璁�
         List<ErpPurchaseOrderDO> orders = purchaseOrderMapper.selectListByContractId(contract.getId());
         vo.setOrderCount(orders.size());
@@ -131,4 +152,12 @@
         return vo;
     }
 
+    private Map<Long, SrmSupplierRespDTO> getSupplierMap(Collection<Long> supplierIds) {
+        if (CollUtil.isEmpty(supplierIds)) {
+            return java.util.Collections.emptyMap();
+        }
+        return srmSupplierApi.getSupplierList(supplierIds).getCheckedData().stream()
+                .collect(Collectors.toMap(SrmSupplierRespDTO::getId, v -> v, (a, b) -> a));
+    }
+
 }

--
Gitblit v1.9.3