From 1be8074de2176459ccea92115e4adb0704769104 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 16 三月 2026 16:43:40 +0800
Subject: [PATCH] 质量管理:提交原料后,不合格的生成不合格记录;合格则生成审批记录

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |  106 ++++++++++++++++++++++++++++++----------------------
 1 files changed, 61 insertions(+), 45 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 8138ec2..d811177 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -37,6 +37,7 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -155,10 +156,8 @@
             productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
             productionProductInput.setProductMainId(productionProductMain.getId());
             productionProductInputMapper.insert(productionProductInput);
-            stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
-
-        }
-        /*鏂板鎶ュ伐浜у嚭琛�*/
+//            stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
+        }        /*鏂板鎶ュ伐浜у嚭琛�*/
         ProductionProductOutput productionProductOutput = new ProductionProductOutput();
         productionProductOutput.setProductMainId(productionProductMain.getId());
         productionProductOutput.setProductModelId(productProcessRouteItem.getProductModelId());
@@ -172,41 +171,40 @@
             /*鏂板璐ㄦ*/
             List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
             if (productProcessRouteItem.getIsQuality()) {
-                //瀵瑰簲鐨勮繃绋嬫鎴栬�呭嚭鍘傛
-                int inspectType = 1;
-                String process = productProcess.getName();//宸ュ簭
-                if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
-                    //鏈�鍚庝竴閬撳伐搴忕敓鎴愬嚭鍘傛
-                    inspectType = 2;
-                    process = null;
-                }
-                Product product = productMapper.selectById(productModel.getProductId());
-                QualityInspect qualityInspect = new QualityInspect();
-                qualityInspect.setProductId(product.getId());
-                qualityInspect.setProductName(product.getProductName());
-                qualityInspect.setModel(productModel.getModel());
-                qualityInspect.setUnit(productModel.getUnit());
-                qualityInspect.setQuantity(productQty);
-                qualityInspect.setProcess(process);
-                qualityInspect.setInspectState(0);
-                qualityInspect.setInspectType(inspectType);
-                qualityInspect.setProductMainId(productionProductMain.getId());
-                qualityInspect.setProductModelId(productModel.getId());
-                qualityInspectMapper.insert(qualityInspect);
-                List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process);
-                if (qualityTestStandard.size() > 0) {
-                    qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId());
-                    qualityInspectMapper.updateById(qualityInspect);
-                    qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery()
-                                    .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))//榛樿鑾峰彇鏈�鏂扮殑
-                            .forEach(qualityTestStandardParam -> {
-                                QualityInspectParam param = new QualityInspectParam();
-                                BeanUtils.copyProperties(qualityTestStandardParam, param);
-                                param.setId(null);
-                                param.setInspectId(qualityInspect.getId());
-                                qualityInspectParamMapper.insert(param);
-                            });
-                }
+//                int inspectType = 1;
+//                String process = productProcess.getName();//宸ュ簭
+//                if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
+//                    //鏈�鍚庝竴閬撳伐搴忕敓鎴愬嚭鍘傛
+//                    inspectType = 2;
+//                    process = null;
+//                }
+//                Product product = productMapper.selectById(productModel.getProductId());
+//                QualityInspect qualityInspect = new QualityInspect();
+//                qualityInspect.setProductId(product.getId());
+//                qualityInspect.setProductName(product.getProductName());
+//                qualityInspect.setModel(productModel.getModel());
+//                qualityInspect.setUnit(productModel.getUnit());
+//                qualityInspect.setQuantity(productQty);
+//                qualityInspect.setProcess(process);
+//                qualityInspect.setInspectState(0);
+//                qualityInspect.setInspectType(inspectType);
+//                qualityInspect.setProductMainId(productionProductMain.getId());
+//                qualityInspect.setProductModelId(productModel.getId());
+//                qualityInspectMapper.insert(qualityInspect);
+//                List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process);
+//                if (qualityTestStandard.size() > 0) {
+//                    qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId());
+//                    qualityInspectMapper.updateById(qualityInspect);
+//                    qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery()
+//                                    .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))//榛樿鑾峰彇鏈�鏂扮殑
+//                            .forEach(qualityTestStandardParam -> {
+//                                QualityInspectParam param = new QualityInspectParam();
+//                                BeanUtils.copyProperties(qualityTestStandardParam, param);
+//                                param.setId(null);
+//                                param.setInspectId(qualityInspect.getId());
+//                                qualityInspectParamMapper.insert(param);
+//                            });
+//                }
             }else {
                 //鐩存帴鍏ュ簱
                 stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
@@ -260,10 +258,12 @@
     public Boolean removeProductMain(Long id) {
         //鍒ゆ柇璇ユ潯鎶ュ伐鏄惁涓嶅悎鏍煎鐞�,濡傛灉涓嶅悎鏍煎鐞嗕簡锛屽垯涓嶅厑璁稿垹闄�
         List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(Wrappers.<QualityInspect>lambdaQuery().eq(QualityInspect::getProductMainId, id));
-        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) {
-            throw new ServiceException("璇ユ潯鎶ュ伐宸茬粡涓嶅悎鏍煎鐞嗕簡锛屼笉鍏佽鍒犻櫎");
+        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) {
+                throw new ServiceException("璇ユ潯鎶ュ伐宸茬粡涓嶅悎鏍煎鐞嗕簡锛屼笉鍏佽鍒犻櫎");
+            }
         }
         ProductionProductMain productionProductMain = productionProductMainMapper.selectById(id);
         //璇ユ姤宸ュ搴旂殑宸ヨ壓璺嚎璇︽儏
@@ -328,8 +328,8 @@
         stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
         //鍒犻櫎涓嶉渶瑕佽川妫�鐨勫悎鏍煎叆搴�
         stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode());
-        //鍒犻櫎鎶曞叆瀵瑰簲鐨勫嚭搴撹褰�
-        stockUtils.deleteStockOutRecord(productionProductMain.getId(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
+        //鍒犻櫎鎶曞叆瀵瑰簲鐨勫嚭搴撹褰�  涓嶆墽琛屽嚭搴擄紝瀵瑰簲鐨勫垹闄ゅ嚭搴撲篃涓嶆墽琛�
+//        stockUtils.deleteStockOutRecord(productionProductMain.getId(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
         // 鍒犻櫎涓昏〃
         productionProductMainMapper.deleteById(productionProductMain.getId());
         return true;
@@ -339,4 +339,20 @@
     public ArrayList<Long> listMain(List<Long> idList) {
         return productionProductMainMapper.listMain(idList);
     }
+
+    @Override
+    public IPage<HashMap<String, Object>> queryProductInputAndOutput(Page page, ProductionProductMainDto dto) {
+        if (isEmptyDate(dto.getStartTime())) {
+            dto.setStartTime(LocalDate.now().toString());
+        }
+        if (isEmptyDate(dto.getEndTime())) {
+            dto.setEndTime(LocalDate.now().plusDays(1).toString());
+        }
+
+        return productionProductMainMapper.queryProductInputAndOutput(page, dto);
+    }
+
+    private boolean isEmptyDate(String date) {
+        return date == null || date.trim().isEmpty() || "Invalid Date".equals(date);
+    }
 }

--
Gitblit v1.9.3