From 5f33aed80268633d269f2514ef54b818706e10b6 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 27 五月 2026 17:06:26 +0800
Subject: [PATCH] 生产入库逻辑修改,只有最后一道工序的报工才会入库,只有成品检验和原材料检验入库

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   40 ++++++++++++++++++++++++----------------
 1 files changed, 24 insertions(+), 16 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 d9f8571..d61d016 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -42,10 +42,7 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static cn.hutool.core.date.LocalDateTimeUtil.between;
@@ -161,8 +158,8 @@
 
         productionProductMain.setProductProcessRouteItemId(dto.getProductProcessRouteItemId());
         productionProductMain.setWorkOrderId(dto.getWorkOrderId());
-        productionProductMain.setAuditUserId(dto.getAuditUserId());
-        productionProductMain.setAuditUserName(dto.getAuditUserName());
+//        productionProductMain.setAuditUserId(dto.getAuditUserId());
+//        productionProductMain.setAuditUserName(dto.getAuditUserName());
         productionProductMain.setStatus(0);
         if (ObjectUtils.isNotEmpty(dto.getStartTime()) && ObjectUtils.isNotEmpty(dto.getEndTime())) {
             productionProductMain.setStartTime(dto.getStartTime());
@@ -173,6 +170,11 @@
         }
         productionProductMain.setDeviceId(dto.getDeviceId());
         productionProductMain.setDeviceName(dto.getDeviceName());
+
+        // 瀹℃壒浜轰负鑷繁 鐩存帴閫氳繃瀹℃壒
+        productionProductMain.setAuditUserName(SecurityUtils.getUsername());
+        productionProductMain.setAuditUserId(SecurityUtils.getUserId());
+
         productionProductMainMapper.insert(productionProductMain);
         /*鏂板鎶ュ伐鎶曞叆琛�*/
         List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomAndProcess(productProcessRoute.getBomId(), productProcess.getId());
@@ -184,14 +186,12 @@
             productStructureDtos.add(productStructureDto);
         }
         for (ProductStructureDto productStructureDto : productStructureDtos) {
-
             ProductionProductInput productionProductInput = new ProductionProductInput();
             productionProductInput.setProductModelId(productStructureDto.getProductModelId());
             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());
-
         }
         /*鏂板鎶ュ伐浜у嚭琛�*/
         ProductionProductOutput productionProductOutput = new ProductionProductOutput();
@@ -200,6 +200,7 @@
         productionProductOutput.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO);
         productionProductOutput.setScrapQty(dto.getScrapQty() != null ? dto.getScrapQty() : BigDecimal.ZERO);
         productionProductOutput.setReplenishQty(dto.getReplenishQty());
+        productionProductOutput.setAddQty(dto.getAddQty() != null ? dto.getAddQty() : BigDecimal.ZERO);
         productionProductOutputMapper.insert(productionProductOutput);
         //鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺-鎶ュ簾鏁伴噺
         BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
@@ -211,7 +212,7 @@
             if (ObjectUtils.isNull(productWorkOrder.getActualStartTime())) {
                 productWorkOrder.setActualStartTime(LocalDate.now());//瀹為檯寮�濮嬫椂闂�
             }
-            if (productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) == 0) {
+            if (productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) >= 0) {
                 productWorkOrder.setActualEndTime(LocalDate.now());//瀹為檯缁撴潫鏃堕棿
             }
             productWorkOrder.setEndProductTime(now);
@@ -221,17 +222,21 @@
             if (ObjectUtils.isNull(productOrder.getStartTime())) {
                 productOrder.setStartTime(now);//寮�濮嬫椂闂�
             }
-            if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
+            if (productProcessRouteItem.getDragSort() >= productProcessRouteItems.size() -1 ) {
                 //濡傛灉鏄渶鍚庝竴閬撳伐搴忔姤宸ヤ箣鍚庣敓浜ц鍗曞畬鎴愭暟閲�+
                 productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().add(productQty));
-                if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) {
+                if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) >= 0) {
                     productOrder.setEndTime(now);//缁撴潫鏃堕棿
                 }
             }
             productOrderMapper.updateById(productOrder);
         }
-
-        //nextAddProductMain(productionProductOutput) // 鐢变簬闇�瑕佸鏍革紝鎵�浠ラ渶瑕佹媶灏佷笅鏉�
+        ProductAuditVo productAuditVo = new ProductAuditVo();
+        productAuditVo.setId(productionProductMain.getId());
+        productAuditVo.setAuditStatus(AuditEnum.AUDIT_SUCCESS);
+        productAuditVo.setAuditOpinion("");
+        ((ProductionProductMainService) AopContext.currentProxy()).auditProductMain(productAuditVo);
+//        nextAddProductMain(productionProductOutput) // 鐢变簬闇�瑕佸鏍革紝鎵�浠ラ渶瑕佹媶灏佷笅鏉�
         return true;
     }
 
@@ -332,7 +337,7 @@
                 //瀵瑰簲鐨勮繃绋嬫鎴栬�呭嚭鍘傛
                 int inspectType = 1;
                 String process = productProcess.getName();//宸ュ簭
-                if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
+                if (productProcessRouteItem.getDragSort() == (productProcessRouteItems.size()-1)) {
                     //鏈�鍚庝竴閬撳伐搴忕敓鎴愬嚭鍘傛
                     inspectType = 2;
                     process = null;
@@ -366,7 +371,10 @@
                 }
             } else {
                 //鐩存帴鍏ュ簱
-                stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(), "-", "-", "-");
+                if (productProcessRouteItem.getDragSort() == (productProcessRouteItems.size()-1)) {
+                    //鏈�鍚庝竴閬撳伐搴忔墠浼氬叆搴�
+                    stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(), "-", "-", "-");
+                }
             }
 
             /*娣诲姞鐢熶骇鏍哥畻        鍖哄垎宸ュ簭鏄浠惰繕鏄鏃�*/
@@ -386,7 +394,7 @@
                         SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
                                 .productMainId(productionProductMain.getId())
                                 .schedulingUserId(Long.parseLong(s))
-                                .schedulingUserName(userMapper.selectUserById(Long.parseLong(s)).getNickName())
+                                .schedulingUserName(Optional.of(userMapper.selectUserById(Long.parseLong(s))).orElse(new SysUser()).getNickName())
                                 .finishedNum(productQty)
                                 .workHours(workHours)
                                 .process(productProcess.getName())

--
Gitblit v1.9.3