From b3fe06c151dc8455649bf0a46e481ceb83e3ea2a Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期六, 07 十一月 2026 13:37:54 +0800
Subject: [PATCH] feat: 完成好水川 MOM 需求1/2/4/5/8(装箱、BOM成本、销售合同、劳动合同、留样)
---
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApiImpl.java | 43 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApiImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApiImpl.java
index 3a81eae..2fa2a19 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApiImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApiImpl.java
@@ -17,8 +17,12 @@
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -134,4 +138,43 @@
return success(BeanUtils.toBean(items, ErpPurchaseOrderItemRespDTO.class));
}
+ @Override
+ public CommonResult<Map<Long, BigDecimal>> getItemAveragePurchasePriceMap(Collection<Long> productIds) {
+ if (productIds == null || productIds.isEmpty()) {
+ return success(Collections.emptyMap());
+ }
+ // 1. 鏌ヨ宸插鏍搁噰璐鍗曚腑杩欎簺鐗╂枡鐨勬槑缁�
+ List<ErpPurchaseOrderItemDO> items = purchaseOrderItemMapper
+ .selectListByApprovedOrderAndProductIds(productIds);
+ if (items.isEmpty()) {
+ return success(Collections.emptyMap());
+ }
+ // 2. 鎸夌墿鏂欐眹鎬绘暟閲忓拰閲戦锛岃绠楀姞鏉冨钩鍧囦环锛歋UM(鎬讳环) / SUM(鏁伴噺)
+ Map<Long, BigDecimal> totalPriceMap = new HashMap<>();
+ Map<Long, BigDecimal> totalCountMap = new HashMap<>();
+ for (ErpPurchaseOrderItemDO item : items) {
+ if (item.getProductId() == null || item.getCount() == null
+ || item.getCount().compareTo(BigDecimal.ZERO) <= 0) {
+ continue;
+ }
+ BigDecimal totalPrice = item.getTotalPrice();
+ if (totalPrice == null && item.getProductPrice() != null) {
+ totalPrice = item.getProductPrice().multiply(item.getCount());
+ }
+ if (totalPrice == null) {
+ continue;
+ }
+ totalPriceMap.merge(item.getProductId(), totalPrice, BigDecimal::add);
+ totalCountMap.merge(item.getProductId(), item.getCount(), BigDecimal::add);
+ }
+ Map<Long, BigDecimal> result = new HashMap<>(totalCountMap.size());
+ totalCountMap.forEach((productId, totalCount) -> {
+ BigDecimal totalPrice = totalPriceMap.get(productId);
+ if (totalPrice != null && totalCount.compareTo(BigDecimal.ZERO) > 0) {
+ result.put(productId, totalPrice.divide(totalCount, 6, RoundingMode.HALF_UP));
+ }
+ });
+ return success(result);
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3