optional 可以判断判是否为空,steam流可以更好的完成过滤操作
final Optional<Item> itemOptional = itemRepository.findById((String) sourceMap.get("itemId"));
itemOptional.ifPresent(item -> csoItemHelper.updateFieldsByItem(item, csoItem, viewData));
public void updateFieldsByItem(final Item item, final CsoItem csoItem, final Cso cso) {
handleItemFactoryByItem(item,csoItem);
}
private void handleItemFactoryByItem(final Item item, final CsoItem csoItem) {
if (CollectionUtils.isEmpty(item.getItemVendorFactList())) {
return;
}
final Optional<ItemVendorFact> defaultItemVendorFact = getDefaultItemVendorFact(item);
if (defaultItemVendorFact.isPresent()) {
final ItemVendorFact defaultVendorFact = defaultItemVendorFact.get();
Vendor vendor = defaultVendorFact.getVendor();
if (CollectionUtils.isEmpty(vendor.getFactList())) {
return;
}
final Optional<VendorFact> defaultVenFact = getDefaultVendorFact(vendor);
if (defaultVenFact.isPresent()) {
final Fact defaultFact = defaultVenFact.get().getFact();
csoItem.setFactory(defaultFact);
}
}
}
private Optional<ItemVendorFact> getDefaultItemVendorFact(final Item item) {
return CommonUtil.safeStream(item.getItemVendorFactList())
.filter(ItemVendorFact -> BooleanUtils.isTrue(ItemVendorFact.getIsDefault()))
.findFirst();
}
private Optional<VendorFact> getDefaultVendorFact(final Vendor vendor) {
return CommonUtil.safeStream(vendor.getFactList())
.filter(vendorFact -> BooleanUtils.isTrue(vendorFact.getIsDefaultFact()))
.findFirst();
}