From b19ceb5f3cafc914446a071b19d6f7bfbd46057e Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Tue, 19 Aug 2025 16:42:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E5=B8=82=E5=BA=93=E5=AD=98=E5=95=86?= =?UTF-8?q?=E5=93=81=EF=BC=8C=E5=8F=A3=E5=91=B3=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supermarket/entity/SmErpSpuEntity.java | 5 ++ .../service/impl/SmErpSpuServiceImpl.java | 69 ++++++++++++++++++- 2 files changed, 73 insertions(+), 1 deletion(-) 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(); }