diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java index b019f99e9..0ce371795 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpInventoryRecordsServiceImpl.java @@ -230,17 +230,26 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl cgPlanItemEntities = smErpInventoryRecordsItemMapper.selectList(smErpCgPlanItemEntityLambdaQueryWrapper); // 按 inventoryId 分组并计算每个分组的 totalAmount 总和 - Map inventoryTotalAmountMap = cgPlanItemEntities.stream() +// Map inventoryTotalAmountMap = cgPlanItemEntities.stream() +// .collect(Collectors.groupingBy( +// SmErpInventoryRecordsItemEntity::getInventoryId, +// Collectors.summingInt(item -> +// (int) (Math.abs(item.getQuantity()) * (item.getRealPrice())) +// ) +// ); + + Map> smerpInventoryRecordsItemEntityMap= cgPlanItemEntities.stream() .collect(Collectors.groupingBy( - SmErpInventoryRecordsItemEntity::getInventoryId, - Collectors.summingInt(item -> - (int) (Math.abs(item.getQuantity()) * item.getUnitPrice()) - ) - )); + SmErpInventoryRecordsItemEntity::getInventoryId)); + // 将计算出的 totalAmount 总和设置回 pageData 的 records 中 records.forEach(record -> { - Integer totalAmount = inventoryTotalAmountMap.getOrDefault(record.getId(), 0); - record.setTotalAmount(totalAmount); +// if +// Integer totalAmount = inventoryTotalAmountMap.getOrDefault(record.getId(), 0); + List smErpInventoryRecordsItemEntityList = smerpInventoryRecordsItemEntityMap.get(record.getId()); +// record.setTotalAmount(totalAmount); + //todo 这里有一个问题就是出入库编辑的时候,没有更新主表的totalAmount,所以一直用的子表的totalAmount,子表的totalAmount又存在为空的情况,涉及到多个业务 + record.setTotalAmount(smErpInventoryRecordsItemEntityList.stream().mapToInt(item -> item.getTotalAmount()==null?0:item.getTotalAmount()).sum()); }); Set erpSpuIds = cgPlanItemEntities.stream().map(SmErpInventoryRecordsItemEntity::getErpSpuId).collect(Collectors.toSet()); @@ -477,7 +486,6 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl units = items.stream().map(s -> s.getUnitId()).collect(Collectors.toSet()); List smErpUnitEntities = smErpUnitMapper.selectList(new LambdaQueryWrapper().in(SmErpUnitEntity::getId, units)); Map unitMap = smErpUnitEntities.stream().collect(Collectors.toMap(SmErpUnitEntity::getId, unit -> unit)); - for (InventoryRecordEditItemDTO item : items){ SmErpInventoryRecordsItemEntity smErpInventoryRecordsItemEntity = new SmErpInventoryRecordsItemEntity(); org.springframework.beans.BeanUtils.copyProperties(item,smErpInventoryRecordsItemEntity);