From 24681c81c09022f584a57006f2534b5f74723414 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 30 六月 2026 09:27:31 +0800
Subject: [PATCH] 初始化项目
---
yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemServiceImpl.java | 266 ++++++++++++++++++-----------------------------------
1 files changed, 90 insertions(+), 176 deletions(-)
diff --git a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemServiceImpl.java b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemServiceImpl.java
index 7875778..191ca86 100644
--- a/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemServiceImpl.java
+++ b/yudao-module-wms/src/main/java/cn/iocoder/yudao/module/wms/service/md/item/WmsItemServiceImpl.java
@@ -1,24 +1,23 @@
package cn.iocoder.yudao.module.wms.service.md.item;
import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemCreateReqDTO;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemUpdateReqDTO;
-import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
-import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemListReqVO;
import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemPageReqVO;
import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.item.WmsItemSaveReqVO;
import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO;
+import cn.iocoder.yudao.module.wms.dal.mysql.md.item.WmsItemMapper;
import jakarta.annotation.Resource;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.*;
@@ -26,91 +25,129 @@
/**
* WMS 鍟嗗搧 Service 瀹炵幇绫�
*
- * 鏀归�犺鏄庯細WMS 鍟嗗搧鏁版嵁鏉ユ簮浜� MDM 鐗╂枡涓绘暟鎹�
- * - 鎵�鏈夋搷浣滆皟鐢� MDM API
- * - WMS 鍟嗗搧瀵瑰簲 MDM 鐗╂枡绫诲瀷 = 鐗╂枡锛坕temType = 1锛�
- * - 瀛楁鏄犲皠锛歐msItemDO.unit <- MDM 璁¢噺鍗曚綅鍚嶇О
- *
* @author 鑺嬮亾婧愮爜
*/
@Service
@Validated
public class WmsItemServiceImpl implements WmsItemService {
- /** WMS 鍟嗗搧瀵瑰簲鐨� MDM 鐗╂枡绫诲瀷锛氱墿鏂� */
- private static final int MDM_ITEM_TYPE_MATERIAL = 1;
-
@Resource
- private MdmItemApi mdmItemApi;
-
+ private WmsItemMapper itemMapper;
@Resource
- private MdmUnitMeasureApi mdmUnitMeasureApi;
+ @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
+ private WmsItemCategoryService categoryService;
+ @Resource
+ @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧�
+ private WmsItemBrandService brandService;
+ @Resource
+ private WmsItemSkuService itemSkuService;
@Override
+ @Transactional(rollbackFor = Exception.class)
public Long createItem(WmsItemSaveReqVO createReqVO) {
// 鏍¢獙鏁版嵁
validateItemSaveData(createReqVO);
- // 鏋勫缓鍒涘缓璇锋眰骞惰皟鐢� MDM API
- MdmItemCreateReqDTO createReqDTO = buildCreateReqDTO(createReqVO);
- return mdmItemApi.createItem(createReqDTO).getCheckedData();
+ // 鎻掑叆鍟嗗搧
+ WmsItemDO item = BeanUtils.toBean(createReqVO, WmsItemDO.class);
+ itemMapper.insert(item);
+ // 鎻掑叆 SKU
+ itemSkuService.createItemSkuList(item.getId(), createReqVO.getSkus());
+ return item.getId();
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void updateItem(WmsItemSaveReqVO updateReqVO) {
// 鏍¢獙瀛樺湪
validateItemExists(updateReqVO.getId());
// 鏍¢獙鏁版嵁
validateItemSaveData(updateReqVO);
- // 鏋勫缓鏇存柊璇锋眰骞惰皟鐢� MDM API
- MdmItemUpdateReqDTO updateReqDTO = buildUpdateReqDTO(updateReqVO);
- mdmItemApi.updateItem(updateReqDTO);
+ // 鏇存柊鍟嗗搧
+ WmsItemDO updateObj = BeanUtils.toBean(updateReqVO, WmsItemDO.class);
+ itemMapper.updateById(updateObj);
+ // 鏇存柊 SKU
+ itemSkuService.updateItemSkuList(updateReqVO.getId(), updateReqVO.getSkus());
+ }
+
+ private void validateItemSaveData(WmsItemSaveReqVO reqVO) {
+ // 鏍¢獙鍟嗗搧缂栧彿鍞竴
+ validateItemCodeUnique(reqVO.getId(), reqVO.getCode());
+ // 鏍¢獙鍟嗗搧鍚嶇О鍞竴
+ validateItemNameUnique(reqVO.getId(), reqVO.getName());
+ // 鏍¢獙鍟嗗搧鍒嗙被瀛樺湪
+ validateCategoryExists(reqVO.getCategoryId());
+ // 鏍¢獙鍟嗗搧鍝佺墝瀛樺湪
+ validateBrandExists(reqVO.getBrandId());
+ }
+
+ private void validateItemCodeUnique(Long id, String code) {
+ WmsItemDO item = itemMapper.selectByCode(code);
+ if (item == null) {
+ return;
+ }
+ if (id == null || ObjectUtil.notEqual(item.getId(), id)) {
+ throw exception(ITEM_CODE_DUPLICATE);
+ }
+ }
+
+ private void validateItemNameUnique(Long id, String name) {
+ WmsItemDO item = itemMapper.selectByName(name);
+ if (item == null) {
+ return;
+ }
+ if (id == null || ObjectUtil.notEqual(item.getId(), id)) {
+ throw exception(ITEM_NAME_DUPLICATE);
+ }
+ }
+
+ private void validateCategoryExists(Long categoryId) {
+ categoryService.validateItemCategoryExists(categoryId);
+ }
+
+ private void validateBrandExists(Long brandId) {
+ if (brandId == null) {
+ return;
+ }
+ brandService.validateItemBrandExists(brandId);
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void deleteItem(Long id) {
// 鏍¢獙瀛樺湪
validateItemExists(id);
- // WMS 鍟嗗搧鍒犻櫎瀹為檯涓虹鐢紙MDM 鐗╂枡涓嶈兘鐗╃悊鍒犻櫎锛�
- mdmItemApi.updateItemStatus(id, CommonStatusEnum.DISABLE.getStatus());
+
+ // 鍒犻櫎鍟嗗搧鍜� SKU
+ itemSkuService.deleteItemSkuListByItemId(id);
+ itemMapper.deleteById(id);
}
@Override
public WmsItemDO validateItemExists(Long id) {
- MdmItemRespDTO item = mdmItemApi.validateItemExists(id).getCheckedData();
- return convertToWmsItemDO(item);
+ WmsItemDO item = itemMapper.selectById(id);
+ if (item == null) {
+ throw exception(ITEM_NOT_EXISTS);
+ }
+ return item;
}
@Override
public WmsItemDO getItem(Long id) {
- MdmItemRespDTO item = mdmItemApi.getItem(id).getCheckedData();
- if (item == null) {
- return null;
- }
- return convertToWmsItemDO(item);
+ return itemMapper.selectById(id);
}
@Override
public PageResult<WmsItemDO> getItemPage(WmsItemPageReqVO pageReqVO) {
- // 璋冪敤 MDM API 鍒嗛〉鏌ヨ
- PageResult<MdmItemRespDTO> mdmPageResult = mdmItemApi.getItemPage(
- MDM_ITEM_TYPE_MATERIAL,
- pageReqVO.getStatus(),
- pageReqVO.getPageNo(),
- pageReqVO.getPageSize()
- ).getCheckedData();
-
- // 杞崲缁撴灉
- List<WmsItemDO> itemList = convertToWmsItemDOList(mdmPageResult.getList());
- return new PageResult<>(itemList, mdmPageResult.getTotal());
+ return itemMapper.selectPage(pageReqVO,
+ categoryService.getSelfAndChildItemCategoryIdList(pageReqVO.getCategoryId()));
}
@Override
public List<WmsItemDO> getItemList(WmsItemListReqVO listReqVO) {
- // 璋冪敤 MDM API 鑾峰彇鍒楄〃
- List<MdmItemRespDTO> itemList = mdmItemApi.getItemListByStatus(listReqVO.getStatus()).getCheckedData();
- return convertToWmsItemDOList(itemList);
+ return itemMapper.selectList(listReqVO,
+ categoryService.getSelfAndChildItemCategoryIdList(listReqVO.getCategoryId()));
}
@Override
@@ -118,140 +155,17 @@
if (CollUtil.isEmpty(ids)) {
return Collections.emptyList();
}
- List<MdmItemRespDTO> itemList = mdmItemApi.getItemList(ids).getCheckedData();
- return convertToWmsItemDOList(itemList);
+ return itemMapper.selectByIds(ids);
}
@Override
public long getItemCountByCategoryId(Long categoryId) {
- return mdmItemApi.getItemCountByCategoryId(categoryId).getCheckedData();
+ return itemMapper.selectCountByCategoryId(categoryId);
}
@Override
public long getItemCountByBrandId(Long brandId) {
- // MDM 鏆傛棤鎸夊搧鐗岀粺璁℃柟娉曪紝杩斿洖 0
- return 0L;
+ return itemMapper.selectCountByBrandId(brandId);
}
- // ==================== 绉佹湁鏂规硶 ====================
-
- /**
- * 鏍¢獙鍟嗗搧淇濆瓨鏁版嵁
- */
- private void validateItemSaveData(WmsItemSaveReqVO reqVO) {
- // 鏍¢獙鍟嗗搧缂栫爜鍞竴
- if (reqVO.getCode() != null) {
- MdmItemRespDTO existItem = mdmItemApi.getItemByCode(reqVO.getCode()).getCheckedData();
- if (existItem != null && !existItem.getId().equals(reqVO.getId())) {
- throw exception(ITEM_CODE_DUPLICATE);
- }
- }
- // 鏍¢獙鍟嗗搧鍚嶇О鍞竴
- if (reqVO.getName() != null) {
- // MDM 鏆傛棤鎸夊悕绉版煡璇㈡柟娉曪紝璺宠繃姝ゆ牎楠�
- }
- }
-
- /**
- * 鏋勫缓鍒涘缓璇锋眰 DTO
- */
- private MdmItemCreateReqDTO buildCreateReqDTO(WmsItemSaveReqVO saveReqVO) {
- MdmItemCreateReqDTO createReqDTO = new MdmItemCreateReqDTO();
- createReqDTO.setCode(saveReqVO.getCode());
- createReqDTO.setName(saveReqVO.getName());
- createReqDTO.setCategoryId(saveReqVO.getCategoryId());
- createReqDTO.setBrandId(saveReqVO.getBrandId());
- createReqDTO.setUnitMeasureId(saveReqVO.getUnitMeasureId());
- createReqDTO.setItemType(MDM_ITEM_TYPE_MATERIAL);
- createReqDTO.setStatus(CommonStatusEnum.ENABLE.getStatus());
- createReqDTO.setRemark(saveReqVO.getRemark());
- return createReqDTO;
- }
-
- /**
- * 鏋勫缓鏇存柊璇锋眰 DTO
- */
- private MdmItemUpdateReqDTO buildUpdateReqDTO(WmsItemSaveReqVO saveReqVO) {
- MdmItemUpdateReqDTO updateReqDTO = new MdmItemUpdateReqDTO();
- updateReqDTO.setId(saveReqVO.getId());
- updateReqDTO.setCode(saveReqVO.getCode());
- updateReqDTO.setName(saveReqVO.getName());
- updateReqDTO.setCategoryId(saveReqVO.getCategoryId());
- updateReqDTO.setBrandId(saveReqVO.getBrandId());
- updateReqDTO.setUnitMeasureId(saveReqVO.getUnitMeasureId());
- updateReqDTO.setStatus(CommonStatusEnum.ENABLE.getStatus());
- updateReqDTO.setRemark(saveReqVO.getRemark());
- return updateReqDTO;
- }
-
- /**
- * 杞崲 MDM 鐗╂枡涓� WMS 鍟嗗搧
- */
- private WmsItemDO convertToWmsItemDO(MdmItemRespDTO mdmItem) {
- if (mdmItem == null) {
- return null;
- }
- WmsItemDO item = new WmsItemDO();
- item.setId(mdmItem.getId());
- item.setCode(mdmItem.getCode());
- item.setName(mdmItem.getName());
- item.setCategoryId(mdmItem.getCategoryId());
- item.setBrandId(mdmItem.getBrandId());
- item.setRemark(mdmItem.getRemark());
-
- // 鑾峰彇璁¢噺鍗曚綅鍚嶇О
- if (mdmItem.getUnitMeasureId() != null) {
- MdmUnitMeasureRespDTO unit = mdmUnitMeasureApi.getUnitMeasure(mdmItem.getUnitMeasureId()).getCheckedData();
- if (unit != null) {
- item.setUnit(unit.getName());
- }
- }
- return item;
- }
-
- /**
- * 鎵归噺杞崲 MDM 鐗╂枡鍒楄〃涓� WMS 鍟嗗搧鍒楄〃
- */
- private List<WmsItemDO> convertToWmsItemDOList(List<MdmItemRespDTO> mdmItemList) {
- if (CollUtil.isEmpty(mdmItemList)) {
- return Collections.emptyList();
- }
-
- // 鎵归噺鑾峰彇璁¢噺鍗曚綅
- Set<Long> unitIds = mdmItemList.stream()
- .map(MdmItemRespDTO::getUnitMeasureId)
- .filter(Objects::nonNull)
- .collect(Collectors.toSet());
-
- Map<Long, MdmUnitMeasureRespDTO> unitMap = new HashMap<>();
- if (!unitIds.isEmpty()) {
- List<MdmUnitMeasureRespDTO> units = mdmUnitMeasureApi.getUnitMeasureList(unitIds).getCheckedData();
- for (MdmUnitMeasureRespDTO unit : units) {
- unitMap.put(unit.getId(), unit);
- }
- }
-
- // 杞崲鍒楄〃
- List<WmsItemDO> result = new ArrayList<>();
- for (MdmItemRespDTO mdmItem : mdmItemList) {
- WmsItemDO item = new WmsItemDO();
- item.setId(mdmItem.getId());
- item.setCode(mdmItem.getCode());
- item.setName(mdmItem.getName());
- item.setCategoryId(mdmItem.getCategoryId());
- item.setBrandId(mdmItem.getBrandId());
- item.setRemark(mdmItem.getRemark());
-
- // 璁剧疆鍗曚綅鍚嶇О
- if (mdmItem.getUnitMeasureId() != null) {
- MdmUnitMeasureRespDTO unit = unitMap.get(mdmItem.getUnitMeasureId());
- if (unit != null) {
- item.setUnit(unit.getName());
- }
- }
- result.add(item);
- }
- return result;
- }
-
-}
\ No newline at end of file
+}
--
Gitblit v1.9.3