package com.ruoyi.ems.service;

import com.ruoyi.ems.domain.OpEnergyStrategy;

import java.util.List;
import java.util.Map;

/**
 * 能源策略Service接口
 *
 * @author ruoyi
 * @date 2024-08-08
 */
public interface IOpEnergyStrategyService {
    /**
     * 查询策略列表
     * @param strategy 策略
     * @return 策略列表
     */
    List<OpEnergyStrategy> selectStrategyList(OpEnergyStrategy strategy);

    /**
     * 查询策略详情（根据ID）
     * @param id 策略ID
     * @return 策略详情
     */
    OpEnergyStrategy selectStrategyById(Long id);

    /**
     * 查询策略详情（根据代码）
     * @param strategyCode 策略代码
     * @return 策略详情
     */
    OpEnergyStrategy selectStrategyByCode(String strategyCode);

    /**
     * 新增策略
     * @param strategy 策略
     * @return 结果
     */
    int insertStrategy(OpEnergyStrategy strategy);

    /**
     * 修改策略
     * @param strategy 策略
     * @return 结果
     */
    int updateStrategy(OpEnergyStrategy strategy);

    /**
     * 删除策略
     * @param id 策略ID
     * @return 结果
     */
    int deleteStrategyById(Long id);

    /**
     * 批量删除策略
     * @param ids 策略ID数组
     * @return 结果
     */
    int deleteStrategyByIds(Long[] ids);

    /**
     * 查询定时调度策略
     * @return 策略列表
     */
    List<OpEnergyStrategy> selectScheduledStrategies();

    /**
     * 获取场景类型统计（带区块过滤）
     * @param areaCode 区块代码
     * @return 场景类型统计Map
     */
    Map<String, Long> getSceneTypeCount(String areaCode);
}
