public List sumQuantityByUnit(List realDiff) {
Map<String, BigDecimal> unitQuantityMap = new HashMap<>();
for (OdsMaterialbomItem item : realDiff) {
String unit = item.getUnit();
BigDecimal quantity = item.getQuantity();
if (unitQuantityMap.containsKey(unit)) {
BigDecimal prevQuantity = unitQuantityMap.get(unit);
BigDecimal newQuantity = prevQuantity.add(quantity);
unitQuantityMap.put(unit, newQuantity);
} else {
unitQuantityMap.put(unit, quantity);
}
}
List result = new ArrayList<>();
for (String unit : unitQuantityMap.keySet()) {
BigDecimal quantity = unitQuantityMap.get(unit);
OdsMaterialbomItem item = new OdsMaterialbomItem();
item.setUnit(unit);
item.setQuantity(quantity);
result.add(item);
}
return result;