From 1cf91e355038837f30f2d727507b2229263d7de7 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期二, 27 一月 2026 17:49:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   58 ++++++++++++----------------------------------------------
 1 files changed, 12 insertions(+), 46 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 b63409c..8be62c1 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -2,8 +2,6 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,13 +11,10 @@
 import com.ruoyi.basic.mapper.ProductModelMapper;
 import com.ruoyi.basic.pojo.Product;
 import com.ruoyi.basic.pojo.ProductModel;
-import com.ruoyi.common.enums.StockRecordTypeEnum;
-import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.bean.BeanUtils;
-import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
-import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
 import com.ruoyi.procurementrecord.utils.StockUtils;
-import com.ruoyi.production.controller.ProductWorkOrderController;
 import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.dto.ProductionProductMainDto;
 import com.ruoyi.production.mapper.*;
@@ -29,19 +24,15 @@
 import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.quality.mapper.*;
 import com.ruoyi.quality.pojo.*;
-import io.swagger.models.auth.In;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.ruoyi.production.mapper.ProductionProductMainMapper;
-import oshi.driver.mac.net.NetStat;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -50,10 +41,8 @@
 @Transactional(rollbackFor = Exception.class)
 public class ProductionProductMainServiceImpl extends ServiceImpl<ProductionProductMainMapper, ProductionProductMain> implements ProductionProductMainService {
 
-    private final ProcurementRecordOutMapper procurementRecordOutMapper;
     private ProductionProductMainMapper productionProductMainMapper;
 
-    private ProductWorkOrderController productWorkOrderController;
 
     private ProductWorkOrderMapper productWorkOrderMapper;
 
@@ -62,7 +51,6 @@
 
     private ProductionProductOutputMapper productionProductOutputMapper;
 
-    private ProcessRouteItemMapper processRouteItemMapper;
 
     private ProductModelMapper productModelMapper;
 
@@ -75,7 +63,6 @@
 
 
     private QualityTestStandardParamMapper qualityTestStandardParamMapper;
-    private QualityTestStandardBindingMapper qualityTestStandardBindingMapper;
     private QualityTestStandardMapper qualityTestStandardMapper;
 
     private QualityInspectParamMapper qualityInspectParamMapper;
@@ -155,35 +142,14 @@
             productStructureDtos.add(productStructureDto);
         }
         for (ProductStructureDto productStructureDto : productStructureDtos) {
-            ProductModel productModel1 = productModelMapper.selectById(productStructureDto.getProductModelId());
-            Product product = productMapper.selectById(productModel1.getProductId());
-            BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId()).get("stockQuantity");
-            if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) {
-                throw new RuntimeException(product.getProductName()+"浜у搧鐨�"+productModel1.getModel() + "鐨勮鏍煎簱瀛樹负0");
-            }
-            if (stockQuantity.compareTo(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())) < 0) {
-                throw new RuntimeException(product.getProductName()+"浜у搧鐨�"+productModel1.getModel() + "鐨勮鏍煎簱瀛樹笉瓒�");
-            }
+
             ProductionProductInput productionProductInput = new ProductionProductInput();
             productionProductInput.setProductModelId(productStructureDto.getProductModelId());
             productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
             productionProductInput.setProductMainId(productionProductMain.getId());
             productionProductInputMapper.insert(productionProductInput);
-            //瀵瑰簲鐨勫簱瀛樺嚭搴�
-            DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyyMMdd");
-            LocalDate now = LocalDate.now();
-            ProcurementRecordOut procurementRecordOut1 = procurementRecordOutMapper.selectCode(dateFormat.format(now));
-            Long aLong = procurementRecordOut1 == null ? 1L : Long.valueOf(procurementRecordOut1.getCode().split("LS" + dateFormat.format(now))[1]);
-            ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder()
-                    .procurementRecordStorageId(0)
-                    .code("LS" + dateFormat.format(now) + String.format("%03d", aLong + 1))
-                    .salesLedgerProductId(productionProductMain.getId())//鍏宠仈鎶ュ伐浜у嚭
-                    .inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�" + (aLong + 1) + "鎵规")
-                    .inboundNum(productionProductInput.getQuantity())
-                    .type(4)
-                    .createBy(user.getNickName())
-                    .productModelId(productModel1.getId());
-            procurementRecordOutMapper.insert(procurementRecordOut.build());
+            stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
+
         }
         /*鏂板鎶ュ伐浜у嚭琛�*/
         ProductionProductOutput productionProductOutput = new ProductionProductOutput();
@@ -213,7 +179,7 @@
             qualityInspect.setModel(productModel.getModel());
             qualityInspect.setUnit(productModel.getUnit());
             qualityInspect.setQuantity(productQty);
-            qualityInspect.setProcess(productProcess.getName());
+            qualityInspect.setProcess(process);
             qualityInspect.setInspectState(0);
             qualityInspect.setInspectType(inspectType);
             qualityInspect.setProductMainId(productionProductMain.getId());
@@ -235,7 +201,7 @@
             }
             /*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
             ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
-            productWorkOrder.setCompleteQuantity(productQty.add(dto.getQuantity()));
+            productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().add(productQty));
             if (ObjectUtils.isNull(productWorkOrder.getActualStartTime())) {
                 productWorkOrder.setActualStartTime(LocalDate.now());//瀹為檯寮�濮嬫椂闂�
             }
@@ -274,7 +240,7 @@
         }
         //濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
         if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
-            stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+            stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
         }
         return true;
     }
@@ -317,13 +283,13 @@
         // 鍒犻櫎浜у嚭璁板綍
         productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
                 .eq(ProductionProductOutput::getProductMainId, productionProductMain.getId()));
-        /*鍒犻櫎鎶曞叆*/
-        procurementRecordOutMapper.delete(new LambdaQueryWrapper<ProcurementRecordOut>()
-                .eq(ProcurementRecordOut::getSalesLedgerProductId, productionProductMain.getId()));
+        //鍒犻櫎鎶曞叆璁板綍
         productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>()
                 .eq(ProductionProductInput::getProductMainId, productionProductMain.getId()));
         //鍒犻櫎鎶ュ簾鐨勫叆搴撹褰�
-        stockUtils.deleteStockRecord(productionProductMain.getId(), StockRecordTypeEnum.PRODUCTION_SCRAP.getCode());
+        stockUtils.deleteStockRecord(productionProductMain.getId(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
+        //鍒犻櫎鎶曞叆瀵瑰簲鐨勫嚭搴撹褰�
+        stockUtils.deleteStockRecord(productionProductMain.getId(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
         // 鍒犻櫎涓昏〃
         productionProductMainMapper.deleteById(productionProductMain.getId());
         return true;

--
Gitblit v1.9.3