From 7a7a4b207d96a88bb1b324513ad475071289260e Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 27 三月 2026 18:30:24 +0800
Subject: [PATCH] yys 1.删除报工记录bug
---
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 56 +++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 43 insertions(+), 13 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 75ef7ef..b249c31 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -34,6 +34,7 @@
import com.ruoyi.production.mapper.ProductionProductMainMapper;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -89,6 +90,27 @@
return productionProductMainMapper.listPageProductionProductMainDto(page, productionProductMainDto);
}
+ public BigDecimal getRatio(List<ProductWorkOrder> productWorkOrderList){
+ // 鑾峰彇瀹屾垚鏁伴噺
+ BigDecimal completeQuantity = productWorkOrderList
+ .stream()
+ .filter(item -> item.getStatus() == 3)
+ .map(ProductWorkOrder::getCompleteQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ // 鑾峰彇鎵�鏈夋暟閲�
+ BigDecimal totalQuantity = productWorkOrderList
+ .stream()
+ .map(ProductWorkOrder::getPlanQuantity)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ // 鑾峰彇鏈畬鎴愭暟閲�
+ BigDecimal unCompleteQuantity = totalQuantity.subtract(completeQuantity);
+ if (unCompleteQuantity.compareTo(BigDecimal.ZERO) <= 0) {
+ return BigDecimal.ZERO;
+ }
+ // 璁$畻姣斾緥
+ return unCompleteQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP);
+ }
+
@Override
public Boolean addProductMain(ProductionProductMainDto dto) {
SysUser user = userMapper.selectUserById(dto.getUserId());
@@ -98,13 +120,14 @@
if (productProcessRouteItem == null) {
throw new RuntimeException("宸ヨ壓璺嚎椤逛笉瀛樺湪");
}
- // 鑾峰彇璁㈠崟鐨勫凡瀹屾垚宸ュ崟
+ // 鑾峰彇璁㈠崟鐨勫伐鍗�
List<ProductWorkOrder> productWorkOrderList = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
- .eq(ProductWorkOrder::getProductOrderId, productProcessRouteItem.getProductOrderId())
- .eq(ProductWorkOrder::getStatus, 3));
+ .eq(ProductWorkOrder::getProductOrderId, productProcessRouteItem.getProductOrderId()));
if(CollectionUtils.isEmpty(productWorkOrderList)){
productWorkOrderList = new ArrayList<>();
}
+ BigDecimal ratio = getRatio(productWorkOrderList);
+
//褰撳墠鍏蜂綋宸ュ簭
ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId());
//宸ヨ壓璺嚎涓綋鍓嶅伐搴忓搴旂殑浜у嚭瑙勬牸鍨嬪彿
@@ -235,10 +258,12 @@
productOrder.setStartTime(LocalDateTime.now());//寮�濮嬫椂闂�
productOrder.setStatus("鐢熶骇涓�");
}
+ // 閫氳繃姣斾緥璁$畻瀹屾垚鏁伴噺
+ productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio));
if (productWorkOrderList.size() == productProcessRouteItems.size() - 1) {
//濡傛灉鏄渶鍚庝竴閬撳伐搴忔姤宸ヤ箣鍚庣敓浜ц鍗曞畬鎴愭暟閲�+
- productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().add(productQty));
if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) {
+ productOrder.setCompleteQuantity(productOrder.getQuantity());
productOrder.setEndTime(LocalDateTime.now());//缁撴潫鏃堕棿
productOrder.setStatus("宸插畬鎴�");
// 鐢熶骇瀹屾垚鍏ュ簱
@@ -260,11 +285,11 @@
salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
}
//濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
- if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
- if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
- stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
- }
- }
+// if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
+// if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
+// stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+// }
+// }
return true;
}
@@ -288,7 +313,7 @@
BigDecimal completeQty = productWorkOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productWorkOrder.getCompleteQuantity();
BigDecimal validQuantity = outputQty.subtract(scrapQty);
-
+ productWorkOrder.setStatus(2);
productWorkOrder.setCompleteQuantity(completeQty.subtract(validQuantity));
productWorkOrder.setActualEndTime(null);
productWorkOrderMapper.updateById(productWorkOrder);
@@ -308,11 +333,16 @@
BigDecimal actualQualifiedQty = totalQty.subtract(scrapQty);
BigDecimal newCompleteQty = orderCompleteQty.subtract(actualQualifiedQty);
-
- productOrder.setCompleteQuantity(newCompleteQty.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : newCompleteQty);
+ List<ProductWorkOrder> productWorkOrderList = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
+ .eq(ProductWorkOrder::getProductOrderId, productProcessRouteItem.getProductOrderId()));
+ if(CollectionUtils.isEmpty(productWorkOrderList)){
+ productWorkOrderList = new ArrayList<>();
+ }
+ BigDecimal ratio = getRatio(productWorkOrderList);
+ productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio));
productOrder.setEndTime(null);
-
+ productOrder.setStatus("鐢熶骇涓�");
productOrderMapper.updateById(productOrder);
} else {
throw new ServiceException("鍏宠仈鐨勭敓浜ц鍗曚笉瀛樺湪");
--
Gitblit v1.9.3