背景:现有返工量 reworkQuantity
需求:
生产日期在本自然周的返工之和/完工数之和*100% 保留两位小数
WeekStatisticsVO vo = new WeekStatisticsVO();
var startDay = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
//获取本周全部数据
List<ProductionPlanDailyTask> productionPlanDailyTasks = baseMapper.selectList(new LambdaQueryWrapper<ProductionPlanDailyTask>().ge(Entity::getCreateTime, startDay));
//本周统计
int sum = productionPlanDailyTasks.stream().mapToInt(ProductionPlanDailyTask::getCompleteQuantity).sum();
//平均效率
//整体返工率
var reworkQuantity = productionPlanDailyTasks.stream().mapToInt(ProductionPlanDailyTask::getReworkQuantity).filter(Objects::nonNull).sum();
var completeQuantity = productionPlanDailyTasks.stream().mapToInt(ProductionPlanDailyTask::getCompleteQuantity).filter(Objects::nonNull).sum();
vo.setReworkRate(
BigDecimal.valueOf((double) reworkQuantity / completeQuantity)
.multiply(new BigDecimal(100))
.setScale(2, RoundingMode.HALF_UP)
);
需注意:需要对数据进行null的逻辑判断