package com.njcn.energy.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.njcn.energy.pojo.dto.NetAndDevByLineDTO;
import com.njcn.energy.pojo.param.DataHisParam;
import com.njcn.energy.pojo.param.DevCfgParam;
import com.njcn.energy.pojo.param.EnergyBaseParam;
import com.njcn.energy.pojo.param.GroupArrParam;
import com.njcn.energy.pojo.po.DataSet;
import com.njcn.energy.pojo.po.LogicDev;
import com.njcn.energy.pojo.vo.*;

import java.util.List;

/**
 * pqs
 *
 * @author cdf
 * @date 2022/2/24
 */
public interface ILogicDeviceLineService {

    /**
     * 获取网关设备树
     * @author cdf
     * @date 2022/3/1
     */
    List<EnergyDeviceTreeVO> getEnergyTree();

    /**
     * 获取监测点树
     * @return 结果
     */
    EleLoadSetTreeVO getEnergyLoadTree(String id);

    /**
     * 获取空调监测点树
     * @author cdf
     * @date 2022/4/21
     */
    List<EnergyDeviceTreeVO> getAirLineTree();

    /**
     * 获取设备详情
     * @author cdf
     * @date 2022/3/1
     */
    LogicDeviceLineInfoVO getEnergyDevInfoById(String id);


    /**
     * 根据数据集id获取设备模板详情详情
     * @author cdf
     * @date 2022/3/1
     */
    IPage<EnergyTemplateVO> getEnergyTemplateById(String id, Integer pageNum, Integer pageSize);


    /**
     * 获取分组数据详情
     * @author cdf
     * @date 2022/3/1
     */
    IPage<DataGroupTemplateVO>  getRealGroupTemplateById(String id,Integer pageNum, Integer pageSize);






    /**
     * 获取历史设备数据详情
     * @author cdf
     * @date 2022/3/1
     */
    IPage<DataGroupTemplateVO> getHistoryTemplateById(EnergyBaseParam energyBaseParam);

    /**
     * 获取准实时数据详情
     * @author cdf
     * @date 2022/3/1
     */
    IPage<DataGroupTemplateVO> getStatisTemplateById(String id, Integer pageNum, Integer pageSize,String lineId);



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

    /**
     * 获取当前数据集的分组情况
     * @author cdf
     * @date 2022/3/16
     */
    List<DataGroupTemplateVO> getGroupDetailList(String setId);



    boolean addGroupArr(GroupArrParam groupArrParam);


    /**
     * 获取解析模板
     * @author cdf
     * @date 2022/3/18
     */
    List<String> getParseTemplate(String setId);



    /**
     * 功能描述: 新增逻辑设备
     *
     * @param devCfgParam
     * @return com.njcn.energy.pojo.po.LogicDev
     * @author xy
     * @date 2022/3/8 14:27
     */
    LogicDev add(DevCfgParam devCfgParam);

    /**
     * 功能描述: 根据did查询逻辑设备
     *
     * @param did
     * @return
     * @author xy
     * @date 2022/3/17 14:45
     */
    LogicDev getLogicDev(String did);

    /**
     * 功能描述: 根据pid批量查询逻辑设备
     *
     * @param list
     * @return
     * @author xy
     * @date 2022/3/17 14:45
     */
    List<LogicDev> getLogicDevByList(List<String> list);

    /**
     * 功能描述: 根据did批量查询逻辑设备
     *
     * @param list
     * @return
     * @author xy
     * @date 2022/3/17 14:45
     */
    List<LogicDev> getLogicDev(List<String> list);

    /**
     * 功能描述: 根据网关id查询逻辑设备
     *
     * @param list
     * @return
     * @author xy
     * @date 2022/3/17 14:45
     */
    List<LogicDev> getLogicDevByPid(List<String> list);

    /**
     * 功能描述: 根据版本id删除逻辑设备
     *
     * @param id
     * @return
     * @author xy
     * @date 2022/3/17 14:45
     */
    boolean deleteByVersionId(String id);

    /**
     * 功能描述: 根据版本id查询逻辑设备
     *
     * @param id
     * @return
     * @author xy
     * @date 2022/3/17 14:45
     */
    List<LogicDev> getLogicDevByVersionId(String id);

    /**
     * 功能描述: 更新逻辑设备信息
     *
     * @param logicDev
     * @author xy
     * @date 2022/3/23 19:32
     */
    void updateLogicDeviceLine(LogicDev logicDev);

    /**
     * 功能描述: 更新装置模板id
     * @param oldMouldId 老模板id
     * @param newMouldId 新模板id
     * @author xy
     * @date 2022/4/18 15:34
     * @return
     */
    void updateLogicDevice(String oldMouldId, String newMouldId);


    List<DataHisVO> getHisData(DataHisParam dataHisParam);


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


}
