From 717a85c534836b757d759fd62d85bce32dce216b Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期二, 28 四月 2026 17:48:24 +0800
Subject: [PATCH] refactor(production): 优化生产产品主服务代码格式和逻辑

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   54 +++++++++++++++++++++++++++++-------------------------
 1 files changed, 29 insertions(+), 25 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 252a409..b09e03d 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -146,7 +146,7 @@
         productionProductMain.setProductNo(productNo);
 
         // 淇敼鐝粍淇℃伅 浠ョ涓�浜轰綔涓哄師鍏坰etUserId setUserName
-        Assert.isTrue(CollUtil.isNotEmpty(dto.getTeamList()),"鐝粍淇℃伅涓嶈兘涓虹┖");
+        Assert.isTrue(CollUtil.isNotEmpty(dto.getTeamList()), "鐝粍淇℃伅涓嶈兘涓虹┖");
 
         productionProductMain.setTeamIds(dto.getTeamList().stream().map(ProductionProductMainDto.Team::getUserId).map(String::valueOf).collect(Collectors.joining(",")));
         productionProductMain.setTeamNames(dto.getTeamList().stream().map(ProductionProductMainDto.Team::getUserName).collect(Collectors.joining(",")));
@@ -156,16 +156,15 @@
         productionProductMain.setUserName(SecurityUtils.getLoginUser().getNickName());
 
 
-
         productionProductMain.setProductProcessRouteItemId(dto.getProductProcessRouteItemId());
         productionProductMain.setWorkOrderId(dto.getWorkOrderId());
         productionProductMain.setAuditUserId(dto.getAuditUserId());
         productionProductMain.setAuditUserName(dto.getAuditUserName());
         productionProductMain.setStatus(0);
-        if (ObjectUtils.isNotEmpty(dto.getStartTime())&&ObjectUtils.isNotEmpty(dto.getEndTime())) {
+        if (ObjectUtils.isNotEmpty(dto.getStartTime()) && ObjectUtils.isNotEmpty(dto.getEndTime())) {
             productionProductMain.setStartTime(dto.getStartTime());
             productionProductMain.setEndTime(dto.getEndTime());
-        }else {
+        } else {
             productionProductMain.setStartTime(productWorkOrder.getStartProductTime());
             productionProductMain.setEndTime(now);
         }
@@ -239,7 +238,7 @@
         ProductionProductMain productionProductMain = productionProductMainMapper.selectById(productAuditVo.getId());
 
         // 褰撳墠瀹℃壒浜� 瑕佷笌褰撳墠鐧诲綍浜轰负鍚屼竴浜�
-        if(productionProductMain.getAuditUserId() != -1){
+        if (productionProductMain.getAuditUserId() != -1) {
             Assert.isTrue(SecurityUtils.getUserId().equals(productionProductMain.getAuditUserId()), "褰撳墠鐧诲綍鐢ㄦ埛涓嶆槸褰撳墠瀹℃壒浜�");
         }
 
@@ -312,7 +311,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void nextAddProductMain(@NotNull ProductionProductOutput productionProductOutput){
+    public void nextAddProductMain(@NotNull ProductionProductOutput productionProductOutput) {
         //鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺-鎶ュ簾鏁伴噺
         ProductionProductMain productionProductMain = productionProductMainMapper.selectById(productionProductOutput.getProductMainId());
         BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
@@ -362,31 +361,36 @@
                                 qualityInspectParamMapper.insert(param);
                             });
                 }
-            }else {
+            } else {
                 //鐩存帴鍏ュ簱
-                stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(),"-","-","-");
+                stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(), "-", "-", "-");
             }
 
             /*娣诲姞鐢熶骇鏍哥畻        鍖哄垎宸ュ簭鏄浠惰繕鏄鏃�*/
             BigDecimal workHours = productProcess.getSalaryQuota();
-
-            SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
-                    .productMainId(productionProductMain.getId())
-                    .schedulingUserId(productionProductMain.getUserId())
-                    .schedulingUserName(userMapper.selectUserById(productionProductMain.getUserId()).getNickName())
-                    .finishedNum(productQty)
-                    .workHours(workHours)
-                    .process(productProcess.getName())
-                    .schedulingDate(LocalDate.now())
-                    .tenantId(productionProductOutput.getTenantId())
-                    .build();
-            salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
+            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);
+                }
+            }
         }
 
         //濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
         if (ObjectUtils.isNotEmpty(productionProductOutput.getScrapQty())) {
             if (productionProductOutput.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
-                stockUtils.addUnStock(productModel.getId(), productionProductOutput.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId(),"-","-","-");
+                stockUtils.addUnStock(productModel.getId(), productionProductOutput.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId(), "-", "-", "-");
             }
         }
     }
@@ -395,10 +399,10 @@
     public Boolean removeProductMain(Long id) {
         //鍒ゆ柇璇ユ潯鎶ュ伐鏄惁涓嶅悎鏍煎鐞�,濡傛灉涓嶅悎鏍煎鐞嗕簡锛屽垯涓嶅厑璁稿垹闄�
         List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(Wrappers.<QualityInspect>lambdaQuery().eq(QualityInspect::getProductMainId, id));
-        if (qualityInspects.size() > 0){
+        if (qualityInspects.size() > 0) {
             List<QualityUnqualified> qualityUnqualifieds = qualityUnqualifiedMapper.selectList(Wrappers.<QualityUnqualified>lambdaQuery()
                     .in(QualityUnqualified::getInspectId, qualityInspects.stream().map(QualityInspect::getId).collect(Collectors.toList())));
-            if (qualityUnqualifieds.size() > 0 && qualityUnqualifieds.get(0).getInspectState()==1) {
+            if (qualityUnqualifieds.size() > 0 && qualityUnqualifieds.get(0).getInspectState() == 1) {
                 throw new ServiceException("璇ユ潯鎶ュ伐宸茬粡涓嶅悎鏍煎鐞嗕簡锛屼笉鍏佽鍒犻櫎");
             }
         }
@@ -422,7 +426,7 @@
 
 
             BigDecimal validQuantity = outputQty.subtract(scrapQty);
-            if(productionProductMain.getAuditStatus() != 2){
+            if (productionProductMain.getAuditStatus() != 2) {
                 productWorkOrder.setCompleteQuantity(completeQty.subtract(validQuantity).max(BigDecimal.ZERO));
             }
             productWorkOrder.setActualEndTime(null);
@@ -456,7 +460,7 @@
                     new LambdaQueryWrapper<QualityInspectParam>()
                             .eq(QualityInspectParam::getInspectId, q.getId()));
             qualityInspectMapper.deleteById(q.getId());
-                stockUtils.deleteStockInRecord(q.getId(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode());
+            stockUtils.deleteStockInRecord(q.getId(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode());
         });
 
         // 鍒犻櫎浜у嚭璁板綍

--
Gitblit v1.9.3