package com.example.cattletends.service;

import com.example.cattletends.dto.CattleDataDTO;
import com.example.cattletends.dto.ImportResult;
import com.example.cattletends.entity.CattleData;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * 牛只数据服务接口
 */
public interface CattleDataService {

    /**
     * 获取所有牛只数据
     *
     * @param date 日期（可选，如果为null则查询今天的数据）
     * @return 牛只数据列表
     */
    List<CattleData> getAllCattleData(LocalDate date);

    /**
     * 根据省份获取牛只数据
     *
     * @param province 省份
     * @param date 日期（可选，如果为null则查询今天的数据）
     * @return 牛只数据列表
     */
    List<CattleData> getCattleDataByProvince(String province, LocalDate date);

    /**
     * 根据品种获取牛只数据
     *
     * @param type 品种
     * @param date 日期（可选，如果为null则查询今天的数据）
     * @return 牛只数据列表
     */
    List<CattleData> getCattleDataByType(String type, LocalDate date);

    /**
     * 根据ID获取牛只数据
     *
     * @param id 主键ID
     * @return 牛只数据
     */
    CattleData getCattleDataById(Integer id);

    /**
     * 创建牛只数据
     *
     * @param dto 牛只数据传输对象
     * @return 创建的牛只数据
     */
    CattleData createCattleData(CattleDataDTO dto);

    /**
     * 更新牛只数据
     *
     * @param id  主键ID
     * @param dto 牛只数据传输对象
     * @return 更新后的牛只数据
     */
    CattleData updateCattleData(Integer id, CattleDataDTO dto);

    /**
     * 删除牛只数据
     *
     * @param id 主键ID
     */
    void deleteCattleData(Integer id);

    /**
     * 批量导入牛只数据
     *
     * @param dataList 牛只数据列表
     * @return 导入结果（包含数据列表、新增数量、更新数量）
     */
    ImportResult batchImportCattleData(List<CattleDataDTO> dataList);
}

