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 |   44 +++++++++++++++++++++++++++-----------------
 1 files changed, 27 insertions(+), 17 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 f8408e2..b249c31 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -90,18 +90,7 @@
         return productionProductMainMapper.listPageProductionProductMainDto(page, productionProductMainDto);
     }
 
-    @Override
-    public Boolean addProductMain(ProductionProductMainDto dto) {
-        SysUser user = userMapper.selectUserById(dto.getUserId());
-        ProductionProductMain productionProductMain = new ProductionProductMain();
-        //褰撳墠宸ヨ壓璺嚎瀵瑰簲鐨勫伐搴忚鎯�
-        ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(dto.getProductProcessRouteItemId());
-        if (productProcessRouteItem == null) {
-            throw new RuntimeException("宸ヨ壓璺嚎椤逛笉瀛樺湪");
-        }
-        // 鑾峰彇璁㈠崟鐨勫伐鍗�
-        List<ProductWorkOrder> productWorkOrderList = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
-                .eq(ProductWorkOrder::getProductOrderId, productProcessRouteItem.getProductOrderId()));
+    public BigDecimal getRatio(List<ProductWorkOrder> productWorkOrderList){
         // 鑾峰彇瀹屾垚鏁伴噺
         BigDecimal completeQuantity = productWorkOrderList
                 .stream()
@@ -116,13 +105,29 @@
         // 鑾峰彇鏈畬鎴愭暟閲�
         BigDecimal unCompleteQuantity = totalQuantity.subtract(completeQuantity);
         if (unCompleteQuantity.compareTo(BigDecimal.ZERO) <= 0) {
-            throw new ServiceException("璇ュ伐鍗曞凡鍏ㄩ儴瀹屾垚");
+            return BigDecimal.ZERO;
         }
         // 璁$畻姣斾緥
-        BigDecimal ratio = unCompleteQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP);
+        return unCompleteQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP);
+    }
+
+    @Override
+    public Boolean addProductMain(ProductionProductMainDto dto) {
+        SysUser user = userMapper.selectUserById(dto.getUserId());
+        ProductionProductMain productionProductMain = new ProductionProductMain();
+        //褰撳墠宸ヨ壓璺嚎瀵瑰簲鐨勫伐搴忚鎯�
+        ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(dto.getProductProcessRouteItemId());
+        if (productProcessRouteItem == null) {
+            throw new RuntimeException("宸ヨ壓璺嚎椤逛笉瀛樺湪");
+        }
+        // 鑾峰彇璁㈠崟鐨勫伐鍗�
+        List<ProductWorkOrder> productWorkOrderList = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
+                .eq(ProductWorkOrder::getProductOrderId, productProcessRouteItem.getProductOrderId()));
         if(CollectionUtils.isEmpty(productWorkOrderList)){
             productWorkOrderList = new ArrayList<>();
         }
+        BigDecimal ratio = getRatio(productWorkOrderList);
+
         //褰撳墠鍏蜂綋宸ュ簭
         ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId());
         //宸ヨ壓璺嚎涓綋鍓嶅伐搴忓搴旂殑浜у嚭瑙勬牸鍨嬪彿
@@ -257,8 +262,8 @@
             productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio));
             if (productWorkOrderList.size() == productProcessRouteItems.size() - 1) {
                 //濡傛灉鏄渶鍚庝竴閬撳伐搴忔姤宸ヤ箣鍚庣敓浜ц鍗曞畬鎴愭暟閲�+
-                productOrder.setCompleteQuantity(productOrder.getQuantity());
                 if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) {
+                    productOrder.setCompleteQuantity(productOrder.getQuantity());
                     productOrder.setEndTime(LocalDateTime.now());//缁撴潫鏃堕棿
                     productOrder.setStatus("宸插畬鎴�");
                     // 鐢熶骇瀹屾垚鍏ュ簱
@@ -328,8 +333,13 @@
                 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("鐢熶骇涓�");

--
Gitblit v1.9.3