| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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.*; |
| | |
| | | /** |
| | | * MES 计量单位 Service 实现类 |
| | | * |
| | | * 注意:查询操作统一使用 MDM API 获取数据,保持与 MDM 主数据一致 |
| | | * |
| | | * @author 芋道源码 |
| | | */ |
| | | @Service |
| | | @Validated |
| | | public class MesMdUnitMeasureServiceImpl implements MesMdUnitMeasureService { |
| | | |
| | | @Resource |
| | | private MdmUnitMeasureApi unitMeasureApi; |
| | | |
| | | @Resource |
| | | private MesMdUnitMeasureMapper unitMeasureMapper; |
| | |
| | | |
| | | @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); |
| | | } |
| | | |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |