liyong
8 天以前 1ab2b329a40decba8ff7eefbeb158ff259aceb6d
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/unitmeasure/MesMdUnitMeasureServiceImpl.java
@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.mes.service.md.unitmeasure;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.md.unitmeasure.vo.MesMdUnitMeasurePageReqVO;
@@ -14,6 +15,8 @@
import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcLineService;
import cn.iocoder.yudao.module.mes.service.qc.rqc.MesQcRqcLineService;
import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateIndicatorService;
import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi;
import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO;
import org.springframework.context.annotation.Lazy;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@@ -23,6 +26,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
@@ -30,11 +34,16 @@
/**
 * MES 计量单位 Service 实现类
 *
 * 注意:查询操作统一使用 MDM API 获取数据,保持与 MDM 主数据一致
 *
 * @author 芋道源码
 */
@Service
@Validated
public class MesMdUnitMeasureServiceImpl implements MesMdUnitMeasureService {
    @Resource
    private MdmUnitMeasureApi unitMeasureApi;
    @Resource
    private MesMdUnitMeasureMapper unitMeasureMapper;
@@ -138,16 +147,28 @@
    @Override
    public MesMdUnitMeasureDO getUnitMeasure(Long id) {
        return unitMeasureMapper.selectById(id);
        // 优先从 MDM API 获取
        CommonResult<MdmUnitMeasureRespDTO> result = unitMeasureApi.getUnitMeasure(id);
        if (result != null && result.isSuccess() && result.getData() != null) {
            return convertToDo(result.getData());
        }
        // 如果 MDM API 失败,回退到本地数据库
        MesMdUnitMeasureDO local = unitMeasureMapper.selectById(id);
        if (local != null) {
            return local;
        }
        return null;
    }
    @Override
    public PageResult<MesMdUnitMeasureDO> getUnitMeasurePage(MesMdUnitMeasurePageReqVO pageReqVO) {
        // 使用本地数据库分页查询(MDM API 不支持分页参数)
        return unitMeasureMapper.selectPage(pageReqVO);
    }
    @Override
    public List<MesMdUnitMeasureDO> getUnitMeasureListByStatus(Integer status) {
        // 使用本地数据库查询(MDM API 不支持按状态过滤)
        return unitMeasureMapper.selectListByStatus(status);
    }
@@ -156,12 +177,45 @@
        if (CollUtil.isEmpty(ids)) {
            return Collections.emptyList();
        }
        // 优先从 MDM API 获取
        CommonResult<List<MdmUnitMeasureRespDTO>> result = unitMeasureApi.getUnitMeasureList(ids);
        if (result != null && result.isSuccess() && result.getData() != null) {
            return result.getData().stream()
                    .map(this::convertToDo)
                    .collect(Collectors.toList());
        }
        // 如果 MDM API 失败,回退到本地数据库
        return unitMeasureMapper.selectByIds(ids);
    }
    @Override
    public MesMdUnitMeasureDO getUnitMeasureByCode(String code) {
        return unitMeasureMapper.selectByCode(code);
        // 优先从 MDM API 获取
        CommonResult<MdmUnitMeasureRespDTO> result = unitMeasureApi.getUnitMeasureByCode(code);
        if (result != null && result.isSuccess() && result.getData() != null) {
            return convertToDo(result.getData());
        }
        // 如果 MDM API 失败,回退到本地数据库
        MesMdUnitMeasureDO local = unitMeasureMapper.selectByCode(code);
        if (local != null) {
            return local;
        }
        return null;
    }
    /**
     * 将 MDM DTO 转换为 MES DO
     */
    private MesMdUnitMeasureDO convertToDo(MdmUnitMeasureRespDTO dto) {
        MesMdUnitMeasureDO doObj = new MesMdUnitMeasureDO();
        doObj.setId(dto.getId());
        doObj.setCode(dto.getCode());
        doObj.setName(dto.getName());
        doObj.setPrimaryFlag(dto.getPrimaryFlag());
        doObj.setPrimaryId(dto.getPrimaryId());
        doObj.setChangeRate(dto.getChangeRate());
        doObj.setStatus(dto.getStatus());
        return doObj;
    }
}