| | |
| | | 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; |
| | |
| | | /** |
| | | * MES 物料产品 Service 实现类 |
| | | * |
| | | * 改造说明:MES 物料主数据来源于 MDM |
| | | * - getItem/getItemList/validateItemExists 调用 MDM API |
| | | * - MES 特有配置(批次配置、BOM、SOP、SIP)保留在 MES 模块管理 |
| | | * |
| | | * @author 芋道源码 |
| | | */ |
| | | @Service |
| | |
| | | |
| | | @Resource |
| | | private MesMdItemMapper itemMapper; |
| | | |
| | | @Resource |
| | | private MdmItemApi mdmItemApi; |
| | | |
| | | @Resource |
| | | private MesMdItemTypeService itemTypeService; |
| | |
| | | |
| | | @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) { |
| | |
| | | |
| | | @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 |
| | |
| | | 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 |