package com.gyee.frame.util.mongodb;


import com.gyee.frame.model.auto.WindPowerStationTestingPoint2;
import com.gyee.frame.model.auto.WindTurbineTestingPointAi2;
import com.gyee.frame.model.custom.DNAStatVal;
import com.gyee.frame.model.custom.PointData;

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



public interface IMongodbUtil {
    // 通过风场测点获得测点实时数据
    public PointData getRealData(WindPowerStationTestingPoint2 point) throws Exception;

    // 通过风场测点获得测点实时数据
    public List<PointData> getHistoryDatasSnap(WindPowerStationTestingPoint2 point, Long beginDate, Long endDate, Long count, Long pried) throws Exception;

    // 通过风场测点获得测点实时数据
    public List<PointData> getHistoryDatasRaw(WindPowerStationTestingPoint2 point, Long beginDate, Long endDate) throws Exception;

    // 通过风机测点获得测点实时数据
    public PointData getRealData(WindTurbineTestingPointAi2 point) throws Exception;

    // 通过风机测点获得测点实时数据
    public List<PointData> getHistoryDatasSnap(WindTurbineTestingPointAi2 point, Long beginDate, Long endDate, Long count, Long pried) throws Exception;

    // 通过风机测点获得测点实时数据
    public List<PointData> getHistoryDatasRaw(WindTurbineTestingPointAi2 point, Long beginDate, Long endDate) throws Exception;

    // 通过全局点名获得测点实时数据
    public PointData getRealData(String pointid) throws Exception;
 // 通过全局点名获得测点实时数据 读取多个点
    public List<PointData> getRealData(String... pointids) throws Exception;
    
    public List<PointData> getRealData(List<String> pointids) throws Exception;
    
    public Map<String,Double> getRealDataMap(String... pointids) throws Exception;
    
    public Map<String,Double> getRealDataMap(List<String> pointids) throws Exception;

    // 通过全局点名获得历史数据快照
    public List<PointData> getHistoryDatasSnap(String pointid, Long beginDate, Long endDate, Long count, Long pried) throws Exception;

    // 通过全局点名获得历史数据
    public List<PointData> getHistoryDatasRaw(String pointid, Long beginDate, Long endDate) throws Exception;

    /*
     * //通过全局点名获得测点实时数据 public PointData getRealDataByTime(String pointid)
     * throws Exception; //通过风场测点获得测点实时数据 public PointData
     * getRealDataByTime(WindPowerStationTestingPoint2 point) throws Exception;
     */
    // 通过风机测点获得特殊数据
    public List<PointData> getHistStat(WindTurbineTestingPointAi2 point, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;

    // 通过场站测点获得特殊数据
    public List<PointData> getHistStat(WindPowerStationTestingPoint2 point, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;

    // 通过全局点名获得特殊数据
    public List<PointData> getHistStat(String pointid, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;

    // 通过场站测点获得特殊数据
    public DNAStatVal[] getHistStat(String point, Long beginDate, Long endDate, Integer pried) throws Exception;
    //更新单点实时数据
    public void updatePoint(PointData point) throws Exception;
}
