package com.njcn.harmonic.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.biz.pojo.dto.PollutionLineDTO;
import com.njcn.device.pq.pojo.dto.PollutionGridDiagramDTO;
import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO;
import com.njcn.device.pq.pojo.param.GridDiagramParam;
import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.vo.GridDiagramVO;
import com.njcn.harmonic.pojo.excel.pollution.AreaPollution;
import com.njcn.harmonic.pojo.excel.pollution.LinePollution;
import com.njcn.harmonic.pojo.excel.pollution.SubstationPollution;
import com.njcn.harmonic.pojo.excel.pollution.UserLinePollution;
import com.njcn.harmonic.pojo.param.HarmonicPublicParam;
import com.njcn.harmonic.pojo.param.PollutionSubstationQuryParam;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam;
import com.njcn.harmonic.pojo.po.RStatPollutionSubstationM;
import com.njcn.harmonic.pojo.vo.PollutionSubstationVO;
import com.njcn.harmonic.pojo.vo.PollutionVO;
import com.njcn.harmonic.pojo.vo.SubstationVo;

import java.util.List;

/**
 * Description:
 * 接口文档访问地址：http://serverIP:port/swagger-ui.html
 * Date: 2022/10/13  8:56【需求编号】
 *
 * @author clam
 * @version V1.0.0
 */
public interface PollutionSubstationService extends IService<RStatPollutionSubstationM> {


    /**
     * @Description: getPollutionSubstationData
     * @Param: [pollutionSubstationQuryParam]
     * @return: java.util.List<com.njcn.harmonic.pojo.vo.PollutionSubstationVO>
     * @Author: clam
     * @Date: 2022/10/13
     */
    List<PollutionSubstationVO> getPollutionSubstationData(PollutionSubstationQuryParam pollutionSubstationQuryParam);


    /**
     * @Description: getDeptSubstationRelations
     * @Param: [param]
     * @return: java.util.List<com.njcn.harmonic.pojo.vo.PollutionVO>
     * @Author: clam
     * @Date: 2022/11/3
     */
    List<PollutionVO> getDeptSubstationRelations(HarmonicPublicParam param);

    /**
     * @Description: getSubstationInfoById
     * @Param: [param]
     * @return: java.util.List<com.njcn.device.pq.pojo.dto.PollutionSubstationDTO>
     * @Author: clam
     * @Date: 2022/11/3
     */
    List<PollutionSubstationDTO> getSubstationInfoById(HarmonicPublicParam param);

    /**
     * @Description: getLineInfoById
     * @Param: [param]
     * @return: java.util.List<com.njcn.device.biz.pojo.dto.PollutionLineDTO>
     * @Author: clam
     * @Date: 2022/11/3
     */
    List<PollutionLineDTO> getLineInfoById(HarmonicPublicParam param);


    List<PollutionLineDTO> getLineRankTop10(HarmonicPublicParam param);

    /**
     * @param param
     * @Description: 污染告警信息
     * @return: java.util.List<java.lang.String>
     * @Author: wr
     * @Date: 2024/4/22 11:00
     */
    @Deprecated
    GridDiagramVO getPollutionAlarmData(StatSubstationBizBaseParam param);

    GridDiagramVO getNewPollutionAlarmData(StatSubstationBizBaseParam param);

    /**
     * @param param
     * @Description: 污染告警信息
     * @return: java.util.List<java.lang.String>
     * @Author: wr
     * @Date: 2024/4/22 11:00
     */
    Page<PollutionGridDiagramDTO> getPollutionAlarmPageData(StatSubstationBizBaseParam param);


    List<List<String>> getPollutionAlarmList(GridDiagramParam param);

    List<SubstationVo> getSubstationInfo(String deptIndex, String searchValue, String startTime, String endTime);


    /**
     * 导出监测点谐波污染值
     *
     * @param param
     */
    List<LinePollution> downPollutionLineCalc(StatSubstationBizBaseParam param);

    /**
     * 导出用户谐波电压污染值
     */
    void downPollutionUserCalc(StatSubstationBizBaseParam param);


    /**
     * 变电站谐波电压污染值
     *
     * @param param
     */
    List<SubstationPollution> downPollutionSubCalc(StatSubstationBizBaseParam param);


    List<UserLinePollution> getSumList(OnlineRateParam.Info param);

    /**
     * @param param
     * @Description: 区域污染值统计
     * @return: java.util.List<com.njcn.harmonic.pojo.excel.pollution.AreaPollution>
     * @Author: wr
     * @Date: 2025/12/10 17:53
     */
    List<AreaPollution> getAreaPollution(StatSubstationBizBaseParam param);

    List<SubstationPollution> downPollutionSensitiveUser(StatSubstationBizBaseParam param);
}
