package com.zhyc.module.base.mapper;

import java.util.List;

import com.zhyc.common.core.domain.BaseEntity;
import com.zhyc.module.base.domain.BasSheep;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 羊只基本信息Mapper接口
 * 
 * @author ruoyi
 * @date 2025-07-15
 */
@Mapper
public interface BasSheepMapper 
{
    /**
     * 查询羊只基本信息
     * 
     * @param id 羊只基本信息主键
     * @return 羊只基本信息
     */
    public BasSheep selectBasSheepById(Long id);

    /**
     * 查询羊只基本信息列表
     * 
     * @param basSheep 羊只基本信息
     * @return 羊只基本信息集合
     */
    public List<BasSheep> selectBasSheepList(BasSheep basSheep);

    /**
     * 新增羊只基本信息
     * 
     * @param basSheep 羊只基本信息
     * @return 结果
     */
    public int insertBasSheep(BasSheep basSheep);

    /**
     * 修改羊只基本信息
     * 
     * @param basSheep 羊只基本信息
     * @return 结果
     */
    public int updateBasSheep(BasSheep basSheep);

    /**
     * 删除羊只基本信息
     * 
     * @param id 羊只基本信息主键
     * @return 结果
     */
    public int deleteBasSheepById(Long id);

    /**
     * 批量删除羊只基本信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBasSheepByIds(Long[] ids);


    /**
     * 根据管理耳号查询
     */
    BasSheep selectBasSheepByManageTags(String manageTags);


    /**
     * 模糊查询母羊耳号列表
     *
     * @param sheep 查询关键字
     * @return 耳号列表
     */
    List<String> searchEarNumbers(BasSheep sheep);


    List<BasSheep> selectBasSheepBySheepfold(String id);

//    根据牧场ID获取羊只列表
    List<BasSheep> getSheepByRanchId(Long ranchId);

    List<BasSheep> selectBasSheepListByIds(List<Long> ids);

    //用于校验改耳号部分新管理/电子耳号
    int existsByManageTag(@Param("tag") String tag);
    int existsByElectronicTag(@Param("tag") String tag);


    List<BasSheep> selectBasSheepByManageTagsList(@Param("manageTagsList") List<String> manageTagsList, @Param("sheep")BasSheep  sheep);
}
