diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpSpuEntity.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpSpuEntity.java index 07e30b04b..a28254955 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpSpuEntity.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpSpuEntity.java @@ -321,6 +321,11 @@ public class SmErpSpuEntity extends Model { @TableField(exist = false) private List smErpUnitEntityList; + + @Schema(description="口味集合") + @TableField(exist = false) + private List smErpTasteStockEntityList; + /** * 库存上限 */ diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java index e72a3a528..1b5946bf7 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java @@ -129,7 +129,6 @@ public class SmErpSpuServiceImpl extends ServiceImpl tasteList = supermarketSpu.getSmErpTasteStockEntityList(); + if (CollectionUtils.isNotEmpty(tasteList)) { + tasteList.forEach(taste -> { + taste.setSpuId(supermarketSpu.getId()); + // 设置默认库存为0 + if (taste.getStock() == null) { + taste.setStock(0.0); + } + }); + smErpTasteStockService.saveBatch(tasteList); + } + //新增包装类型 List smErpUnitEntityList = supermarketSpu.getSmErpUnitEntityList(); List isBaseNum = smErpUnitEntityList.stream().filter(smErpUnitEntity -> smErpUnitEntity.getIsBase() == true).collect(Collectors.toList()); @@ -349,6 +361,61 @@ public class SmErpSpuServiceImpl extends ServiceImpl tasteList = supermarketSpu.getSmErpTasteStockEntityList(); + if (CollectionUtils.isNotEmpty(tasteList)) { + // 分离新增和更新的口味 + List insertTastes = tasteList.stream() + .filter(taste -> taste.getId() == null) + .collect(Collectors.toList()); + + List updateTastes = tasteList.stream() + .filter(taste -> taste.getId() != null) + .collect(Collectors.toList()); + + // 处理新增口味 + if (CollectionUtils.isNotEmpty(insertTastes)) { + insertTastes.forEach(taste -> { + taste.setSpuId(supermarketSpu.getId()); + // 设置默认库存为0 + if (taste.getStock() == null) { + taste.setStock(0.0); + } + }); + smErpTasteStockService.saveBatch(insertTastes); + } + + // 处理更新口味 + if (CollectionUtils.isNotEmpty(updateTastes)) { + updateTastes.forEach(taste -> { + taste.setSpuId(supermarketSpu.getId()); + }); + smErpTasteStockService.updateBatchById(updateTastes); + } + + // 获取现有所有口味ID + List existingTasteIds = smErpTasteStockService.list( + new LambdaQueryWrapper() + .eq(SmErpTasteStockEntity::getSpuId, supermarketSpu.getId()) + ).stream().map(SmErpTasteStockEntity::getId).collect(Collectors.toList()); + + // 收集本次提交的口味ID(排除新增的) + List submittedTasteIds = tasteList.stream() + .map(SmErpTasteStockEntity::getId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + // 计算需要删除的口味ID + List toDeleteTasteIds = existingTasteIds.stream() + .filter(id -> !submittedTasteIds.contains(id)) + .collect(Collectors.toList()); + + // 批量删除失效口味 + if (!toDeleteTasteIds.isEmpty()) { + smErpTasteStockService.removeByIds(toDeleteTasteIds); + } + } + return R.ok(); }