From ea2aae8086322b2397f8c50e4ed327b0b3abf4fc Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 12 十二月 2025 16:32:10 +0800
Subject: [PATCH] yys

---
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java |   42 +++++++++++++++++++++++++++---------------
 1 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index 03f48f5..c238f57 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -453,27 +453,39 @@
         List<QualityInspect> qualityInspects = qualityStatisticsMapper.selectList(null);
         if(!CollectionUtils.isEmpty(qualityInspects)){
             // 鍘熸潗鏂欏悎鏍肩巼
-            long rawwMaterialCount = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 0).count();
-            long count = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 0).count();
-            if(count > 0){
-                qualityProductQualifiedRateDto.setRawMaterialQualifiedRate(new BigDecimal(rawwMaterialCount)
-                        .divide(new BigDecimal( count), 4, RoundingMode.HALF_UP)
+            BigDecimal rawwMaterialCount = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 0)
+                    .map(QualityInspect::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal count = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 0)
+                    .map(QualityInspect::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            if(count.compareTo(BigDecimal.ZERO) != 0){
+                qualityProductQualifiedRateDto.setRawMaterialQualifiedRate(rawwMaterialCount
+                        .divide(count, 4, RoundingMode.HALF_UP)
                         .multiply(BigDecimal.valueOf(100.0)));
             }
             // 杩囩▼鍚堟牸鐜�
-            long processCount = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 1).count();
-            long countOne = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 1).count();
-            if(countOne > 0){
-                qualityProductQualifiedRateDto.setProcessQualifiedRate(new BigDecimal(processCount)
-                        .divide(new BigDecimal( countOne), 4, RoundingMode.HALF_UP)
+            BigDecimal processCount = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 1)
+                    .map(QualityInspect::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal countOne = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 1)
+                    .map(QualityInspect::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            if(countOne.compareTo(BigDecimal.ZERO) != 0){
+                qualityProductQualifiedRateDto.setProcessQualifiedRate(processCount
+                        .divide(countOne, 4, RoundingMode.HALF_UP)
                         .multiply(BigDecimal.valueOf(100.0)));
             }
             // 鍑哄巶鍚堟牸鐜�
-            long factoryCount = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 2).count();
-            long countTwo = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 2).count();
-            if(countTwo > 0){
-                qualityProductQualifiedRateDto.setFactoryQualifiedRate(new BigDecimal(factoryCount)
-                        .divide(new BigDecimal( countTwo), 4, RoundingMode.HALF_UP)
+            BigDecimal factoryCount = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 2)
+                    .map(QualityInspect::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal countTwo = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 2)
+                    .map(QualityInspect::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            if(countTwo.compareTo(BigDecimal.ZERO) != 0){
+                qualityProductQualifiedRateDto.setFactoryQualifiedRate(factoryCount
+                        .divide(countTwo, 4, RoundingMode.HALF_UP)
                         .multiply(BigDecimal.valueOf(100.0)));
             }
         }

--
Gitblit v1.9.3