From 6b5f7c66fc40d7f6099d561e31a34fbd50dd20d3 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 01 七月 2026 15:54:57 +0800
Subject: [PATCH] 初始化项目
---
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemSkuServiceImpl.java | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 151 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemSkuServiceImpl.java b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemSkuServiceImpl.java
new file mode 100644
index 0000000..170844f
--- /dev/null
+++ b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemSkuServiceImpl.java
@@ -0,0 +1,151 @@
+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);
+ }
+
+}
\ No newline at end of file
--
Gitblit v1.9.3