From a0242a1df407e839a55da23fd61364413f57641b Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 09 二月 2026 17:26:57 +0800
Subject: [PATCH] 1.BOM中计算好物料后不需要直接出库 2.生产管控添加生产日期

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   26 ++++++++++++++++++--------
 1 files changed, 18 insertions(+), 8 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 7a67d50..5079036 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -37,6 +37,7 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -153,10 +154,8 @@
             productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
             productionProductInput.setProductMainId(productionProductMain.getId());
             productionProductInputMapper.insert(productionProductInput);
-            stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
-
-        }
-        /*鏂板鎶ュ伐浜у嚭琛�*/
+//            stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
+        }        /*鏂板鎶ュ伐浜у嚭琛�*/
         ProductionProductOutput productionProductOutput = new ProductionProductOutput();
         productionProductOutput.setProductMainId(productionProductMain.getId());
         productionProductOutput.setProductModelId(productProcessRouteItem.getProductModelId());
@@ -207,7 +206,7 @@
                 }
             }else {
                 //鐩存帴鍏ュ簱
-                stockUtils.addStock(productProcessRouteItem.getProductModelId(), productionProductOutput.getQuantity(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
+                stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
             }
             /*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
             ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
@@ -288,11 +287,17 @@
             ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
             if (productOrder != null) {
                 BigDecimal orderCompleteQty = productOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productOrder.getCompleteQuantity();
-                BigDecimal outputQty = productionProductOutput.getQuantity() != null
-                        ? productionProductOutput.getQuantity() : BigDecimal.ZERO;
+                BigDecimal totalQty = productionProductOutput.getQuantity() != null ? productionProductOutput.getQuantity() : BigDecimal.ZERO;
+                BigDecimal scrapQty = productionProductOutput.getScrapQty() != null ? productionProductOutput.getScrapQty() : BigDecimal.ZERO;
 
-                productOrder.setCompleteQuantity(orderCompleteQty.subtract(outputQty));
+                BigDecimal actualQualifiedQty = totalQty.subtract(scrapQty);
+
+                BigDecimal newCompleteQty = orderCompleteQty.subtract(actualQualifiedQty);
+
+                productOrder.setCompleteQuantity(newCompleteQty.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : newCompleteQty);
+
                 productOrder.setEndTime(null);
+
                 productOrderMapper.updateById(productOrder);
             } else {
                 throw new ServiceException("鍏宠仈鐨勭敓浜ц鍗曚笉瀛樺湪");
@@ -331,4 +336,9 @@
     public ArrayList<Long> listMain(List<Long> idList) {
         return productionProductMainMapper.listMain(idList);
     }
+
+    @Override
+    public IPage<HashMap<String, Object>> queryProductInputAndOutput(Page page, ProductionProductMainDto productionProductMainDto) {
+        return productionProductMainMapper.queryProductInputAndOutput(page, productionProductMainDto);
+    }
 }

--
Gitblit v1.9.3