//查询需要出库数量 Map<String, BigDecimal> collectList = list.stream().collect(Collectors.groupingBy(o -> { return String.format("%s_%s_%s", o.getProductId(), o.getRepertoryId(), o.getUnitId()); }, CollectorsUtil.summingBigDecimal(StoreItemEntity::getUnitNums))); //验证数量是否够 for (String groupKey : collectList.keySet()) { List<StoreRecordsEntity> storeRecordsEntities = recordsEntities.stream().filter(q -> ValidatorUtils.isGreaterEquals(q.getCurrentNums()) && groupKey.equals(String.format("%s_%s_%s", q.getProductId(), q.getRepertoryId(), q.getUnitId()))).collect(toList()); if (storeRecordsEntities.size() == 0) { throw new RRException(String.format("%s库存不足", storeRecordsEntities.get(0).getProductName())); } BigDecimal currentNums = storeRecordsEntities.stream() .collect(CollectorsUtil.summingBigDecimal(StoreRecordsEntity::getCurrentNums)); //相等或超出表示有库存 if (currentNums.compareTo(collectList.get(groupKey)) < 0) { throw new RRException(String.format("%s库存不足", storeRecordsEntities.get(0).getProductName())); } }
java8 分组(groupingBy)
猜你喜欢
转载自blog.csdn.net/qq_43722564/article/details/92803129
今日推荐
周排行