diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java index 2b250f375..adadc35c5 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java @@ -126,9 +126,11 @@ public class CanteenSpuController { @SysLog("新增菜品spu") @PostMapping @PreAuthorize("@pms.hasPermission('canteen_canteenSpu_add')") + @Transactional public R save(@RequestBody CanteenSpuEntity canteenSpu) { Long deptId = SecurityUtils.getUser().getDeptId(); canteenSpu.setDeptId(deptId); + boolean save = canteenSpuService.save(canteenSpu); CanteenStockEntity canteenStockEntity = new CanteenStockEntity(); canteenStockEntity.setItemId(canteenSpu.getId()); canteenStockEntity.setItemType(StockTypeEnum.DISH.getType()); @@ -138,7 +140,7 @@ public class CanteenSpuController { canteenStockEntity.setCurrentStock(0D); canteenStockEntity.setDeptId(deptId); canteenStockService.save(canteenStockEntity); - return R.ok(canteenSpuService.save(canteenSpu)); + return R.ok(save); } /** diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenStockController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenStockController.java index f8cd9c027..a86d844b7 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenStockController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenStockController.java @@ -24,6 +24,8 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; /** * 库存表 @@ -127,18 +129,42 @@ public class CanteenStockController { @PreAuthorize("@pms.hasPermission('canteen_canteenStock_add')" ) public R ansyncStock() { + // 获取所有SPU列表 List list = canteenSpuService.list(); - for (CanteenSpuEntity canteenSpuEntity : list) { - CanteenStockEntity canteenStockEntity = new CanteenStockEntity(); - canteenStockEntity.setCurrentStock(0D); - canteenStockEntity.setBaseStock(0D); - canteenStockEntity.setItemType("2"); - canteenStockEntity.setItemId(canteenSpuEntity.getId()); - canteenStockEntity.setDeptId(canteenSpuEntity.getDeptId()); - canteenStockEntity.setInventoryUpperLimit(0); - canteenStockEntity.setInventoryLowerLimit(0); - canteenStockService.save(canteenStockEntity); + // 提取所有SPU ID + List skuIds = list.stream() + .map(CanteenSpuEntity::getId) + .collect(Collectors.toList()); + + // 查询已存在的库存记录 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.in(CanteenStockEntity::getItemId, skuIds); + List existingStocks = canteenStockService.list(wrapper); + + // 将已存在的itemId存入Set用于快速查找 + Set existingItemIds = existingStocks.stream() + .map(CanteenStockEntity::getItemId) + .collect(Collectors.toSet()); + + // 过滤出需要新增的SPU + List toSaveList = list.stream() + .filter(spu -> !existingItemIds.contains(spu.getId())) + .map(spu -> { + CanteenStockEntity entity = new CanteenStockEntity(); + entity.setCurrentStock(0D); + entity.setBaseStock(0D); + entity.setItemType("2"); + entity.setItemId(spu.getId()); + entity.setDeptId(spu.getDeptId()); + entity.setInventoryUpperLimit(0); + entity.setInventoryLowerLimit(0); + return entity; + }).collect(Collectors.toList()); + + // 批量保存新数据 + if (CollUtil.isNotEmpty(toSaveList)) { + canteenStockService.saveBatch(toSaveList); } return R.ok(); diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java index 51183c9ac..81d62dde0 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java @@ -203,6 +203,8 @@ public class CanteenSpuServiceImpl extends ServiceImpl