| | |
| | | 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))); |
| | | } |
| | | } |