package com.njcn.harmonic.service.hebeinorth;

import com.njcn.harmonic.pojo.param.hebeinorth.AssessParam;
import com.njcn.harmonic.pojo.vo.hebeinorth.AssessDetailVo;
import com.njcn.harmonic.pojo.vo.hebeinorth.AssessVo;
import com.njcn.harmonic.pojo.vo.hebeinorth.EvaluationLevelVo;
import com.njcn.harmonic.pojo.vo.hebeinorth.EvaluationVo;

import java.util.List;

/**
 * 类的介绍：
 *
 * @author xuyang
 * @version 1.0.0
 * @createTime 2024/4/24 17:20
 */

public interface IGridService {

    /**
     * 综合评估概览界面
     * 业务逻辑：1.根据当前传入的部门，省级部门获取市级综合指标；市级部门获取各指标指标评估
     *         2.注意监测点类型，区分所有监测点和上报国网监测点
     *         3.针对超高压和风光储监测点应划分到具体地市中计算，而不是跟着部门来统计(领导要求)
     * 涉及指标：电压偏差、频率偏差、谐波含量(只有电压总谐波畸变率)、电压闪变、三相电压不平衡度
     * @author xuyang
     * @param param
     * @return
     */
    AssessVo.AssessOverview getAssessOverview(AssessParam param);

    /**
     * 综合评估详细界面
     * 业务逻辑：根据当前传入的部门，获取子部门所包含的监测点，根据监测点查询综合评估(r_stat_asses_d、r_stat_comasses_d)、指标合格率（r_stat_limit_rate_d）
     * 涉及指标：电压偏差、频率偏差、谐波含量(只有电压总谐波畸变率)、电压闪变、三相电压不平衡度
     * @author xuyang
     * @param param
     * @return
     */
    List<AssessDetailVo> getData(AssessParam param);

    /**
     * 综合评估趋势数据（当前时间统计前五个月时间、或者前五年）
     */
    List<AssessVo.AssessTrendVo> getAssessTrend(AssessParam param);

    /**
     * 监测点综合评估和各指标评估得分
     */
    AssessDetailVo getLineAssess(String lineId, String startTime, String endTime);

    /**
     * 查询稳态电能质量水平评价
     * @param param
     * @return
     */
    EvaluationVo getEvaluationOverview(AssessParam param);

    /**
     * 按电压等级展示各稳态指标的平均值、标准差
     * @param param
     * @return
     */
    List<EvaluationLevelVo> getEvaluationData(AssessParam param);

    /**
     * 各稳态指标的环比
     * @param param
     * @return
     */
    List<EvaluationLevelVo.EvaluationRatio> evaluationRatio(AssessParam param);

    /**
     * 稳态指标超标占比详情
     * @param param
     * @return
     */
    List<EvaluationLevelVo.EvaluationDetail> getEvaluationDetail(AssessParam param);

    /**
     * 稳态指标超标合格率详情
     * @param param
     * @return
     */
    List<EvaluationLevelVo.QualifiedDetail> getQualifiedDetail(AssessParam param);

    /**
     * 监测点稳态指标超标合格率详情
     * @return
     */
    EvaluationLevelVo.QualifiedDetail getLineQualifiedDetail(String lineId, String startTime, String endTime);

}
