package com.njcn.csdevice.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csdevice.pojo.param.EnergyBaseParam;
import com.njcn.csdevice.pojo.po.CsGroup;
import com.njcn.csdevice.pojo.vo.CsGroupVO;
import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO;
import com.njcn.csharmonic.param.CommonStatisticalQueryParam;
import com.njcn.csharmonic.param.FittingDataQueryParam;
import com.njcn.csharmonic.param.SensitiveUserTrendDataQueryParam;
import com.njcn.csharmonic.param.TrendDataQueryParam;
import com.njcn.csharmonic.pojo.vo.ThdDataTdVO;
import com.njcn.csharmonic.pojo.vo.ThdDataVO;
import com.njcn.system.pojo.po.EleEpdPqd;

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

/**
 * <p>
 * 数据分组表 服务类
 * </p>
 *
 * @author xuyang
 * @since 2023-06-16
 */
public interface ICsGroupService extends IService<CsGroup> {

    /**
     * 根据数据集id查询分组详情
     * @param dataSet
     */
    List<CsGroupVO> getGroupData(String dataSet);

    /**
     * 获取装置分组后的实时数据
     * @return
     */
    IPage<DataGroupTemplateVO> getDeviceRtData(String id, Integer pageNum, Integer pageSize, String lineId, String searchValue, String dataLevel);

    /**
     * 获取装置时间范围内的历史数据
     * @return
     */
    IPage<DataGroupTemplateVO> getDeviceHistoryData(EnergyBaseParam energyBaseParam);

    /**
     * 根据类型查询趋势数据、暂态数据、实时数据
     * @return
     */
    Object deviceDataByType(CommonStatisticalQueryParam commonStatisticalQueryParam);

    /**
     * 查询实时数据中实时趋势
     * @return
     */
    List<ThdDataTdVO> getDeviceTrendData(String devId, String lineId,String groupId);

    /**
     * 查询实时数据中实时趋势中指标分组
     * @return
     */
    List<ThdDataTdVO> getDeviceTrendDataGroup();

    /**
     * 查询实时数据中实时趋势
     * @return
     */
    List<ThdDataTdVO.ThdDataSpectrumVOData> getDeviceHarmonicSpectrumData(CommonStatisticalQueryParam commonStatisticalQueryParam);

    /**
     * 查询稳态指标并按照指标名称分组(A、B、...)
     * @return
     */
    List<List<EleEpdPqd>> getGroupPortableStatistical();

    /**
     * 删除组信息
     * @param groupId 组id
     */
    void deleteGroup(String groupId);


    /**
     * 查询趋势数据
     * @param trendDataQueryParam
     * @return
     */
    List<ThdDataVO> trendData(TrendDataQueryParam trendDataQueryParam);
    /**
     * 查询指标拟合图数据
     * @param fittingDataQueryParam
     * @return
     */
    List<ThdDataVO> fittingData(FittingDataQueryParam fittingDataQueryParam);

    /**
     * 查询敏感用户趋势数据
     * @param sensitiveUserTrendDataQueryParam
     * @return
     */
    Map<String,List<ThdDataVO>> sensitiveUserTrendData(SensitiveUserTrendDataQueryParam sensitiveUserTrendDataQueryParam);

}
