package com.njcn.energy.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.mapper.Mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.energy.pojo.dto.NetAndDevByLineDTO;
import com.njcn.energy.pojo.po.DataArray;
import com.njcn.energy.pojo.po.DataSet;
import com.njcn.energy.pojo.po.LogicDev;
import com.njcn.energy.pojo.po.NetDev;
import com.njcn.energy.pojo.vo.EnergyDeviceTreeVO;
import com.njcn.energy.pojo.vo.EnergyTemplateVO;
import com.njcn.energy.pojo.vo.LogicDeviceLineInfoVO;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * pqs
 *
 * @author cdf
 * @date 2022/3/1
 */
public interface LogicDeviceLineMapper extends BaseMapper<LogicDev> {


    /**
     * 获取逻辑设备树
     *
     * @author cdf
     * @date 2022/3/1
     */
    List<EnergyDeviceTreeVO> getLogicDevList();


    /**
     * 获取逻辑设备树
     *
     * @author cdf
     * @date 2022/3/1
     */
    List<EnergyDeviceTreeVO> getEleLineList();



    /**
     * 获取设备详情
     *
     * @author cdf
     * @date 2022/3/2
     */
    LogicDeviceLineInfoVO getDevInfo(@Param("id") String id);

    /**
     * 逻辑设备树
     * @return 结果
     */
    List<EnergyDeviceTreeVO> getEleNoBindsLineList();

    /**
     * 逻辑设备树
     * @param loadId 参数
     * @return 结果
     */
    List<EnergyDeviceTreeVO> getEleBindsLineList(@Param("loadId") String loadId);


    /**
     * 获取历史数据详情模板
     *
     * @author cdf
     * @date 2022/3/2
     */
    Page<EnergyTemplateVO> getHistoryTemplateById(IPage<EnergyTemplateVO> page, @Param("id") String id, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);


    /**
     * 获取tab模板
     *
     * @param id 设备id
     * @author cdf
     * @date 2022/3/2
     */
    List<DataSet> getTabTemplateById(@Param("id") String id);


    /**
     * 获取数据集下的分组详情
     *
     * @param id 数据集id
     * @author cdf
     * @date 2022/3/14
     */
    List<DataArray> getGroupDataBySetId(@Param("id") String id);

    List<EnergyTemplateVO> getAllDataBySet(@Param("id") String id);


    /**
     * 获取数据详情
     *
     * @author cdf
     * @date 2022/3/15
     */
    List<EnergyTemplateVO> getDataList(@Param("className") String className, @Param("ids") List<String> ids);


    /**
     * 获取解析模板用于实时数据解析
     *
     * @author cdf
     * @date 2022/3/18
     */
    List<String> getParseTemplate(@Param("setId") String setId);


    /**
     * 通过监测点获取设备网关
     * @author cdf
     * @date 2022/4/22
     */
    List<NetAndDevByLineDTO> getNetAndDevByLineIds(@Param("lineIds") List<String> lineIds);

}
