2026-06-29 940c8481d2fdcf51341db4ccd6fd6fcc2d43debb
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImpl.java
@@ -6,6 +6,8 @@
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;
@@ -38,6 +40,10 @@
/**
 * MES 物料产品 Service 实现类
 *
 * 改造说明:MES 物料主数据来源于 MDM
 * - getItem/getItemList/validateItemExists 调用 MDM API
 * - MES 特有配置(批次配置、BOM、SOP、SIP)保留在 MES 模块管理
 *
 * @author 芋道源码
 */
@Service
@@ -46,6 +52,9 @@
    @Resource
    private MesMdItemMapper itemMapper;
    @Resource
    private MdmItemApi mdmItemApi;
    @Resource
    private MesMdItemTypeService itemTypeService;
@@ -147,20 +156,14 @@
    @Override
    public MesMdItemDO validateItemExists(Long id) {
        MesMdItemDO item = itemMapper.selectById(id);
        if (item == null) {
            throw exception(MD_ITEM_NOT_EXISTS);
        }
        return item;
        MdmItemRespDTO item = mdmItemApi.validateItemExists(id).getCheckedData();
        return BeanUtils.toBean(item, MesMdItemDO.class);
    }
    @Override
    public MesMdItemDO validateItemExistsAndEnable(Long id) {
        MesMdItemDO item = validateItemExists(id);
        if (ObjUtil.notEqual(CommonStatusEnum.ENABLE.getStatus(), item.getStatus())) {
            throw exception(MD_ITEM_IS_DISABLE);
        }
        return item;
        MdmItemRespDTO item = mdmItemApi.validateItemExistsAndEnable(id).getCheckedData();
        return BeanUtils.toBean(item, MesMdItemDO.class);
    }
    private void validateItemCodeUnique(Long id, String code) {
@@ -239,21 +242,18 @@
    @Override
    public MesMdItemDO getItem(Long id) {
        return itemMapper.selectById(id);
        // 从 MDM 获取物料主数据
        MdmItemRespDTO item = mdmItemApi.getItem(id).getCheckedData();
        return BeanUtils.toBean(item, MesMdItemDO.class);
    }
    @Override
    public PageResult<MesMdItemDO> getItemPage(MesMdItemPageReqVO pageReqVO) {
        // 查找时,如果查找某个分类编号,则包含它的子分类
        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);
        // 调用 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());
    }
    @Override
@@ -261,17 +261,19 @@
        if (CollUtil.isEmpty(ids)) {
            return Collections.emptyList();
        }
        return itemMapper.selectByIds(ids);
        List<MdmItemRespDTO> itemList = mdmItemApi.getItemList(ids).getCheckedData();
        return BeanUtils.toBean(itemList, MesMdItemDO.class);
    }
    @Override
    public Long getItemCountByItemTypeId(Long itemTypeId) {
        return itemMapper.selectCountByItemTypeId(itemTypeId);
        // MES 分类需要映射到 MDM 分类
        return mdmItemApi.getItemCountByCategoryId(itemTypeId).getCheckedData();
    }
    @Override
    public Long getItemCountByUnitMeasureId(Long unitMeasureId) {
        return itemMapper.selectCountByUnitMeasureId(unitMeasureId);
        return mdmItemApi.getItemCountByUnitMeasureId(unitMeasureId).getCheckedData();
    }
    @Override