package cn.iocoder.yudao.module.mdm.service.item;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.ObjUtil;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.module.mdm.dal.dataobject.item.MdmItemSkuDO;
|
import cn.iocoder.yudao.module.mdm.dal.mysql.item.MdmItemSkuMapper;
|
import jakarta.annotation.Resource;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.validation.annotation.Validated;
|
|
import java.util.*;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.module.mdm.enums.ErrorCodeConstants.*;
|
|
/**
|
* MDM 物料 SKU Service 实现类
|
*
|
* @author 芋道源码
|
*/
|
@Service
|
@Validated
|
public class MdmItemSkuServiceImpl implements MdmItemSkuService {
|
|
@Resource
|
private MdmItemSkuMapper itemSkuMapper;
|
|
@Override
|
public Long createItemSku(MdmItemSkuDO sku) {
|
// 校验编码唯一
|
validateItemSkuCodeUnique(null, sku.getCode());
|
// 设置默认状态
|
if (sku.getStatus() == null) {
|
sku.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
}
|
itemSkuMapper.insert(sku);
|
return sku.getId();
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void createItemSkuList(Long itemId, List<MdmItemSkuDO> skuList) {
|
if (CollUtil.isEmpty(skuList)) {
|
return;
|
}
|
for (MdmItemSkuDO sku : skuList) {
|
sku.setItemId(itemId);
|
createItemSku(sku);
|
}
|
}
|
|
@Override
|
public void updateItemSku(MdmItemSkuDO sku) {
|
// 校验存在
|
validateItemSkuExists(sku.getId());
|
// 校验编码唯一
|
validateItemSkuCodeUnique(sku.getId(), sku.getCode());
|
itemSkuMapper.updateById(sku);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void updateItemSkuList(Long itemId, List<MdmItemSkuDO> skuList) {
|
// 第一步,删除旧的 SKU
|
itemSkuMapper.deleteByItemId(itemId);
|
// 第二步,插入新的 SKU
|
if (CollUtil.isEmpty(skuList)) {
|
return;
|
}
|
for (MdmItemSkuDO sku : skuList) {
|
sku.setItemId(itemId);
|
sku.setId(null); // 清空 ID,作为新插入
|
if (sku.getStatus() == null) {
|
sku.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
}
|
itemSkuMapper.insert(sku);
|
}
|
}
|
|
private void validateItemSkuCodeUnique(Long id, String code) {
|
MdmItemSkuDO sku = itemSkuMapper.selectByCode(code);
|
if (sku == null) {
|
return;
|
}
|
if (id == null || ObjUtil.notEqual(sku.getId(), id)) {
|
throw exception(MDM_ITEM_SKU_CODE_DUPLICATE);
|
}
|
}
|
|
@Override
|
public void deleteItemSku(Long id) {
|
// 校验存在
|
validateItemSkuExists(id);
|
// 删除
|
itemSkuMapper.deleteById(id);
|
}
|
|
@Override
|
public void deleteItemSkuListByItemId(Long itemId) {
|
itemSkuMapper.deleteByItemId(itemId);
|
}
|
|
@Override
|
public MdmItemSkuDO validateItemSkuExists(Long id) {
|
MdmItemSkuDO sku = itemSkuMapper.selectById(id);
|
if (sku == null) {
|
throw exception(MDM_ITEM_SKU_NOT_EXISTS);
|
}
|
return sku;
|
}
|
|
@Override
|
public MdmItemSkuDO validateItemSkuExistsAndEnable(Long id) {
|
MdmItemSkuDO sku = validateItemSkuExists(id);
|
if (CommonStatusEnum.isDisable(sku.getStatus())) {
|
throw exception(MDM_ITEM_SKU_IS_DISABLE);
|
}
|
return sku;
|
}
|
|
@Override
|
public MdmItemSkuDO getItemSku(Long id) {
|
return itemSkuMapper.selectById(id);
|
}
|
|
@Override
|
public List<MdmItemSkuDO> getItemSkuListByItemId(Long itemId) {
|
return itemSkuMapper.selectListByItemId(itemId);
|
}
|
|
@Override
|
public List<MdmItemSkuDO> getItemSkuList(Collection<Long> ids) {
|
if (CollUtil.isEmpty(ids)) {
|
return Collections.emptyList();
|
}
|
return itemSkuMapper.selectBatchIds(ids);
|
}
|
|
@Override
|
public MdmItemSkuDO getItemSkuByCode(String code) {
|
return itemSkuMapper.selectByCode(code);
|
}
|
|
@Override
|
public MdmItemSkuDO getItemSkuByBarCode(String barCode) {
|
return itemSkuMapper.selectByBarCode(barCode);
|
}
|
|
}
|