public static Map<String, CalculationResultDTO> statisticsLevelSubtotal(final List computeResultExports,
final int scoreItemLength) {
final BigDecimal weightGroupDataCount = BigDecimal.valueOf(computeResultExports.size() / scoreItemLength);
return computeResultExports.stream()
.map(item -> levelSubtotalCompute(item, weightGroupDataCount))
.collect(Collectors.groupingBy(CalculationResultDTO::getScoreItemId,
LinkedHashMap::new,
Collectors.reducing(calculationResultValueSum)))
.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
item -> item.getValue().orElse(new CalculationResultDTO()),
(o, n) -> o, LinkedHashMap::new));