From d199edb5ee930fb55e2ac81c7a3a52852d1067e3 Mon Sep 17 00:00:00 2001 From: zhangji <1315410739@qq.com> Date: Wed, 17 Sep 2025 16:55:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E9=94=AE=E6=B8=85=E5=BA=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/spu/ProductSpuController.java | 8 ++++ .../service/spu/ProductSpuService.java | 2 + .../service/spu/ProductSpuServiceImpl.java | 41 +++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java index 1aaad30..af1efb2 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java @@ -169,4 +169,12 @@ public class ProductSpuController { return success(true); } + @PutMapping("/one-click-clear") + @Operation(summary = "一键清空 SPU Stock") + @PreAuthorize("@ss.hasPermission('product:spu:update')") + public CommonResult oneClickClear(@RequestParam("deviceId") String deviceId) { + productSpuService.oneClickClear(deviceId); + return success(true); + } + } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java index 4f4547b..4525b5f 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java @@ -154,4 +154,6 @@ public interface ProductSpuService { List getSpuListByDeviceid(String deviceId); void oneClickReplenishment(String deviceId); + + void oneClickClear(String deviceId); } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java index 7fb1758..faf1c28 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java @@ -265,6 +265,47 @@ public class ProductSpuServiceImpl implements ProductSpuService { } } + @Override + public void oneClickClear(String deviceId) { + //商品列表 + List spuList = productSpuMapper.getSpuListByDeviceid(deviceId); + if (spuList == null|| spuList.isEmpty()) { + throw exception(SKU_NOT_EXISTS); + } + for (ProductSpuDO spu : spuList) { + List skuListBySpuId = productSkuService.getSkuListBySpuId(spu.getId()); + if (skuListBySpuId == null|| skuListBySpuId.isEmpty()){ + throw exception(SKU_NOT_EXISTS); + } + ProductSkuUpdateStockReqVO updateSpuReqVO= new ProductSkuUpdateStockReqVO(); + updateSpuReqVO.setId(spu.getId()); + updateSpuReqVO.setStock(0); + // 更新 SPU 库存 + int ispu = productSpuMapper.updateSpuStockById(updateSpuReqVO); + if (ispu>0) { + for (ProductSkuDO sku : skuListBySpuId) { + // 更新 SKU 库存 + ProductSkuUpdateStockReqVO updateSkuReqVO = new ProductSkuUpdateStockReqVO(); + updateSkuReqVO.setId(sku.getId()); + updateSkuReqVO.setStock(0); + int isku = productSkuService.updateSkuStockById(updateSkuReqVO); + if (isku > 0) { + //添加库存log + StockLogSaveReqVO stockLogSaveReqVO = new StockLogSaveReqVO(); + stockLogSaveReqVO.setDeviceId(spu.getDeviceId()); + stockLogSaveReqVO.setSpuName(spu.getName()); + stockLogSaveReqVO.setBarCode(sku.getBarCode()); + stockLogSaveReqVO.setCabinetChannel(sku.getCabinetChannel()); + stockLogSaveReqVO.setCount(updateSkuReqVO.getStock()); + stockLogSaveReqVO.setOldStock(sku.getStock()); + stockLogSaveReqVO.setNewStock(updateSkuReqVO.getStock()); + stockLogService.createStockLog(stockLogSaveReqVO); + } + } + } + } + } + @Override @Transactional(rollbackFor = Exception.class) public void deleteSpu(Long id) {