From c30bfeb3840c69f0ad7eeb0ff713d63da7494b23 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 09 十月 2026 11:49:21 +0800
Subject: [PATCH] fix: bom结构移除拖动更新
---
src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java | 41 +++++++++++++++++++++++++++++++----------
1 files changed, 31 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
index a46d8de..52b7e94 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
@@ -226,11 +226,9 @@
List<StockInRecord> currentDirectRecords = directInboundRecords.stream().filter(s -> s.getRecordId().equals(ledgerId)).toList();
for (StockInRecord sir : currentDirectRecords) {
- List<SalesLedgerProduct> currentProducts = salesLedgerProducts.stream().filter(s -> s.getSalesLedgerId().equals(ledgerId)).toList();
- for (SalesLedgerProduct slp : currentProducts) {
- if (sir.getStockInNum() != null && slp.getTaxInclusiveUnitPrice() != null) {
- shippedAmount = shippedAmount.add(sir.getStockInNum().multiply(slp.getTaxInclusiveUnitPrice()));
- }
+ BigDecimal unitPrice = getPurchaseInboundUnitPrice(salesLedgerProducts, ledgerId, sir);
+ if (sir.getStockInNum() != null && unitPrice != null) {
+ shippedAmount = shippedAmount.add(sir.getStockInNum().multiply(unitPrice));
}
}
@@ -323,11 +321,9 @@
List<StockInRecord> currentDirectRecords = directInboundRecords.stream().filter(s -> s.getRecordId().equals(vo.getPurchaseLedgerId())).toList();
for (StockInRecord sir : currentDirectRecords) {
- List<SalesLedgerProduct> currentProducts = salesLedgerProducts.stream().filter(s -> s.getSalesLedgerId().equals(vo.getPurchaseLedgerId())).toList();
- for (SalesLedgerProduct slp : currentProducts) {
- if (sir.getStockInNum() != null && slp.getTaxInclusiveUnitPrice() != null) {
- shippedAmount = shippedAmount.add(sir.getStockInNum().multiply(slp.getTaxInclusiveUnitPrice()));
- }
+ BigDecimal unitPrice = getPurchaseInboundUnitPrice(salesLedgerProducts, vo.getPurchaseLedgerId(), sir);
+ if (sir.getStockInNum() != null && unitPrice != null) {
+ shippedAmount = shippedAmount.add(sir.getStockInNum().multiply(unitPrice));
}
}
@@ -373,4 +369,29 @@
.min(BigDecimal::compareTo)
.orElse(null);
}
+
+ /**
+ * 鐩存帴鍏ュ簱璁板綍锛�7锛夌殑鍚◣鍗曚环锛氭壒娆″彿鏍煎紡涓衡�滈噰璐悎鍚屽彿-閲囪喘浜у搧琛孖D鈥濓紝鎸夊搴斾骇鍝佽鍙栦环
+ */
+ private BigDecimal getPurchaseInboundUnitPrice(List<SalesLedgerProduct> allSlp, Long salesLedgerId, StockInRecord record) {
+ String batchNo = record.getBatchNo();
+ int separatorIndex = batchNo == null ? -1 : batchNo.lastIndexOf('-');
+ if (separatorIndex > -1) {
+ try {
+ Long productId = Long.valueOf(batchNo.substring(separatorIndex + 1));
+ BigDecimal unitPrice = allSlp.stream()
+ .filter(s -> s.getId().equals(productId))
+ .map(SalesLedgerProduct::getTaxInclusiveUnitPrice)
+ .filter(java.util.Objects::nonNull)
+ .findFirst()
+ .orElse(null);
+ if (unitPrice != null) {
+ return unitPrice;
+ }
+ } catch (NumberFormatException ignored) {
+ // 鎵规鍙蜂笉绗﹀悎绾﹀畾鏍煎紡锛屽洖閫�鎸変骇鍝佽鏍煎尮閰�
+ }
+ }
+ return getMinTaxInclusiveUnitPrice(allSlp, salesLedgerId, record.getProductModelId());
+ }
}
--
Gitblit v1.9.3