yys
maven
2025-12-12 ea2aae8086322b2397f8c50e4ed327b0b3abf4fc
yys
已修改1个文件
42 ■■■■■ 文件已修改
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)));
            }
        }