package com.njcn.product.system.elequality.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.product.system.elequality.pojo.dto.EpdDTO;
import com.njcn.product.system.elequality.pojo.param.EleEpdPqdParam;
import com.njcn.product.system.elequality.pojo.po.EleEpdPqd;
import com.njcn.product.system.elequality.pojo.vo.EleEpdPqdListVO;
import com.njcn.product.system.elequality.pojo.vo.EleEpdPqdVO;
import com.njcn.product.system.elequality.pojo.vo.EleEpdTreeVO;


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

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author xuyang
 * @since 2023-05-24
 */
public interface IEleEpdPqdService extends IService<EleEpdPqd> {

    /**
     * 刷新epd内容
     */
    void refreshEpdPqdDataCache();


    /**
     * 存储模板的字典数据
     * @param eleEpdPqdParam 参数
     */
    void saveData(List<EleEpdPqdParam> eleEpdPqdParam);

    /**
     * 存储字典数据
     * @param eleEpdPqdParam 参数
     */
    EleEpdPqd add(EleEpdPqdParam eleEpdPqdParam);

    /**
     * 删除字典数据
     * @param id id
     */
    void delete(String id);

    /**
     * 更新字典数据
     * @param updateParam 参数
     */
    void update(EleEpdPqdParam.EleEpdPqdUpdateParam updateParam);

    /**
     * 查询字典分页
     * @param queryParam 参数
     */
    Page<EleEpdPqdVO> eleEpdPqdList(EleEpdPqdParam.EleEpdPqdQueryParam queryParam);

    /**
     * 查询所有字典数据组成唯一标识，用于验证字典是否重复
     */
    List<EleEpdPqd> dictMarkByDataType(String dataType);

    /**
     * 存储事件的字典数据
     * @param eleEpdPqdParam 参数
     */
    Map<String,String> saveEvt(List<EleEpdPqdParam> eleEpdPqdParam);

    /**
     * 存储事件的字典数据
     * @param id id
     */
    EleEpdPqd selectById(String id);
    /** 
    * @Description: 查询指标库，按datatype分类
    * @Author: clam
    * @Date: 2023/6/12 
    */ 
    List<EleEpdPqdListVO> selectAll();

    /**
     * 根据集合查询字典数据
     * @param ids id集合
     */
    List<EleEpdPqd> selectByIds(List<String> ids);

    /**
     * 校验字典是否存在
     * @param name 名称
     * @param dataType 数据类型
     */
    List<EleEpdPqd> judgeExist(String name, String dataType);

    /**
     * 根据条件查询字典数据
     * @param name 名称
     * @param dataType 数据类型
     * @param phase 相别
     */
    EleEpdPqd findByParam(String name, String dataType, String phase);

    /**
     * 查询指标和influxDB表关系
     */
    List<EpdDTO> findAll();

    List<EleEpdPqd> selectByClassId(String classId);

    List<EleEpdTreeVO> eleEpdChooseTree();
}
