From ff361539e3ffd6e62100e392ddda2f4ab9dfee62 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 27 五月 2026 13:15:42 +0800
Subject: [PATCH] 工序调整, 报工反改订单数量,判断是最后一道工序才修改订单完成数量

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   50 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 31 insertions(+), 19 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 151eccb..c2d2292 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -15,15 +15,11 @@
 import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.DictUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.procurementrecord.utils.StockUtils;
-import com.ruoyi.production.dto.ProductionProductMainDetailExportDto;
-import com.ruoyi.production.dto.ProductionProductMainDto;
-import com.ruoyi.production.dto.ProductionProductMainSummaryExportDto;
-import com.ruoyi.production.dto.ProductionReportDailySummaryDto;
-import com.ruoyi.production.dto.ProductionReportStateDto;
-import com.ruoyi.production.enums.ProductProcessEnum;
+import com.ruoyi.production.dto.*;
 import com.ruoyi.production.mapper.ProductionProductReportDailyMapper;
 import com.ruoyi.production.pojo.ProductionProductReportDaily;
 import com.ruoyi.production.mapper.*;
@@ -243,8 +239,19 @@
 
     @Override
     public ProductionReportStateDto reportState(Long workOrderId, Long productProcessRouteItemId) {
-        ProductionProductMain running = getRunning(workOrderId, productProcessRouteItemId);
         ProductionReportStateDto dto = new ProductionReportStateDto();
+        ProductWorkOrder workOrder = productWorkOrderMapper.selectById(workOrderId);
+        if (workOrder != null) {
+            BigDecimal planQty = workOrder.getPlanQuantity() == null ? BigDecimal.ZERO : workOrder.getPlanQuantity();
+            BigDecimal completeQty = workOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : workOrder.getCompleteQuantity();
+            //  鐢熶骇鎶ュ伐鏁伴噺宸插畬鎴�
+            if (planQty.compareTo(BigDecimal.ZERO) > 0 && completeQty.compareTo(planQty) >= 0) {
+                dto.setState(3);
+                return dto;
+            }
+        }
+
+        ProductionProductMain running = getRunning(workOrderId, productProcessRouteItemId);
         if (running == null) {
             dto.setState(1);
             return dto;
@@ -340,6 +347,7 @@
         LocalDateTime endTime = LocalDateTime.now();
         long durationSeconds = Duration.between(productionProductMain.getReportStartTime(), endTime).getSeconds();
         BigDecimal durationMinutes = secondsToMinutesExact(durationSeconds);
+
         int finishRows = productionProductMainMapper.update(
                 null,
                 Wrappers.<ProductionProductMain>lambdaUpdate()
@@ -426,18 +434,26 @@
             }
 
             // 鏃犲伐鑹鸿矾绾垮満鏅細鎶ュ伐鍗宠鍏ョ敓浜ц鍗曞畬鎴愭暟閲�
+//            int poRows = productOrderMapper.addCompleteQtyIfNotExceed(productOrder.getId(), productQty);
+//            if (poRows <= 0) {
+//                ProductOrder currentOrder = productOrderMapper.selectById(productOrder.getId());
+//                throw new ServiceException("鏈鐢熶骇鏁伴噺涓嶈兘澶т簬璁㈠崟鍓╀綑鏁伴噺锛屽墿浣欐暟閲�: "
+//                        + (currentOrder == null ? "0" : currentOrder.getQuantity().subtract(currentOrder.getCompleteQuantity())));
+//            }
+            List<ProductProcessRouteItemDto> productProcessRouteItemDtos = productProcessRouteItemMapper.listItem(productOrder.getId());
+            ProductOrder currentOrder = productOrderMapper.selectById(productOrder.getId());
+            if (productProcessRouteItemDtos.get(productProcessRouteItemDtos.size() - 1).getId().equals(dto.getProductProcessRouteItemId())) {
             int poRows = productOrderMapper.addCompleteQtyIfNotExceed(productOrder.getId(), productQty);
             if (poRows <= 0) {
-                ProductOrder currentOrder = productOrderMapper.selectById(productOrder.getId());
                 throw new ServiceException("鏈鐢熶骇鏁伴噺涓嶈兘澶т簬璁㈠崟鍓╀綑鏁伴噺锛屽墿浣欐暟閲�: "
                         + (currentOrder == null ? "0" : currentOrder.getQuantity().subtract(currentOrder.getCompleteQuantity())));
             }
-            ProductOrder latestOrder = productOrderMapper.selectById(productOrder.getId());
+            }
             if (needQuality
-                    && latestOrder != null
-                    && latestOrder.getCompleteQuantity() != null
-                    && latestOrder.getQuantity() != null
-                    && latestOrder.getCompleteQuantity().compareTo(latestOrder.getQuantity()) >= 0) {
+                    && currentOrder != null
+                    && currentOrder.getCompleteQuantity() != null
+                    && currentOrder.getQuantity() != null
+                    && currentOrder.getCompleteQuantity().compareTo(currentOrder.getQuantity()) >= 0) {
                 // 璁㈠崟瀹屾垚鏃舵柊澧炲嚭鍘傛
                 createQualityInspect(productionProductMain.getId(), outputProductModelId, productQty, 2, null);
             }
@@ -540,12 +556,8 @@
         if (process == null || process.getType() == null) {
             return "鍏朵粬";
         }
-        for (ProductProcessEnum value : ProductProcessEnum.values()) {
-            if (value.getCode().equals(process.getType())) {
-                return value.getInfo();
-            }
-        }
-        return "鍏朵粬";
+        String dictLabel = DictUtils.getDictLabel("product_process_type", String.valueOf(process.getType()));
+        return (dictLabel == null || dictLabel.isEmpty()) ? "鍏朵粬" : dictLabel;
     }
 
     private void saveDailyDurations(ProductionProductMain main, LocalDateTime start, LocalDateTime end) {

--
Gitblit v1.9.3