mirror of
https://github.com/zccbbg/wms-ruoyi.git
synced 2024-09-20 11:05:54 +08:00
feat: 商品、规格删除改造
This commit is contained in:
parent
a99f1837c2
commit
e660c2befe
|
@ -95,9 +95,8 @@ public class ItemController extends BaseController {
|
|||
*/
|
||||
@Log(title = "物料", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
public R<Boolean> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
itemService.deleteByIds(List.of(ids));
|
||||
return R.ok();
|
||||
return R.ok(itemService.deleteByIds(List.of(ids)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,12 +89,12 @@ public class ItemSkuController extends BaseController {
|
|||
/**
|
||||
* 删除sku信息
|
||||
*
|
||||
* @param ids 主键串
|
||||
* @param id 主键
|
||||
*/
|
||||
@Log(title = "sku信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(itemSkuService.deleteByIds(List.of(ids)));
|
||||
@DeleteMapping("/{id}")
|
||||
public R<Boolean> remove(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(itemSkuService.deleteById(id));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,13 +48,6 @@ public class Item extends BaseEntity {
|
|||
*/
|
||||
private String itemBrand;
|
||||
|
||||
|
||||
/**
|
||||
* 删除标识
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
|
|
|
@ -59,12 +59,4 @@ public class ItemSku extends BaseEntity {
|
|||
* 重量(kg)
|
||||
*/
|
||||
private BigDecimal weight;
|
||||
|
||||
/**
|
||||
* 删除标识
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -92,8 +92,6 @@ public class ItemSkuVo implements Serializable {
|
|||
@ExcelProperty(value = "商品品牌")
|
||||
private String itemBrand;
|
||||
|
||||
private Integer delFlag;
|
||||
|
||||
private Long itemCategoryId;
|
||||
|
||||
}
|
||||
|
|
|
@ -133,4 +133,19 @@ public class InventoryService extends ServiceImpl<InventoryMapper, Inventory> {
|
|||
inventoryMapper.updateQuantity(updateList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验规格是否有库存
|
||||
* @param skuIds
|
||||
* @return
|
||||
*/
|
||||
public boolean checkInventoryBySkuIds(Collection<Long> skuIds) {
|
||||
if (CollUtil.isEmpty(skuIds)) {
|
||||
return false;
|
||||
}
|
||||
LambdaQueryWrapper<Inventory> lqw = Wrappers.lambdaQuery();
|
||||
lqw.in(Inventory::getSkuId, skuIds);
|
||||
Long count = inventoryMapper.selectCount(lqw);
|
||||
return count != null && count > 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Long> ids) {
|
||||
public Boolean deleteByIds(Collection<Long> ids) {
|
||||
List<Long> skuIds = itemSkuService.queryByItemIds(ids).stream().map(ItemSku::getId).toList();
|
||||
if (inventoryService.checkInventoryBySkuIds(skuIds)) {
|
||||
return false;
|
||||
}
|
||||
itemMapper.deleteBatchIds(ids);
|
||||
LambdaQueryWrapper<ItemSku> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(ItemSku::getItemId, ids);
|
||||
List<Long> skuIds = itemSkuMapper.selectList(wrapper).stream().map(ItemSku::getId).toList();
|
||||
itemSkuService.batchUpdateDelFlag(skuIds);
|
||||
itemSkuService.deleteByIds(skuIds);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<ItemSkuMapper, ItemSku> {
|
||||
|
||||
|
||||
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<ItemSkuMapper, ItemSku> {
|
|||
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<Long> 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<ItemSkuMapper, ItemSku> {
|
|||
return itemSkuMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量软删除sku
|
||||
*
|
||||
* @param itemSkuIds
|
||||
*/
|
||||
public void batchUpdateDelFlag(Collection<Long> itemSkuIds) {
|
||||
if (CollUtil.isEmpty(itemSkuIds)) {
|
||||
return;
|
||||
public List<ItemSku> queryByItemIds(Collection<Long> itemIds) {
|
||||
if (CollUtil.isEmpty(itemIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
LambdaUpdateWrapper<ItemSku> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.in(ItemSku::getId, itemSkuIds);
|
||||
wrapper.set(ItemSku::getDelFlag, 2);
|
||||
itemSkuMapper.update(null, wrapper);
|
||||
LambdaQueryWrapper<ItemSku> lqw = Wrappers.lambdaQuery();
|
||||
lqw.in(ItemSku::getItemId, itemIds);
|
||||
return itemSkuMapper.selectList(lqw);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
<if test="bo.itemName != null and bo.itemName != ''">
|
||||
and b.item_name like concat('%', #{bo.itemName}, '%')
|
||||
</if>
|
||||
|
|
Loading…
Reference in a new issue