From 639d36e087548e7499a351737d5e6a9ce24c0407 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 29 六月 2026 01:38:03 +0800
Subject: [PATCH] fix: 库存默认0

---
 src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java |  100 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 82 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java
index ee11f8e..fdc2088 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityReportServiceImpl.java
@@ -1,24 +1,16 @@
 package com.ruoyi.quality.service.impl;
 
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.quality.dto.QualityPassRateDto;
-import com.ruoyi.quality.dto.QualityInspectStatDto;
-import com.ruoyi.quality.dto.QualityMonthlyPassRateDto;
-import com.ruoyi.quality.dto.QualityMonthlyDetailDto;
-import com.ruoyi.quality.dto.QualityParameterStatDto;
-import com.ruoyi.quality.dto.QualityMonthlyPassRateWrapperDto;
-import com.ruoyi.quality.dto.QualityTopParameterDto;
+import com.ruoyi.quality.dto.*;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
+import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.quality.service.QualityReportService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -35,7 +27,79 @@
 
     @Override
     public List<QualityPassRateDto> getPassRateStatistics() {
-        return qualityInspectMapper.getPassRateStatistics();
+        List<QualityInspect> rawList = qualityInspectMapper.getRawPassRateStatistics();
+
+        Map<Integer, QualityPassRateDto> map = new HashMap<>();
+        for (int i = 0; i <= 2; i++) {
+            QualityPassRateDto dto = new QualityPassRateDto();
+            dto.setModelType(i);
+            dto.setTotalCount(BigDecimal.ZERO);
+            dto.setCompletedCount(BigDecimal.ZERO);
+            dto.setQualifiedCount(BigDecimal.ZERO);
+            dto.setUnqualifiedCount(BigDecimal.ZERO);
+            map.put(i, dto);
+        }
+
+        for (QualityInspect qi : rawList) {
+            Integer type = qi.getInspectType();
+            if (type == null || !map.containsKey(type) || qi.getQuantity() == null) continue;
+
+            QualityPassRateDto dto = map.get(type);
+
+            BigDecimal qty = qi.getQuantity();
+            dto.setTotalCount(dto.getTotalCount().add(qty));
+
+            if (qi.getInspectState() != null && qi.getInspectState() == 1) {
+                dto.setCompletedCount(dto.getCompletedCount().add(qty));
+
+                BigDecimal qualified = BigDecimal.ZERO;
+                BigDecimal unqualified = BigDecimal.ZERO;
+
+                String result = qi.getCheckResult();
+                BigDecimal qiQualified = qi.getQualifiedQuantity() != null ? qi.getQualifiedQuantity() : BigDecimal.ZERO;
+                BigDecimal qiUnqualified = qi.getUnqualifiedQuantity() != null ? qi.getUnqualifiedQuantity() : BigDecimal.ZERO;
+
+                if ("鍚堟牸".equals(result)) {
+                    qualified = qty;
+                } else if ("涓嶅悎鏍�".equals(result)) {
+                    unqualified = qty;
+                } else if ("閮ㄥ垎鍚堟牸".equals(result)) {
+                    if (qiUnqualified.compareTo(BigDecimal.ZERO) > 0) {
+                        qualified = qty.subtract(qiUnqualified);
+                        unqualified = qiUnqualified;
+                    } else {
+                        qualified = qiQualified;
+                        unqualified = qty.subtract(qiQualified);
+                    }
+                } else {
+                    qualified = qiQualified;
+                    unqualified = qiUnqualified;
+                }
+
+                dto.setQualifiedCount(dto.getQualifiedCount().add(qualified));
+                dto.setUnqualifiedCount(dto.getUnqualifiedCount().add(unqualified));
+            }
+        }
+
+        List<QualityPassRateDto> resultList = new ArrayList<>();
+        for (int i = 0; i <= 2; i++) {
+            QualityPassRateDto dto = map.get(i);
+
+            if (dto.getTotalCount().compareTo(BigDecimal.ZERO) == 0) {
+                dto.setCompletionRate(BigDecimal.ZERO);
+            } else {
+                dto.setCompletionRate(dto.getCompletedCount().divide(dto.getTotalCount(), 4, java.math.RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, java.math.RoundingMode.HALF_UP));
+            }
+
+            if (dto.getCompletedCount().compareTo(BigDecimal.ZERO) == 0) {
+                dto.setPassRate(BigDecimal.ZERO);
+            } else {
+                dto.setPassRate(dto.getQualifiedCount().divide(dto.getCompletedCount(), 4, java.math.RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, java.math.RoundingMode.HALF_UP));
+            }
+            resultList.add(dto);
+        }
+
+        return resultList;
     }
 
     @Override
@@ -59,11 +123,11 @@
                 QualityPassRateDto passRateDto = new QualityPassRateDto();
                 BeanUtils.copyProperties(dto, passRateDto);
 
-                if (dto.getInspectType() == 0) {
+                if (dto.getModelType() == 0) {
                     wrapper.setRawMaterial(passRateDto);
-                } else if (dto.getInspectType() == 1) {
+                } else if (dto.getModelType() == 1) {
                     wrapper.setProcess(passRateDto);
-                } else if (dto.getInspectType() == 2) {
+                } else if (dto.getModelType() == 2) {
                     wrapper.setOutgoing(passRateDto);
                 }
             }
@@ -90,11 +154,11 @@
     }
 
     @Override
-    public QualityTopParameterDto getTopParameters(Integer inspectType) {
-        if (inspectType == null) {
+    public QualityTopParameterDto getTopParameters(Integer modelType) {
+        if (modelType == null) {
             return new QualityTopParameterDto();
         }
-        List<QualityParameterStatDto> list = qualityInspectMapper.getTopParameters(inspectType);
+        List<QualityParameterStatDto> list = qualityInspectMapper.getTopParameters(modelType);
 
         BigDecimal total = list.stream()
                 .map(QualityParameterStatDto::getCount)

--
Gitblit v1.9.3