From b0bbbf71d1e6ecdbe4abbcc39127f5aac6502f1e Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 20 五月 2026 16:39:25 +0800
Subject: [PATCH] feat(production): 添加产品主记录审核功能

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   54 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 37 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 b09e03d..c0cc9d0 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -48,12 +48,15 @@
 import java.util.Objects;
 import java.util.stream.Collectors;
 
+import static cn.hutool.core.date.LocalDateTimeUtil.between;
+
 @Service
 @AllArgsConstructor
 @Transactional(rollbackFor = Exception.class)
 public class ProductionProductMainServiceImpl extends ServiceImpl<ProductionProductMainMapper, ProductionProductMain> implements ProductionProductMainService {
 
     private final SalesLedgerMapper salesLedgerMapper;
+    private final ProductionMachineRecordMapper productionMachineRecordMapper;
     private IQualityInspectService qualityInspectService;
     private ProductionProductMainMapper productionProductMainMapper;
 
@@ -227,8 +230,12 @@
             }
             productOrderMapper.updateById(productOrder);
         }
-
-        //nextAddProductMain(productionProductOutput) // 鐢变簬闇�瑕佸鏍革紝鎵�浠ラ渶瑕佹媶灏佷笅鏉�
+        ProductAuditVo productAuditVo = new ProductAuditVo();
+        productAuditVo.setId(productionProductMain.getId());
+        productAuditVo.setAuditStatus(AuditEnum.AUDIT_SUCCESS);
+        productAuditVo.setAuditOpinion("");
+        auditProductMain(productAuditVo);
+//        nextAddProductMain(productionProductOutput) // 鐢变簬闇�瑕佸鏍革紝鎵�浠ラ渶瑕佹媶灏佷笅鏉�
         return true;
     }
 
@@ -368,21 +375,34 @@
 
             /*娣诲姞鐢熶骇鏍哥畻        鍖哄垎宸ュ簭鏄浠惰繕鏄鏃�*/
             BigDecimal workHours = productProcess.getSalaryQuota();
-            ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
-            String userIds = productWorkOrder.getUserIds();
-            if (ObjectUtils.isNotEmpty(userIds)) {
-                for (String s : userIds.split(",")) {
-                    SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
-                            .productMainId(productionProductMain.getId())
-                            .schedulingUserId(Long.parseLong(s))
-                            .schedulingUserName(userMapper.selectUserById(Long.parseLong(s)).getNickName())
-                            .finishedNum(productQty)
-                            .workHours(workHours)
-                            .process(productProcess.getName())
-                            .schedulingDate(LocalDate.now())
-                            .tenantId(productionProductOutput.getTenantId())
-                            .build();
-                    salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
+            List<ProductionMachineRecord> productionMachineRecords = productionMachineRecordMapper.selectList(Wrappers.<ProductionMachineRecord>lambdaQuery().eq(ProductionMachineRecord::getWorkOrderId, productionProductMain.getWorkOrderId()));
+            if (ObjectUtils.isNotEmpty(productionMachineRecords)) {
+                for (ProductionMachineRecord productionMachineRecord : productionMachineRecords) {
+                    //璇存槑宸茬粡娣诲姞杩囦簡锛屼笉娣诲姞浜�
+                    if (productionMachineRecord.getReportStatus()) {
+                        continue;
+                    }
+                    for (String s : productionMachineRecord.getOperatorId().split(",")) {
+                        Long minutes = 0L;
+                        if (productionMachineRecord.getMachineStartTime() != null) {
+                            minutes = between(productionMachineRecord.getMachineStartTime(), LocalDateTime.now()).toMinutes();
+                        }
+                        SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
+                                .productMainId(productionProductMain.getId())
+                                .schedulingUserId(Long.parseLong(s))
+                                .schedulingUserName(userMapper.selectUserById(Long.parseLong(s)).getNickName())
+                                .finishedNum(productQty)
+                                .workHours(workHours)
+                                .process(productProcess.getName())
+                                .schedulingDate(LocalDate.now())
+                                .tenantId(productionProductOutput.getTenantId())
+                                .deviceId(productionMachineRecord.getMachineId())
+                                .workHour(minutes)
+                                .build();
+                        salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
+                    }
+                    productionMachineRecord.setReportStatus(true);
+                    productionMachineRecordMapper.updateById(productionMachineRecord);
                 }
             }
         }

--
Gitblit v1.9.3