From ada06626c3f81258e01837d09a10135f8ec3232f Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期六, 28 三月 2026 16:06:30 +0800
Subject: [PATCH] refactor: 生产报工参数与投入表分离

---
 src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java |  122 ++++++++++++++++++++++++++++++++++------
 1 files changed, 104 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
index fab0ebe..0d68a23 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -8,17 +8,24 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.config.Configure;
-import com.ruoyi.common.enums.StockRecordTypeEnum;
-import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.HackLoopTableRenderPolicy;
-import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.framework.security.LoginUser;
-import com.ruoyi.procurementrecord.dto.Details;
-import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
-import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
 import com.ruoyi.procurementrecord.service.ProcurementRecordService;
 import com.ruoyi.procurementrecord.utils.StockUtils;
+import com.ruoyi.production.dto.ProductMaterialSkuDto;
+import com.ruoyi.production.dto.ProductionProductRouteItemParamDto;
+import com.ruoyi.production.mapper.ProductOrderMapper;
+import com.ruoyi.production.mapper.ProductionProductRouteItemMapper;
+import com.ruoyi.production.mapper.ProductionProductRouteItemParamMapper;
+import com.ruoyi.production.pojo.ProductionProductInput;
+import com.ruoyi.production.pojo.ProductionProductRouteItemParam;
+import com.ruoyi.production.service.ProductBomService;
+import com.ruoyi.production.service.ProductMaterialService;
+import com.ruoyi.production.service.ProductionProductInputService;
+import com.ruoyi.quality.dto.FinishedPageDto;
+import com.ruoyi.quality.dto.FinishedRatioDto;
+import com.ruoyi.quality.dto.ProcessPageDto;
 import com.ruoyi.quality.dto.QualityInspectDto;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
 import com.ruoyi.quality.mapper.QualityTestStandardMapper;
@@ -29,7 +36,6 @@
 import com.ruoyi.quality.service.IQualityInspectParamService;
 import com.ruoyi.quality.service.IQualityInspectService;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
-import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import lombok.AllArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -38,9 +44,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.math.BigDecimal;
 import java.net.URLEncoder;
-import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -52,17 +56,29 @@
 public class QualityInspectServiceImpl extends ServiceImpl<QualityInspectMapper, QualityInspect> implements IQualityInspectService {
 
     private final StockUtils stockUtils;
-    private QualityInspectMapper qualityInspectMapper;
+    private final QualityInspectMapper qualityInspectMapper;
 
-    private IQualityInspectParamService qualityInspectParamService;
+    private final IQualityInspectParamService qualityInspectParamService;
 
-    private QualityTestStandardMapper qualityTestStandardMapper;
+    private final QualityTestStandardMapper qualityTestStandardMapper;
 
-    private QualityUnqualifiedMapper qualityUnqualifiedMapper;
+    private final QualityUnqualifiedMapper qualityUnqualifiedMapper;
 
-    private SalesLedgerProductMapper salesLedgerProductMapper;
+    private final SalesLedgerProductMapper salesLedgerProductMapper;
 
-    private ProcurementRecordService procurementRecordService;
+    private final ProcurementRecordService procurementRecordService;
+
+    private final ProductionProductRouteItemMapper productionProductRouteItemMapper;
+
+    private final ProductionProductRouteItemParamMapper productionProductRouteItemParamMapper;
+
+    private final ProductOrderMapper productOrderMapper;
+
+    private final ProductionProductInputService productionProductInputService;
+
+    private final ProductMaterialService productMaterialService;
+
+    private final ProductBomService productBomService;
 
     @Override
     public int add(QualityInspectDto qualityInspectDto) {
@@ -91,8 +107,12 @@
     @Override
     public int submit(QualityInspect inspect) {
         QualityInspect qualityInspect = qualityInspectMapper.selectById(inspect.getId());
+        //鎻愪氦鍓嶅繀椤诲垽鏂槸鍚﹀悎鏍�
+        if (ObjectUtils.isNull(qualityInspect.getCheckResult())) {
+            throw new RuntimeException("璇峰厛鍒ゆ柇鏄惁鍚堟牸");
+        }
         /*鍒ゆ柇涓嶅悎鏍�*/
-        if (ObjectUtils.isNotNull(qualityInspect.getCheckResult()) && qualityInspect.getCheckResult().equals("涓嶅悎鏍�")) {
+        if (qualityInspect.getCheckResult().equals("涓嶅悎鏍�")) {
             QualityUnqualified qualityUnqualified = new QualityUnqualified();
             BeanUtils.copyProperties(qualityInspect, qualityUnqualified);
             qualityUnqualified.setInspectState(0);//寰呭鐞�
@@ -103,7 +123,7 @@
             qualityUnqualifiedMapper.insert(qualityUnqualified);
         } else {
             //鍚堟牸鐩存帴鍏ュ簱
-            stockUtils.addStock(inspect.getProductModelId(), inspect.getQuantity(), StockRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), inspect.getId());
+            stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
         }
         qualityInspect.setInspectState(1);//宸叉彁浜�
         return qualityInspectMapper.updateById(qualityInspect);
@@ -162,6 +182,72 @@
     }
 
     @Override
+    public IPage<ProcessPageDto> processPage(Page page, ProcessPageDto processPageDto) {
+        return productionProductRouteItemMapper.processPage(page,processPageDto);
+    }
+
+    @Override
+    public List<ProductionProductRouteItemParamDto> processDetails(ProcessPageDto processPageDto) {
+        List<ProductionProductRouteItemParamDto> resultList = new ArrayList<>();
+
+        // 1. 鏌ヨ鏅�氬弬鏁�
+        List<ProductionProductRouteItemParam> paramList = productionProductRouteItemParamMapper.processDetails(processPageDto.getProductionProductRouteItemId());
+        if (paramList != null && !paramList.isEmpty()) {
+            resultList.addAll(paramList.stream().map(param -> {
+                ProductionProductRouteItemParamDto dto = new ProductionProductRouteItemParamDto();
+                BeanUtils.copyProperties(param, dto);
+                return dto;
+            }).collect(Collectors.toList()));
+        }
+
+        // 2. 鏌ヨ鐗╂枡鎶曞叆
+        // 娉ㄦ剰锛氭垚鍝佹鐨勬椂鍊欏彲鑳芥病鏈夊叿浣撳崟鏉℃姤宸ヨ褰旾D锛屾墍浠ユ垚鍝佹璇︽儏鍙兘闇�瑕佹寜璁㈠崟鏌ヨ锛�
+        // 浣嗚繖閲岀殑processDetails鏄�滆繃绋嬫璇︽儏鈥濓紝閫氬父鏈夊叿浣撴姤宸ヨ褰曘��
+        // 鏍规嵁鎶ュ伐璁板綍 ID 鏌ユ壘瀵瑰簲鐨� ProductMainId
+        Long routeItemId = processPageDto.getProductionProductRouteItemId();
+        if (routeItemId != null) {
+            List<ProductionProductInput> inputList = productionProductInputService.list(Wrappers.<ProductionProductInput>lambdaQuery()
+                    .eq(ProductionProductInput::getRouteItemId, routeItemId));
+
+            if (inputList != null && !inputList.isEmpty()) {
+                for (ProductionProductInput input : inputList) {
+                    ProductionProductRouteItemParamDto dto = new ProductionProductRouteItemParamDto();
+                    dto.setProductId(input.getProductId());
+                    dto.setBomId(input.getBomId());
+                    dto.setQuantity(input.getQuantity());
+                    dto.setProductValue(input.getQuantity());
+                    dto.setUnit(input.getUnit());
+
+                    // 濉厖鐗╂枡淇℃伅
+                    ProductMaterialSkuDto materialSkuDto = productMaterialService.selectProductByModelId(input.getProductId());
+                    if (materialSkuDto != null) {
+                        dto.setParamName(materialSkuDto.getProductName());
+                        dto.setProductName(materialSkuDto.getProductName());
+                        dto.setModel(materialSkuDto.getModel());
+                        dto.setMaterialCode(materialSkuDto.getMaterialCode());
+                    }
+                    String strength = productBomService.strengthById(input.getBomId());
+                    dto.setStrength(strength);
+
+                    resultList.add(dto);
+                }
+            }
+        }
+
+        return resultList;
+    }
+
+    @Override
+    public IPage<FinishedPageDto> finishedPage(Page page, FinishedPageDto finishedPageDto) {
+        return productOrderMapper.finishedPage(page,finishedPageDto);
+    }
+
+    @Override
+    public List<FinishedRatioDto> finishedRatio(FinishedPageDto finishedPageDto) {
+        return productOrderMapper.finishedRatio(finishedPageDto.getProductOrderId());
+    }
+
+    @Override
     public int updateQualityInspect(QualityInspectDto qualityInspectDto) {
         if (ObjectUtils.isNotNull(qualityInspectDto.getQualityInspectParams())) {
             qualityInspectParamService.remove(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, qualityInspectDto.getId()));

--
Gitblit v1.9.3