diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index 6bf9c0b9..3de03c8a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -103,7 +103,9 @@ public class RepairServiceImpl implements RepairService { resultMap.computeIfAbsent(item.getTypeNameId(), origin -> item).getRepairDeviceList().add(repairDeviceVO); resultMap.computeIfPresent(item.getTypeNameId(), (origin, novel) -> { - novel.setTotalCost(novel.getTotalCost().add(Optional.ofNullable(item.getTotalCost()).orElse(BigDecimal.ZERO))); + novel.setTotalCost(Optional.ofNullable(novel.getTotalCost()).orElse(BigDecimal.ZERO) + .add(Optional.ofNullable(item.getTotalCost()).orElse(BigDecimal.ZERO)) + ); return novel; }); }); @@ -150,17 +152,17 @@ public class RepairServiceImpl implements RepairService { public static List mergePartsNum(@NotNull List devices) { try { - Map map = devices.stream().filter(Objects::nonNull).collect( + Map map = devices.stream().filter(Objects::nonNull).collect( Collectors.toConcurrentMap(device -> device.getTypeId() + ":" + device.getPartCost() + ":" + device.getPartName(), device -> device, (existing, recently) -> { existing.setPartNum(existing.getPartNum() + recently.getPartNum()); return existing; }, ConcurrentHashMap::new) - ); + ); List list = new ArrayList<>(map.values()); - list.forEach(item -> { - item.setPartCost(Optional.ofNullable(item.getPartPrice()).orElse(BigDecimal.ZERO).multiply(new BigDecimal(item.getPartNum()))); - }); + list.forEach(item -> item.setPartCost(Optional.ofNullable(item.getPartPrice()).orElse(BigDecimal.ZERO) + .multiply(new BigDecimal(Optional.ofNullable(item.getPartNum()).orElse(0)))) + ); return list; } catch (Exception e) { throw new ServiceException("Error merging parts" + e.getMessage());