package com.example.cattletends.service;

import com.example.cattletends.entity.ProvinceDailyPrice;

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

/**
 * 省份每日均价服务接口
 */
public interface ProvinceDailyPriceService {
    
    /**
     * 保存或更新省份每日均价（如果当天该省份已有数据，则更新价格）
     * @param province 省份名称
     * @param price 省份均价
     * @param priceDate 价格日期（如果为null，则使用当前日期）
     * @return 保存或更新的实体，isNew=true表示新建，isNew=false表示更新
     */
    ProvinceDailyPrice saveOrUpdate(String province, java.math.BigDecimal price, LocalDate priceDate);
    
    /**
     * 根据省份查询所有每日均价记录，按日期降序排序
     * @param province 省份名称
     * @return 省份每日均价列表
     */
    List<ProvinceDailyPrice> getByProvince(String province);
    
    /**
     * 获取所有省份每日均价记录，按日期降序排序
     * @return 所有省份每日均价列表
     */
    List<ProvinceDailyPrice> getAll();
    
    /**
     * 根据省份和日期范围查询
     * @param province 省份名称
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 省份每日均价列表
     */
    List<ProvinceDailyPrice> getByProvinceAndDateRange(String province, LocalDate startDate, LocalDate endDate);
    
    /**
     * 根据日期查询所有省份的每日均价记录
     * @param priceDate 价格日期
     * @return 省份每日均价列表
     */
    List<ProvinceDailyPrice> getByPriceDate(LocalDate priceDate);
    
    /**
     * 根据省份和日期查询
     * @param province 省份名称
     * @param priceDate 价格日期
     * @return 省份每日均价（如果存在）
     */
    java.util.Optional<ProvinceDailyPrice> getByProvinceAndPriceDate(String province, LocalDate priceDate);
}

