From 6c7f3a2e780f45e57bb341a5faedac932928a10e Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 23 四月 2026 16:33:16 +0800
Subject: [PATCH] feat(process): 添加工艺路线单位数量默认值设置

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   29 ++++++++++++++++++++++-------
 1 files changed, 22 insertions(+), 7 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 18a0a5a..798baa0 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -1,5 +1,6 @@
 package com.ruoyi.production.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -100,6 +101,9 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean addProductMain(ProductionProductMainDto dto) {
+        LocalDateTime now = LocalDateTime.now();
+        ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
+
         SysUser user = userMapper.selectUserById(dto.getUserId());
         ProductionProductMain productionProductMain = new ProductionProductMain();
         //褰撳墠宸ヨ壓璺嚎瀵瑰簲鐨勫伐搴忚鎯�
@@ -141,15 +145,25 @@
         }
         String productNo = String.format("%s%03d", datePrefix, sequenceNumber);
         productionProductMain.setProductNo(productNo);
-        productionProductMain.setUserId(dto.getUserId());
-        productionProductMain.setUserName(dto.getUserName());
+
+        // 淇敼鐝粍淇℃伅 浠ョ涓�浜轰綔涓哄師鍏坰etUserId setUserName
+        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(",")));
+
+        productionProductMain.setUserId(dto.getTeamList().get(0).getUserId());
+        productionProductMain.setUserName(dto.getTeamList().get(0).getUserName());
+
+
+
         productionProductMain.setProductProcessRouteItemId(dto.getProductProcessRouteItemId());
         productionProductMain.setWorkOrderId(dto.getWorkOrderId());
         productionProductMain.setAuditUserId(dto.getAuditUserId());
         productionProductMain.setAuditUserName(dto.getAuditUserName());
         productionProductMain.setStatus(0);
-        productionProductMain.setStartTime(dto.getStartTime());
-        productionProductMain.setEndTime(dto.getEndTime());
+        productionProductMain.setStartTime(productWorkOrder.getStartProductTime());
+        productionProductMain.setEndTime(now);
         productionProductMain.setDeviceId(productProcess.getDeviceId());
         productionProductMain.setDeviceName(productProcess.getDeviceName());
         productionProductMainMapper.insert(productionProductMain);
@@ -178,6 +192,7 @@
         productionProductOutput.setProductModelId(productProcessRouteItem.getProductModelId());
         productionProductOutput.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO);
         productionProductOutput.setScrapQty(dto.getScrapQty() != null ? dto.getScrapQty() : BigDecimal.ZERO);
+        productionProductOutput.setReplenishQty(dto.getReplenishQty());
         productionProductOutputMapper.insert(productionProductOutput);
         //鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺-鎶ュ簾鏁伴噺
         BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
@@ -185,7 +200,6 @@
         if (productQty.compareTo(BigDecimal.ZERO) > 0) {
             List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
             /*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
-            ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
             productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().add(productQty));
             if (ObjectUtils.isNull(productWorkOrder.getActualStartTime())) {
                 productWorkOrder.setActualStartTime(LocalDate.now());//瀹為檯寮�濮嬫椂闂�
@@ -193,17 +207,18 @@
             if (productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) == 0) {
                 productWorkOrder.setActualEndTime(LocalDate.now());//瀹為檯缁撴潫鏃堕棿
             }
+            productWorkOrder.setEndProductTime(now);
             productWorkOrderMapper.updateById(productWorkOrder);
             //鐢熶骇璁㈠崟
             ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
             if (ObjectUtils.isNull(productOrder.getStartTime())) {
-                productOrder.setStartTime(LocalDateTime.now());//寮�濮嬫椂闂�
+                productOrder.setStartTime(now);//寮�濮嬫椂闂�
             }
             if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
                 //濡傛灉鏄渶鍚庝竴閬撳伐搴忔姤宸ヤ箣鍚庣敓浜ц鍗曞畬鎴愭暟閲�+
                 productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().add(productQty));
                 if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) {
-                    productOrder.setEndTime(LocalDateTime.now());//缁撴潫鏃堕棿
+                    productOrder.setEndTime(now);//缁撴潫鏃堕棿
                 }
             }
             productOrderMapper.updateById(productOrder);

--
Gitblit v1.9.3