| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.route.vo.product.MesProRouteProductSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProductDO; |
| | | 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.mysql.pro.route.MesProRouteProductMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.md.MesMdItemTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemTypeService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | /** |
| | | * MES 工艺路线产品 Service 实现类 |
| | | * |
| | | * @author 芋道源码 |
| | | * @author 超级管理员 |
| | | */ |
| | | @Service |
| | | @Validated |
| | |
| | | @Resource |
| | | @Lazy |
| | | private MesProRouteProductBomService routeProductBomService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | @Resource |
| | | private MesMdItemTypeService itemTypeService; |
| | | |
| | | @Override |
| | | public Long createRouteProduct(MesProRouteProductSaveReqVO createReqVO) { |
| | | // 1.0 已启用的工艺路线,不允许操作 |
| | | routeService.validateRouteNotEnable(createReqVO.getRouteId()); |
| | | // 1.1 校验产品唯一性(一个产品只能关联一条工艺路线) |
| | | // 1.1 校验产品存在、启用且类型正确 |
| | | validateProductItem(createReqVO.getItemId()); |
| | | // 1.2 校验产品唯一性(一个产品只能关联一条工艺路线) |
| | | validateItemUnique(null, createReqVO.getItemId()); |
| | | |
| | | // 2. 插入 |
| | |
| | | routeService.validateRouteNotEnable(updateReqVO.getRouteId()); |
| | | // 1.1 校验存在 |
| | | validateRouteProductExists(updateReqVO.getId()); |
| | | // 1.2 校验产品唯一性 |
| | | // 1.2 校验产品存在、启用且类型正确 |
| | | validateProductItem(updateReqVO.getItemId()); |
| | | // 1.3 校验产品唯一性 |
| | | validateItemUnique(updateReqVO.getId(), updateReqVO.getItemId()); |
| | | |
| | | // 2. 更新 |
| | |
| | | } |
| | | } |
| | | |
| | | private void validateProductItem(Long itemId) { |
| | | MesMdItemDO item = itemService.validateItemExistsAndEnable(itemId); |
| | | MesMdItemTypeDO itemType = itemTypeService.getItemType(item.getItemTypeId()); |
| | | if (itemType == null || !MesMdItemTypeEnum.isProduct(itemType.getItemOrProduct())) { |
| | | throw exception(PRO_ROUTE_PRODUCT_ITEM_TYPE_INVALID); |
| | | } |
| | | } |
| | | |
| | | private void validateItemUnique(Long id, Long itemId) { |
| | | MesProRouteProductDO existing = routeProductMapper.selectByItemId(itemId); |
| | | if (existing == null) { |