package com.xzzn.ems.mapper;

import java.util.List;

import com.xzzn.ems.domain.EmsEnergyPriceConfig;
import com.xzzn.ems.domain.vo.EnergyPriceConfigVo;
import com.xzzn.ems.domain.vo.EnergyPriceTimeRange;
import org.apache.ibatis.annotations.Param;

/**
 * 电价配置Mapper接口
 *
 * @author xzzn
 * @date 2025-09-28
 */
public interface EmsEnergyPriceConfigMapper
{
    /**
     * 查询电价配置
     *
     * @param id 电价配置主键
     * @return 电价配置
     */
    public EmsEnergyPriceConfig selectEmsEnergyPriceConfigById(Long id);

    /**
     * 查询当年电价配置列表
     *
     * @return 电价配置集合
     */
    public List<EmsEnergyPriceConfig> selectEmsEnergyPriceConfigList(int currentYear);

    /**
     * 新增电价配置
     *
     * @param emsEnergyPriceConfig 电价配置
     * @return 结果
     */
    public int insertEmsEnergyPriceConfig(EmsEnergyPriceConfig emsEnergyPriceConfig);

    /**
     * 修改电价配置
     *
     * @param emsEnergyPriceConfig 电价配置
     * @return 结果
     */
    public int updateEmsEnergyPriceConfig(EmsEnergyPriceConfig emsEnergyPriceConfig);

    /**
     * 删除电价配置
     *
     * @param id 电价配置主键
     * @return 结果
     */
    public int deleteEmsEnergyPriceConfigById(Long id);

    /**
     * 批量删除电价配置
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEmsEnergyPriceConfigByIds(Long[] ids);

    // 查询当年电价配置列表
    public List<EmsEnergyPriceConfig> getCurrentYearConfigList(@Param("siteId")String siteId,@Param("currentYear")int currentYear);
    // 站点指定年月获取电价配置
    public EmsEnergyPriceConfig getConfigListByYearAndMonth(@Param("siteId")String siteId,
                                                            @Param("currentYear") String currentYear,
                                                            @Param("month")String month);
    // 插入或更新
    public void insertOrUpdateEmsEnergyPriceConfig(EmsEnergyPriceConfig priceConfig);
    // 获取指定年月的电价时间配置
    public List<EnergyPriceTimeRange> getTimeRangeByDate(@Param("siteId")String siteId,
                                                         @Param("currentYear")int currentYear,
                                                         @Param("currentMonth")int currentMonth);
    // 获取所有有效站点的电价配置
    public List<EmsEnergyPriceConfig> getAllSitePriceConfig( @Param("currentYear")int currentYear,
                                                             @Param("currentMonth")int currentMonth);
    // 查询指定时间范围的电价配置列表
    public List<EnergyPriceConfigVo> getConfigListByTimeFrame(@Param("siteId")String siteId,
                                                              @Param("startDate")String startDate,
                                                              @Param("endDate")String endDate);
}
