package com.aucma.production.mapper;

import java.util.List;
import com.aucma.production.domain.BaseBomInfo;
import org.apache.ibatis.annotations.Param;

/**
 * 生产BOMMapper接口
 * 
 * @author Yinq
 * @date 2023-09-28
 */
public interface BaseBomInfoMapper 
{
    /**
     * 查询生产BOM
     * 
     * @param objId 生产BOM主键
     * @return 生产BOM
     */
    public BaseBomInfo selectBaseBomInfoByObjId(@Param("objId") Long objId);

    /**
     * 根据BOM编号查询生产BOM
     *
     * @param materialCode 生产BOM主键
     * @return 生产BOM
     */
    public BaseBomInfo selectBaseBomInfoByMaterialCode(@Param("materialCode") String materialCode);

    /**
     * 查询生产BOM列表
     * 
     * @param baseBomInfo 生产BOM
     * @return 生产BOM集合
     */
    public List<BaseBomInfo> selectBaseBomInfoList(BaseBomInfo baseBomInfo);

    /**
     * 新增生产BOM
     * 
     * @param baseBomInfo 生产BOM
     * @return 结果
     */
    public int insertBaseBomInfo(BaseBomInfo baseBomInfo);

    /**
     * 修改生产BOM
     * 
     * @param baseBomInfo 生产BOM
     * @return 结果
     */
    public int updateBaseBomInfo(BaseBomInfo baseBomInfo);

    /**
     * 删除生产BOM
     * 
     * @param objId 生产BOM主键
     * @return 结果
     */
    public int deleteBaseBomInfoByObjId(@Param("objId") Long objId);

    /**
     * 批量删除生产BOM
     * 
     * @param objIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBaseBomInfoByObjIds(@Param("objIds") Long[] objIds);

    /**
     * 根据ID查询所有子Bom
     * @param materialCode
     * @return
     */
    List<BaseBomInfo> selectChildrenBomById(@Param("materialCode") String materialCode);

    /**
     * 修改子元素关系
     *
     * @param children 子元素
     * @return 结果
     */
    void updateBomChildren(@Param("depts") List<BaseBomInfo> children);
}
