From 754431328c667fc5bfecb3220a27c6afbaf6f5ea Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期一, 16 三月 2026 13:33:38 +0800
Subject: [PATCH] fix(production): 修复首末工序数量计算逻辑
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 6 +++---
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 14 +++++++++++---
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index 57fcc88..dc66033 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -164,15 +164,23 @@
List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomAndProcess(productProcessRoute.getBomId(), productProcess.getId());
List<Long> lastProcessIds = new ArrayList<>();
+ List<Long> firstProcessIds = new ArrayList<>();
if (!allProcess.isEmpty()) {
String lastProcessName = allProcess.get(allProcess.size() - 1).getProcessName();
+ String firstProcessName = allProcess.get(0).getProcessName();
for (int i = allProcess.size() - 1; i >= 0; i--) {
ProductStructureDto d = allProcess.get(i);
-
if (lastProcessName.equals(d.getProcessName())) {
lastProcessIds.add(d.getId());
+ } else {
+ break;
+ }
+ }
+ for (ProductStructureDto d : allProcess) {
+ if (firstProcessName.equals(d.getProcessName())) {
+ firstProcessIds.add(d.getId());
} else {
break;
}
@@ -190,9 +198,9 @@
ProductModel productModel1 = productModelMapper.selectById(productStructureDto.getProductModelId());
Product product = productMapper.selectById(productModel1.getProductId());
- // 鍒ゆ柇鏄惁涓烘渶鍚庝竴閬撳伐搴�
+ // 鍒ゆ柇鏄惁涓烘渶鍚庝竴閬撳伐搴� 鎴栬�呬负绗竴閬撳伐搴�
BigDecimal needQuantity = dto.getQuantity().divide(productStructureDto.getUnitQuantity(), 2, BigDecimal.ROUND_HALF_UP);
- if (lastProcessIds.contains(productStructureDto.getId())) {
+ if (lastProcessIds.contains(productStructureDto.getId()) || firstProcessIds.contains(productStructureDto.getId())) {
needQuantity = dto.getQuantity().multiply(productStructureDto.getUnitQuantity());
}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index 3ba1104..383e0ad 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -368,9 +368,9 @@
quantity = quantity.multiply(productStructureDto.getUnitQuantity());
// 绗竴閬撳伐搴�
BigDecimal result = quantity;
-// if(i == 0){
-// result = quantity.divide(productStructureDto.getUnitQuantity(), 2, RoundingMode.HALF_UP);
-// }
+ if(i == 0){
+ result = quantity.divide(productStructureDto.getUnitQuantity(), 2, RoundingMode.HALF_UP);
+ }
resultMap.put(productStructureDto.getProcessId(),result );
} else {
if(Optional.ofNullable(productStructureDto.getProcessName()).orElse("").contains("鍖呰")){
--
Gitblit v1.9.3