From 146d4e85ff1ed4603d9e721f87c7b3e494399a93 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 12 十二月 2025 16:26: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 ca2443b..41ad468 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -445,27 +445,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 reduce = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 0)
+                    .map(QualityInspect::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal reduce1 = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 0)
+                    .map(QualityInspect::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            if(reduce1.compareTo(BigDecimal.ZERO) != 0){
+                qualityProductQualifiedRateDto.setRawMaterialQualifiedRate(reduce
+                        .divide(reduce1, 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 reduce2 = qualityInspects.stream().filter(qualityInspect -> qualityInspect.getInspectType() == 1)
+                    .map(QualityInspect::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal reduce3 = qualityInspects.stream().filter(qualityInspect -> "鍚堟牸".equals(qualityInspect.getCheckResult()) && qualityInspect.getInspectType() == 1)
+                    .map(QualityInspect::getQuantity)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            if(reduce3.compareTo(BigDecimal.ZERO) != 0){
+                qualityProductQualifiedRateDto.setProcessQualifiedRate(reduce2
+                        .divide(reduce3, 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