package com.bonus.canteen.core.cook.mapper;

import java.util.List;
import com.bonus.canteen.core.cook.domain.CookMaterial;
import org.apache.ibatis.annotations.Param;

/**
 * 原料信息Mapper接口
 * 
 * @author xsheng
 * @date 2025-05-25
 */
public interface CookMaterialMapper {
    /**
     * 查询原料信息
     * 
     * @param materialId 原料信息主键
     * @return 原料信息
     */
    public CookMaterial selectCookMaterialByMaterialId(Long materialId);

    /**
     * 查询原料信息列表
     * 
     * @param cookMaterial 原料信息
     * @return 原料信息集合
     */
    public List<CookMaterial> selectCookMaterialList(CookMaterial cookMaterial);

    /**
     * 新增原料信息
     * 
     * @param cookMaterial 原料信息
     * @return 结果
     */
    public int insertCookMaterial(CookMaterial cookMaterial);

    /**
     * 修改原料信息
     * 
     * @param cookMaterial 原料信息
     * @return 结果
     */
    public int updateCookMaterial(CookMaterial cookMaterial);

    /**
     * 删除原料信息
     * 
     * @param materialId 原料信息主键
     * @return 结果
     */
    public int deleteCookMaterialByMaterialId(Long materialId);

    /**
     * 批量删除原料信息
     * 
     * @param materialIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCookMaterialByMaterialIds(Long[] materialIds);

    /**
     * 校验是否存在
     * @param materialCode 原料编码
     * @param materialId 其他参数（如原料ID等，用于更新时的校验）
     * @return 结果
     */
    public int checkIsExistByCode(@Param("materialCode") String materialCode,@Param("materialId")  Long materialId);

    /**
     * 校验是否存在
     * @param materialName 原料名称
     * @param materialId 其他参数（如原料ID等，用于更新时的校验）
     * @return 结果
     */
    public int checkIsExistByName(@Param("materialName") String materialName,@Param("materialId") Long materialId);

    /**
     * 校验是否被使用
     * @param materialIds 原料ID
     * @return 存在返回1
     */
    public int checkIsUse(@Param("materialIds") Long[] materialIds);
}
