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