package com.zhyc.module.produce.breed.service;

import java.util.List;
import java.util.Map;
import com.zhyc.module.produce.breed.domain.ScBreedRecord;

/**
 * 配种记录Service接口
 *
 * @author ruoyi
 * @date 2025-07-23
 */
public interface IScBreedRecordService
{
    /**
     * 查询配种记录
     *
     * @param id 配种记录主键
     * @return 配种记录
     */
    public ScBreedRecord selectScBreedRecordById(Long id);

    /**
     * 查询配种记录列表
     *
     * @param scBreedRecord 配种记录
     * @return 配种记录集合
     */
    public List<ScBreedRecord> selectScBreedRecordList(ScBreedRecord scBreedRecord);

    /**
     * 新增配种记录
     *
     * @param scBreedRecord 配种记录
     * @return 结果
     */
    public int insertScBreedRecord(ScBreedRecord scBreedRecord);

    /**
     * 修改配种记录
     *
     * @param scBreedRecord 配种记录
     * @return 结果
     */
    public int updateScBreedRecord(ScBreedRecord scBreedRecord);

    /**
     * 批量删除配种记录
     *
     * @param ids 需要删除的配种记录主键集合
     * @return 结果
     */
    public int deleteScBreedRecordByIds(Long[] ids);

    /**
     * 删除配种记录信息
     *
     * @param id 配种记录主键
     * @return 结果
     */
    public int deleteScBreedRecordById(Long id);

    /**
     * 根据耳号查询羊只ID
     *
     * @param manageTags 管理耳号
     * @return 羊只ID
     */
    public Long getSheepIdByTags(String manageTags);

    /**
     * 根据公羊耳号查询羊只ID
     *
     * @param manageTags 管理耳号
     * @return 羊只ID
     */
    public Long getRamIdByTags(String manageTags);

    /**
     * 根据耳号查询羊只详细信息
     *
     * @param manageTags 管理耳号
     * @return 羊只信息
     */
    public Map<String, Object> getSheepInfoByTags(String manageTags);

    /**
     * 根据母羊耳号获取配种计划信息
     *
     * @param manageTags 母羊管理耳号
     * @return 配种计划信息
     */
    public Map<String, Object> getBreedPlanByEweTags(String manageTags);

    /**
     * 根据母羊耳号获取最新的配种计划信息（优先从配种计划生成表获取）
     *
     * @param manageTags 母羊管理耳号
     * @return 配种计划信息
     */
    public Map<String, Object> getLatestBreedPlanByEweTags(String manageTags);

    /**
     * 同步孕检结果到配种记录
     *
     * @param pregnancyRecordId 孕检记录ID
     * @param sheepId 羊只ID
     * @param pregnancyCheckDate 孕检日期
     * @return 结果
     */
    public int syncPregnancyResult(Long pregnancyRecordId, Long sheepId, String pregnancyCheckDate);

    /**
     * 根据羊只ID和时间范围查询配种记录
     *
     * @param sheepId 羊只ID
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @return 配种记录集合
     */
    public List<ScBreedRecord> getBreedRecordsByTimeRange(Long sheepId, String startDate, String endDate);

    ScBreedRecord getAutomaticBreedMatch(String manageTags);
}