src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
@@ -73,6 +73,25 @@
                    record.setIsCanReport(true);
                }
            }
            // 查询当前实际的合格率
            // 查询关联产出表数据
            List<ProductionProductMain> productionProductMains = productionProductMainMapper.selectList(Wrappers.<ProductionProductMain>lambdaQuery().eq(ProductionProductMain::getWorkOrderId, record.getId()));
            BigDecimal totalScrapQty = 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));
                totalScrapQty = productionProductOutputs.stream().map(ProductionProductOutput::getScrapQty).reduce(BigDecimal.ZERO, BigDecimal::add);
            }
            if (record.getCompleteQuantity().compareTo(BigDecimal.ZERO) > 0) {
                record.setActualQualifiedRate((record.getCompleteQuantity().subtract(totalScrapQty))
                        .divide(record.getCompleteQuantity(), 2, RoundingMode.HALF_UP)
                        .multiply(new BigDecimal("100"))
                );
            } else {
                record.setActualQualifiedRate((record.getCompleteQuantity().subtract(totalScrapQty)).multiply(BigDecimal.valueOf(100)));
            }
        });
        return productWorkOrderDtoIPage;
    }
@@ -154,10 +173,11 @@
                    scrapQty = productionProductOutputs.stream().map(ProductionProductOutput::getScrapQty).reduce(BigDecimal.ZERO, BigDecimal::add);
                }
                if (productWorkOrderDto.getCompleteQuantity().compareTo(BigDecimal.ZERO) > 0) {
                    productWorkOrderDto.setScrapRate(scrapQty.divide(productWorkOrderDto.getCompleteQuantity(), 2, RoundingMode.HALF_UP));
                    productWorkOrderDto.setScrapRate(scrapQty.divide(productWorkOrderDto.getCompleteQuantity(), 4, RoundingMode.HALF_UP));
                } else {
                    productWorkOrderDto.setScrapRate(scrapQty.multiply(BigDecimal.valueOf(100)));
                }
                productWorkOrderDto.setScrapQty(scrapQty);
                productWorkOrderDto.setCompleteQty(productWorkOrderDto.getCompleteQuantity().subtract(scrapQty));
            });
        }