package com.njcn.mapper.data;

import java.util.Date;
import java.util.List;

import com.njcn.pojo.advanced.HarmonicRateInfo;
import com.njcn.pojo.commons.SimpleValue;
import com.njcn.pojo.commons.SteadyData;
import com.njcn.pojo.commons.runmanage.SteadyTable;
import org.apache.ibatis.annotations.Param;

import com.njcn.pojo.commons.device.ValueOfTargetanaly;
import com.njcn.pojo.data.LimitRate;

import tk.mybatis.mapper.common.Mapper;

/**
 * @author hongawen
 * @date 2018/4/13 12:15
 */
public interface LimitRateMapper extends Mapper<LimitRate> {

    ValueOfTargetanaly getsteadyoutoflimit(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("lineIndex") Long lineIndex);

    //根据监测点索引获取时间范围内的频率偏差
    SimpleValue getFrequencyDevitaion(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    //根据监测点索引、时间获取电压不平衡数据合格率
    SimpleValue getUBalane(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    //根据监测点索引、时间获取电压畸变率合格率
    SimpleValue getUAberrance(@Param("list") List<Integer> lineIndexTemp, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    //根据监测点索引、时间获取电压偏差合格率
    SimpleValue getVoltageDeviation(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    //根据监测点索引、时间获取闪变合格率
    SimpleValue getFlicker(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    // 根据监测点索引、时间获取奇次电压合格率
    SimpleValue getOddVoltage(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    // 根据监测点索引、时间获取偶次电压合格率
    SimpleValue getEventVoltage(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    // 根据监测点索引、时间获取奇次电流合格率
    SimpleValue getOddElectric(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    // 根据监测点索引、时间获取偶次电流合格率
    SimpleValue getEventElectric(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    //根据时间获取所有监测点下的稳态各项指标的数据
    SteadyData getsteadData(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    //获取时间范围内各监测点的电压不平衡/频率偏差/电压畸变率/电压偏差/闪变/奇次电压/偶次电压/奇次电流/偶次电流
    List<SteadyTable> getSteadyDataByT(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    //获取时间范围内各监测点的电压不平衡/频率偏差/电压畸变率/电压偏差/闪变/奇次电压/偶次电压/奇次电流/偶次电流
    SteadyData getsteadDataByT(@Param("list") List<Integer> tempIndexs, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    List<HarmonicRateInfo> getHarmonicRate(@Param("start") Date startTime, @Param("end") Date endTime, @Param("list") List<Integer> list);
    
    List<LimitRate> queryData(@Param("lineIndex") Integer lineIndex, @Param("startTime") String startTime, @Param("endTime") String endTime);
    
    Long sumlimitRate(@Param("lineIndex") Integer lineIndex, @Param("timeId") Date timeId);
    
    LimitRate selectLimitRate(@Param("lineIndex") Integer lineIndex, @Param("timeId") Date timeId);
}
