From cc2ca2a816d582952b22113d26026ffd8347d47d Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 30 一月 2026 15:31:09 +0800
Subject: [PATCH] feat(product-order): 核算限制查询

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   34 ++++++++++++++--------------------
 1 files changed, 14 insertions(+), 20 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 66270d4..b2c914b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -142,15 +142,7 @@
             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()));
@@ -169,7 +161,7 @@
         //鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺-鎶ュ簾鏁伴噺
         BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
         //鍙湁鍚堟牸鏁伴噺>0鎵嶈兘澧炲姞鐩稿簲鏁版嵁
-        if (productQty.compareTo(BigDecimal.ZERO)>0) {
+        if (productQty.compareTo(BigDecimal.ZERO) > 0) {
             /*鏂板璐ㄦ*/
             //瀵瑰簲鐨勮繃绋嬫鎴栬�呭嚭鍘傛
             List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
@@ -187,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());
@@ -198,7 +190,7 @@
                 qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId());
                 qualityInspectMapper.updateById(qualityInspect);
                 qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery()
-                        .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))//榛樿鑾峰彇鏈�鏂扮殑
+                                .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))//榛樿鑾峰彇鏈�鏂扮殑
                         .forEach(qualityTestStandardParam -> {
                             QualityInspectParam param = new QualityInspectParam();
                             BeanUtils.copyProperties(qualityTestStandardParam, param);
@@ -209,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());//瀹為檯寮�濮嬫椂闂�
             }
@@ -235,7 +227,7 @@
                     .salesLedgerWorkId(productionProductMain.getId())
                     .salesLedgerSchedulingId(0L)
                     .salesLedgerId(productOrder.getSalesLedgerId())
-                    .salesLedgerProductId(productOrder.getProductModelId())
+                    .salesLedgerProductId(productOrder.getSaleLedgerProductId())
                     .schedulingUserId(user.getUserId())
                     .schedulingUserName(user.getNickName())
                     .finishedNum(productQty)
@@ -247,8 +239,10 @@
             salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
         }
         //濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
-        if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
-            stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+        if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
+            if (BigDecimal.ZERO.compareTo(dto.getScrapQty()) > 0) {
+                stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+            }
         }
         return true;
     }
@@ -271,7 +265,7 @@
         productWorkOrderMapper.updateById(productWorkOrder);
         //鍒ゆ柇鏄惁鏄渶鍚庝竴閬撳伐搴�
         List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
-        if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()){
+        if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
             ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
             productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().subtract(productionProductOutput.getQuantity()));
             productOrder.setEndTime(null);
@@ -291,13 +285,13 @@
         // 鍒犻櫎浜у嚭璁板綍
         productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
                 .eq(ProductionProductOutput::getProductMainId, productionProductMain.getId()));
-        //鍒犻櫎鍏ュ簱
+        //鍒犻櫎鎶曞叆璁板綍
         productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>()
                 .eq(ProductionProductInput::getProductMainId, productionProductMain.getId()));
         //鍒犻櫎鎶ュ簾鐨勫叆搴撹褰�
-        stockUtils.deleteStockRecord(productionProductMain.getId(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
+        stockUtils.deleteStockInRecord(productionProductMain.getId(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
         //鍒犻櫎鎶曞叆瀵瑰簲鐨勫嚭搴撹褰�
-        stockUtils.deleteStockRecord(productionProductMain.getId(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
+        stockUtils.deleteStockOutRecord(productionProductMain.getId(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
         // 鍒犻櫎涓昏〃
         productionProductMainMapper.deleteById(productionProductMain.getId());
         return true;

--
Gitblit v1.9.3