package com.xinelu.manage.mapper.operationInfo;

import com.xinelu.manage.domain.operationInfo.OperationInfo;
import com.xinelu.manage.dto.operationinfo.OperationInfoDto;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * 手术信息Mapper接口
 *
 * @author xinelu
 * @date 2024-02-26
 */
public interface OperationInfoMapper {
    /**
     * 查询手术信息
     *
     * @param id 手术信息主键
     * @return 手术信息
     */
    public OperationInfo selectOperationInfoById(Long id);

    /**
     * 查询手术信息列表
     *
     * @param operationInfo 手术信息
     * @return 手术信息集合
     */
    List<OperationInfo> selectOperationInfoList(OperationInfo operationInfo);

    List<OperationInfo> selectOperationList(OperationInfoDto operationInfo);

    /**
     * 新增手术信息
     *
     * @param operationInfo 手术信息
     * @return 结果
     */
    public int insertOperationInfo(OperationInfo operationInfo);

    /**
     * 修改手术信息
     *
     * @param operationInfo 手术信息
     * @return 结果
     */
    public int updateOperationInfo(OperationInfo operationInfo);

    /**
     * 删除手术信息
     *
     * @param id 手术信息主键
     * @return 结果
     */
    public int deleteOperationInfoById(Long id);

    /**
     * 批量删除手术信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteOperationInfoByIds(Long[] ids);

    /**
     * 检查所属科室下手术名称是否重复
     */
    int countByDepartmentIdAndOperationName(@Param("departmentId") Long departmentId, @Param("operationName") String operationName);

    /**
     * 检查除当前记录之外是否存在同名的手术名称
     */
    int countByOperationNameExcludingId(@Param("id") Long id, @Param("departmentId") Long departmentId, @Param("operationName") String operationName);
}
