xiaoyi
3 天以前 f71dabccb0e4c2fa410683e6058eb906a7dbf094
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProductServiceImpl.java
@@ -4,7 +4,12 @@
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;
@@ -34,12 +39,18 @@
    @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. 插入
@@ -54,7 +65,9 @@
        routeService.validateRouteNotEnable(updateReqVO.getRouteId());
        // 1.1 校验存在
        validateRouteProductExists(updateReqVO.getId());
        // 1.2 校验产品唯一性
        // 1.2 校验产品存在、启用且类型正确
        validateProductItem(updateReqVO.getItemId());
        // 1.3 校验产品唯一性
        validateItemUnique(updateReqVO.getId(), updateReqVO.getItemId());
        // 2. 更新
@@ -89,6 +102,14 @@
        }
    }
    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) {