2026-07-01 6b5f7c66fc40d7f6099d561e31a34fbd50dd20d3
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImpl.java
@@ -6,8 +6,6 @@
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.MesMdItemImportExcelVO;
import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.MesMdItemImportRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.MesMdItemPageReqVO;
@@ -40,9 +38,7 @@
/**
 * MES 物料产品 Service 实现类
 *
 * 改造说明:MES 物料主数据来源于 MDM
 * - getItem/getItemList/validateItemExists 调用 MDM API
 * - MES 特有配置(批次配置、BOM、SOP、SIP)保留在 MES 模块管理
 * 注意:当前保持使用 MES 本地表,待 MDM 数据迁移完成后再切换到 MDM API
 *
 * @author 芋道源码
 */
@@ -52,9 +48,6 @@
    @Resource
    private MesMdItemMapper itemMapper;
    @Resource
    private MdmItemApi mdmItemApi;
    @Resource
    private MesMdItemTypeService itemTypeService;
@@ -156,14 +149,20 @@
    @Override
    public MesMdItemDO validateItemExists(Long id) {
        MdmItemRespDTO item = mdmItemApi.validateItemExists(id).getCheckedData();
        return BeanUtils.toBean(item, MesMdItemDO.class);
        MesMdItemDO item = itemMapper.selectById(id);
        if (item == null) {
            throw exception(MD_ITEM_NOT_EXISTS);
        }
        return item;
    }
    @Override
    public MesMdItemDO validateItemExistsAndEnable(Long id) {
        MdmItemRespDTO item = mdmItemApi.validateItemExistsAndEnable(id).getCheckedData();
        return BeanUtils.toBean(item, MesMdItemDO.class);
        MesMdItemDO item = validateItemExists(id);
        if (ObjUtil.notEqual(CommonStatusEnum.ENABLE.getStatus(), item.getStatus())) {
            throw exception(MD_ITEM_IS_DISABLE);
        }
        return item;
    }
    private void validateItemCodeUnique(Long id, String code) {
@@ -242,18 +241,21 @@
    @Override
    public MesMdItemDO getItem(Long id) {
        // 从 MDM 获取物料主数据
        MdmItemRespDTO item = mdmItemApi.getItem(id).getCheckedData();
        return BeanUtils.toBean(item, MesMdItemDO.class);
        return itemMapper.selectById(id);
    }
    @Override
    public PageResult<MesMdItemDO> getItemPage(MesMdItemPageReqVO pageReqVO) {
        // 调用 MDM API 分页查询(MES 物料对应 MDM 物料类型=物料)
        cn.iocoder.yudao.framework.common.pojo.PageResult<MdmItemRespDTO> mdmPageResult =
                mdmItemApi.getItemPage(1, pageReqVO.getStatus(), pageReqVO.getPageNo(), pageReqVO.getPageSize()).getCheckedData();
        List<MesMdItemDO> itemList = BeanUtils.toBean(mdmPageResult.getList(), MesMdItemDO.class);
        return new PageResult<>(itemList, mdmPageResult.getTotal());
        // 查找时,如果查找某个分类编号,则包含它的子分类
        Set<Long> itemTypeIds = null;
        if (pageReqVO.getItemTypeId() != null) {
            itemTypeIds = new HashSet<>();
            itemTypeIds.add(pageReqVO.getItemTypeId());
            List<MesMdItemTypeDO> children = itemTypeService.getItemTypeChildrenList(pageReqVO.getItemTypeId());
            itemTypeIds.addAll(convertSet(children, MesMdItemTypeDO::getId));
        }
        // 分页查询
        return itemMapper.selectPage(pageReqVO, itemTypeIds);
    }
    @Override
@@ -261,19 +263,17 @@
        if (CollUtil.isEmpty(ids)) {
            return Collections.emptyList();
        }
        List<MdmItemRespDTO> itemList = mdmItemApi.getItemList(ids).getCheckedData();
        return BeanUtils.toBean(itemList, MesMdItemDO.class);
        return itemMapper.selectByIds(ids);
    }
    @Override
    public Long getItemCountByItemTypeId(Long itemTypeId) {
        // MES 分类需要映射到 MDM 分类
        return mdmItemApi.getItemCountByCategoryId(itemTypeId).getCheckedData();
        return itemMapper.selectCountByItemTypeId(itemTypeId);
    }
    @Override
    public Long getItemCountByUnitMeasureId(Long unitMeasureId) {
        return mdmItemApi.getItemCountByUnitMeasureId(unitMeasureId).getCheckedData();
        return itemMapper.selectCountByUnitMeasureId(unitMeasureId);
    }
    @Override
@@ -364,4 +364,4 @@
        return respVO;
    }
}
}