| | |
| | | private ProductionProductOutputMapper productionProductOutputMapper; |
| | | @Autowired |
| | | private QualityUnqualifiedMapper qualityUnqualifiedMapper; |
| | | @Autowired |
| | | private QualityInspectMapper qualityInspectMapper; |
| | | |
| | | @Value("${file.temp-dir}") |
| | | private String tempDir; |
| | |
| | | productWorkOrderDtos.forEach(productWorkOrderDto -> { |
| | | // 查询关联产出表数据 |
| | | List<ProductionProductMain> productionProductMains = productionProductMainMapper.selectList(Wrappers.<ProductionProductMain>lambdaQuery().eq(ProductionProductMain::getWorkOrderId, productWorkOrderDto.getId())); |
| | | // 查询报废数量 |
| | | BigDecimal scrapQty = BigDecimal.ZERO; |
| | | // 查询不良数量 |
| | | BigDecimal defectiveQuantity = BigDecimal.ZERO; |
| | | if (CollectionUtils.isNotEmpty(productionProductMains)) { |
| | | // 计算报废数量 |
| | | List<Long> mainIds = productionProductMains.stream().map(ProductionProductMain::getId).collect(Collectors.toList()); |
| | | List<ProductionProductOutput> productionProductOutputs = productionProductOutputMapper.selectList(Wrappers.<ProductionProductOutput>lambdaQuery().in(ProductionProductOutput::getProductMainId, mainIds)); |
| | | List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(Wrappers.<QualityInspect>lambdaQuery().in(QualityInspect::getProductMainId, mainIds)); |
| | | if (CollectionUtils.isNotEmpty(productionProductOutputs)) { |
| | | scrapQty = productionProductOutputs.stream().map(ProductionProductOutput::getScrapQty).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | } |
| | | if (productWorkOrderDto.getCompleteQuantity().compareTo(BigDecimal.ZERO) > 0) { |
| | | productWorkOrderDto.setScrapRate(scrapQty.divide(productWorkOrderDto.getCompleteQuantity(), 4, RoundingMode.HALF_UP)); |
| | | if (CollectionUtils.isNotEmpty(qualityInspects)) { |
| | | defectiveQuantity = qualityInspects.stream().map(QualityInspect::getDefectiveQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | } |
| | | } |
| | | BigDecimal totalQuantity = productWorkOrderDto.getCompleteQuantity().add(scrapQty); |
| | | if (totalQuantity.compareTo(BigDecimal.ZERO) > 0) { |
| | | productWorkOrderDto.setDefectiveRate(defectiveQuantity.divide(productWorkOrderDto.getCompleteQuantity(), 4, RoundingMode.HALF_UP)); |
| | | } else { |
| | | productWorkOrderDto.setScrapRate(scrapQty.multiply(BigDecimal.valueOf(100))); |
| | | productWorkOrderDto.setDefectiveRate(defectiveQuantity.multiply(BigDecimal.valueOf(100))); |
| | | } |
| | | productWorkOrderDto.setScrapQty(scrapQty); |
| | | productWorkOrderDto.setCompleteQty(productWorkOrderDto.getCompleteQuantity().subtract(scrapQty)); |
| | | productWorkOrderDto.setTotalQty(totalQuantity); |
| | | productWorkOrderDto.setDefectiveQuantity(defectiveQuantity); |
| | | productWorkOrderDto.setCompleteQty(productWorkOrderDto.getCompleteQuantity().subtract(defectiveQuantity)); |
| | | }); |
| | | } |
| | | return productWorkOrderDtos; |