package com.njcn.mapper.configuration;

import com.njcn.pojo.commons.device.DeviceDetail;
import com.njcn.pojo.commons.device.DeviceInfo;
import com.njcn.pojo.commons.device.DeviceOnline;
import com.njcn.pojo.commons.device.DeviceValue;
import com.njcn.pojo.configuration.Device;
import com.njcn.pojo.excelBody.DeviceExcelBody;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

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

public interface DeviceMapper extends Mapper<Device>{


	//获取指定终端的终端状态
	List<Device> getDevicesByDevIndexs(@Param("list") List<Integer> devIndex);

	//根据供电公司获取终端索引
	List<Integer> getDeviceIndexs(@Param("list") List<Integer> gdIndexsTemp,@Param("devModel") Integer devModel,@Param("type")List<Integer> dataType);

	//根据供电公司获取终端索引
	List<Integer> getDeviceIndex(@Param("list") List<Integer> gdIndexsTemp);


	//根据终端厂家获取合理的终端索引
	List<Integer> getDeviceIndexsByCompanyName(@Param("comIndex") String dicIndex, @Param("devModel") Integer devModel, @Param("type") List<Integer> dataType,@Param("list") List<Integer>devIndexs);

	int updateDevice(@Param("name")Integer name,@Param("devflag")Integer devflag);

	Long selectMaxIndex();

	List<Device> testName(@Param("name")String name,@Param("subIndex")Long subIndex,@Param("devIndex")Long devIndex);

	List<Device> testIP(@Param("ip")String ip,@Param("portid")Long portid,@Param("gdIndex")Long gdIndex,@Param("devIndex")Long devIndex);

	Device devNameType(@Param("devName")String devName);

	Device devIndexType(@Param("devIndex")Long devIndex);

	Device devIndexsType(@Param("lineIndex")Long lineIndex);

	//获取该表所有数据，提供excel导出
    List<DeviceExcelBody> selectAllExcelData();

    //根据事件索引获取装置IP
    String getIPByEventIndex(String index);

    List<String> getPushNodes();

    List<Integer> getRunDeviceIndex(@Param("list") List<Integer> deviceIndexs);

	//根据监测点id查询装置ip
	String getIpByLineIndex(int index);

	int getStates(@Param("devIndex") int devIndex,@Param("timeId") String timeId);

	List<Integer> getDeviceIndexByLineIndex(@Param("list")List<Integer> lineIndex);

	int getState(@Param("list") List<Integer> devIndex,@Param("timeId") String timeId);

	//查询当前监测点的接线方式
	int getConnect(@Param("lineIndex") Long lineIndex);

	//将终端的详细信息组合
	String deviceDescribe(@Param("devIndex") Integer devIndex);

	List<Integer> getDevIndex(@Param("list") List<Integer> dataType);

	DeviceDetail getDevAndParent(@Param("devIndex")String devIndex);

	String findMaxDeviceName(@Param("gdIndex")Long gdIndex);
}
