2 天以前 f7273277023f3497ac071bf98f556a569cb4dd25
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/item/MesMdItemApiImpl.java
@@ -5,16 +5,18 @@
import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.MesMdItemSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.batchconfig.MesMdItemBatchConfigSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemTypeDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
import cn.iocoder.yudao.module.mes.dal.mysql.md.item.MesMdItemMapper;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemBatchConfigService;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemTypeService;
import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.Collection;
import java.util.Set;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
@@ -23,9 +25,9 @@
 * MES 物料产品 API 实现类
 *
 * 供 MDM 等模块同步物料主数据到 MES 使用。
 * 单位、分类按 code 在 MES 侧解析为对应 id。
 * 单位按 code 在 MES 侧解析为对应 id。
 *
 * @author 芋道源码
 * @author 超级管理员
 */
@Service
@Validated
@@ -35,7 +37,7 @@
    @Resource
    private MesMdItemService itemService;
    @Resource
    private MesMdItemTypeService itemTypeService;
    private MesMdItemMapper itemMapper;
    @Resource
    private MesMdUnitMeasureService unitMeasureService;
    @Resource
@@ -86,7 +88,9 @@
    }
    /**
     * 将同步 DTO 转换为 MES 物料产品 SaveReqVO,并按 code 解析单位/分类 id
     * 将同步 DTO 转换为 MES 物料产品 SaveReqVO,并按 code 解析单位 id
     *
     * MDM 品种管理已去掉「品种分类」,同步不再设置物料分类(item_type_id 留空,可在 MES 侧手工补填)
     */
    private MesMdItemSaveReqVO buildSaveReqVO(MesMdItemSyncReqDTO syncReqDTO) {
        // 解析计量单位 code -> id
@@ -94,18 +98,35 @@
        if (unitMeasure == null) {
            throw exception(MD_UNIT_MEASURE_NOT_EXISTS);
        }
        // 解析物料分类 code -> id
        MesMdItemTypeDO itemType = itemTypeService.getItemTypeByCode(syncReqDTO.getItemTypeCode());
        if (itemType == null) {
            throw exception(MD_ITEM_TYPE_NOT_EXISTS);
        }
        // 组装(code/name/specification/safeStockFlag/minStock/maxStock/highValue/batchFlag/remark 同名拷贝)
        MesMdItemSaveReqVO saveReqVO = BeanUtils.toBean(syncReqDTO, MesMdItemSaveReqVO.class);
        saveReqVO.setUnitMeasureId(unitMeasure.getId());
        saveReqVO.setItemTypeId(itemType.getId());
        return saveReqVO;
    }
    @Override
    public void deleteItem(Long mdmItemId) {
        log.info("[deleteItem] 同步删除 MES 物料产品,mdmItemId={}", mdmItemId);
        MesMdItemDO existItem = itemService.getItemByMdmItemId(mdmItemId);
        if (existItem != null) {
            itemService.deleteItem(existItem.getId());
        }
    }
    @Override
    public void updateItemStatus(Long mdmItemId, Integer status) {
        log.info("[updateItemStatus] 同步更新 MES 物料产品状态,mdmItemId={}, status={}", mdmItemId, status);
        MesMdItemDO existItem = itemService.getItemByMdmItemId(mdmItemId);
        if (existItem != null) {
            itemService.updateItemStatus(existItem.getId(), status);
        }
    }
    @Override
    public Set<Long> getSyncedMdmItemIds(Collection<Long> mdmItemIds) {
        return itemMapper.selectMdmItemIdsByMdmItemIds(mdmItemIds);
    }
    /**
     * 保存批次配置
     */