@Override
public PickOrderRecordDO findBy(Long pickOrderRecordId) {
PickOrderRecordDO pickOrderRecordDO = this.baseMapper.selectByPickOrderRecordId(pickOrderRecordId);
List<PickOrderRecordItemBriefDO> pickOrderRecordItemBriefDOS = pickOrderRecordItemService.listByPickOrderRecordId(pickOrderRecordId);
List<PickOrderRecordItemBriefDO> orderRecordItemBriefDOSList = new ArrayList<>();
// 品项的数量
Map<Long, PickOrderRecordItemBriefDO> map = new HashMap<>();
//根据品项分组计算
pickOrderRecordItemBriefDOS
.stream()
.collect(Collectors.groupingBy(PickOrderRecordItemBriefDO::getProductItemId))
.forEach((productItemId, list) -> {
BigDecimal orderNum = list.stream().map(PickOrderRecordItemBriefDO::getTotalNum)
.reduce(BigDecimal.ZERO, BigDecimal::add);
PickOrderRecordItemBriefDO pickOrderRecordItemBrief = new PickOrderRecordItemBriefDO();
pickOrderRecordItemBrief.setTotalNum(orderNum);
pickOrderRecordItemBrief.setProductItemCategoryName(list.get(0).getProductItemCategoryName());
pickOrderRecordItemBrief.setProductItemName(list.get(0).getProductItemName());
map.put(productItemId, pickOrderRecordItemBrief);
});
orderRecordItemBriefDOSList = new ArrayList<>(map.values());
pickOrderRecordDO.setPickOrderRecordItemBriefDOList(orderRecordItemBriefDOSList);
List<PickOrderRecordItemShopDO> pickOrderRecordItemShopDOS = pickOrderRecordItemService.listBy(pickOrderRecordId);
pickOrderRecordDO.setPickOrderRecordItemShopDOList(pickOrderRecordItemShopDOS);
return pickOrderRecordDO;
}
分组求和的两种形式
于 2022-08-05 11:12:23 首次发布