From e660c2befe1e404bc105d167b16f259155d5aa79 Mon Sep 17 00:00:00 2001 From: DataCall <115401705@qq.com> Date: Wed, 24 Jul 2024 14:20:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=95=86=E5=93=81=E3=80=81=E8=A7=84?= =?UTF-8?q?=E6=A0=BC=E5=88=A0=E9=99=A4=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/wms/controller/ItemController.java | 5 +-- .../wms/controller/ItemSkuController.java | 10 ++--- .../com/ruoyi/wms/domain/entity/Item.java | 7 --- .../com/ruoyi/wms/domain/entity/ItemSku.java | 8 ---- .../com/ruoyi/wms/domain/vo/ItemSkuVo.java | 2 - .../ruoyi/wms/service/InventoryService.java | 15 +++++++ .../com/ruoyi/wms/service/ItemService.java | 13 +++--- .../com/ruoyi/wms/service/ItemSkuService.java | 44 +++++++++++++------ .../resources/mapper/wms/ItemSkuMapper.xml | 3 +- 9 files changed, 62 insertions(+), 45 deletions(-) diff --git a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/controller/ItemController.java b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/controller/ItemController.java index 2ad08c7..c9b4163 100644 --- a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/controller/ItemController.java +++ b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/controller/ItemController.java @@ -95,9 +95,8 @@ public class ItemController extends BaseController { */ @Log(title = "物料", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { - itemService.deleteByIds(List.of(ids)); - return R.ok(); + return R.ok(itemService.deleteByIds(List.of(ids))); } } diff --git a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/controller/ItemSkuController.java b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/controller/ItemSkuController.java index e7a573f..5ded54a 100644 --- a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/controller/ItemSkuController.java +++ b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/controller/ItemSkuController.java @@ -89,12 +89,12 @@ public class ItemSkuController extends BaseController { /** * 删除sku信息 * - * @param ids 主键串 + * @param id 主键 */ @Log(title = "sku信息", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long[] ids) { - return toAjax(itemSkuService.deleteByIds(List.of(ids))); + @DeleteMapping("/{id}") + public R remove(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(itemSkuService.deleteById(id)); } } diff --git a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/entity/Item.java b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/entity/Item.java index 0ffb2bf..9435ce9 100644 --- a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/entity/Item.java +++ b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/entity/Item.java @@ -48,13 +48,6 @@ public class Item extends BaseEntity { */ private String itemBrand; - - /** - * 删除标识 - */ - @TableLogic - private Integer delFlag; - /** * 备注 */ diff --git a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/entity/ItemSku.java b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/entity/ItemSku.java index efafc9a..6d29a84 100644 --- a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/entity/ItemSku.java +++ b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/entity/ItemSku.java @@ -59,12 +59,4 @@ public class ItemSku extends BaseEntity { * 重量(kg) */ private BigDecimal weight; - - /** - * 删除标识 - */ - @TableLogic - private Integer delFlag; - - } diff --git a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/vo/ItemSkuVo.java b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/vo/ItemSkuVo.java index fdeacb3..1275889 100644 --- a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/vo/ItemSkuVo.java +++ b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/domain/vo/ItemSkuVo.java @@ -92,8 +92,6 @@ public class ItemSkuVo implements Serializable { @ExcelProperty(value = "商品品牌") private String itemBrand; - private Integer delFlag; - private Long itemCategoryId; } diff --git a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/InventoryService.java b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/InventoryService.java index b41a73f..a9c2f93 100644 --- a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/InventoryService.java +++ b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/InventoryService.java @@ -133,4 +133,19 @@ public class InventoryService extends ServiceImpl { inventoryMapper.updateQuantity(updateList); } } + + /** + * 校验规格是否有库存 + * @param skuIds + * @return + */ + public boolean checkInventoryBySkuIds(Collection skuIds) { + if (CollUtil.isEmpty(skuIds)) { + return false; + } + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(Inventory::getSkuId, skuIds); + Long count = inventoryMapper.selectCount(lqw); + return count != null && count > 0; + } } diff --git a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/ItemService.java b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/ItemService.java index 3d22e96..eac2f71 100644 --- a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/ItemService.java +++ b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/ItemService.java @@ -39,6 +39,7 @@ public class ItemService { private final ItemSkuService itemSkuService; private final ItemSkuMapper itemSkuMapper; private final ItemCategoryMapper itemCategoryMapper; + private final InventoryService inventoryService; /** * 查询物料 @@ -175,11 +176,13 @@ public class ItemService { * 批量删除物料 */ @Transactional - public void deleteByIds(Collection ids) { + public Boolean deleteByIds(Collection ids) { + List skuIds = itemSkuService.queryByItemIds(ids).stream().map(ItemSku::getId).toList(); + if (inventoryService.checkInventoryBySkuIds(skuIds)) { + return false; + } itemMapper.deleteBatchIds(ids); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(ItemSku::getItemId, ids); - List skuIds = itemSkuMapper.selectList(wrapper).stream().map(ItemSku::getId).toList(); - itemSkuService.batchUpdateDelFlag(skuIds); + itemSkuService.deleteByIds(skuIds); + return true; } } diff --git a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/ItemSkuService.java b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/ItemSkuService.java index e8aa186..e6e41c8 100644 --- a/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/ItemSkuService.java +++ b/ruoyi-modules/ruoyi-wms-service/src/main/java/com/ruoyi/wms/service/ItemSkuService.java @@ -1,6 +1,7 @@ package com.ruoyi.wms.service; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -20,6 +21,7 @@ import com.ruoyi.wms.domain.vo.ItemVo; import com.ruoyi.wms.mapper.ItemCategoryMapper; import com.ruoyi.wms.mapper.ItemSkuMapper; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,12 +32,14 @@ import java.util.stream.Collectors; @RequiredArgsConstructor(onConstructor_ = {@Lazy}) @Service +@Slf4j public class ItemSkuService extends ServiceImpl { private final ItemSkuMapper itemSkuMapper; private final ItemService itemService; private final ItemCategoryMapper itemCategoryMapper; + private final InventoryService inventoryService; /** * 查询sku信息 @@ -155,13 +159,33 @@ public class ItemSkuService extends ServiceImpl { return itemSkuMapper.updateById(update) > 0; } + public Boolean deleteById(Long id) { + // 只有一个不能删除 + ItemSku itemSku = itemSkuMapper.selectById(id); + Assert.notNull(itemSku, "规格不存在"); + Assert.state(queryListByItemId(itemSku.getItemId()).size() > 1, "至少包含一个商品规格"); + // 校验库存是否已关联 + if (inventoryService.checkInventoryBySkuIds(Arrays.asList(id))) { + log.info("规格{}已有业务关联,无法删除!", id); + return false; + } + // 删除 + itemSkuMapper.deleteById(id); + return true; + } /** * 批量删除sku信息 */ public Boolean deleteByIds(Collection ids) { - return itemSkuMapper.deleteBatchIds(ids) > 0; + // 校验库存是否已关联 + if (inventoryService.checkInventoryBySkuIds(ids)) { + return false; + } + // 删除 + itemSkuMapper.deleteBatchIds(ids); + return true; } /** @@ -203,18 +227,12 @@ public class ItemSkuService extends ServiceImpl { return itemSkuMapper.selectVoList(lqw); } - /** - * 批量软删除sku - * - * @param itemSkuIds - */ - public void batchUpdateDelFlag(Collection itemSkuIds) { - if (CollUtil.isEmpty(itemSkuIds)) { - return; + public List queryByItemIds(Collection itemIds) { + if (CollUtil.isEmpty(itemIds)) { + return Collections.emptyList(); } - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.in(ItemSku::getId, itemSkuIds); - wrapper.set(ItemSku::getDelFlag, 2); - itemSkuMapper.update(null, wrapper); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(ItemSku::getItemId, itemIds); + return itemSkuMapper.selectList(lqw); } } diff --git a/ruoyi-modules/ruoyi-wms-service/src/main/resources/mapper/wms/ItemSkuMapper.xml b/ruoyi-modules/ruoyi-wms-service/src/main/resources/mapper/wms/ItemSkuMapper.xml index c3a4817..9ad599b 100644 --- a/ruoyi-modules/ruoyi-wms-service/src/main/resources/mapper/wms/ItemSkuMapper.xml +++ b/ruoyi-modules/ruoyi-wms-service/src/main/resources/mapper/wms/ItemSkuMapper.xml @@ -21,7 +21,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.sku_name, a.item_id, a.out_sku_id, - a.del_flag, a.length, a.width, a.height, @@ -39,7 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from wms_item_sku a inner join wms_item b on a.item_id=b.id inner join wms_item_category c on b.item_category=c.id - where a.del_flag=0 and b.del_flag=0 + where 1=1 and b.item_name like concat('%', #{bo.itemName}, '%')