package com.njcn.gather.monitor.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.monitor.pojo.param.PqMonitorParam;
import com.njcn.gather.monitor.pojo.po.PqMonitor;
import com.njcn.gather.plan.pojo.enums.DataSourceEnum;

import java.util.List;

/**
 * @author caozehui
 * @date 2024-12-12
 */
public interface IPqMonitorService extends IService<PqMonitor> {


    /**
     * 根据设备id获取所有监测点信息
     *
     * @param devIds 被检设备id列表
     * @return 监测点信息列表
     */
    List<PqMonitor> listPqMonitorByDevIds(List<String> devIds);

    /**
     * 根据设备id批量新增监测点信息
     *
     * @param devId
     * @param monitorList
     * @return
     */
    boolean addPqMonitorByDevId(String devId, List<PqMonitorParam> monitorList);

    /**
     * 根据设备id批量修改监测点信息
     *
     * @param devId
     * @param paramList
     * @return
     */
    boolean updatePqMonitorByDevId(String devId, List<PqMonitorParam> paramList);

    /**
     * 根据设备id删除监测点信息
     *
     * @param devId
     * @return
     */
    boolean deletePqMonitorByDevId(String devId);

    /**
     * 可视化监测点
     *
     * @param monitorList
     */
    void visualizeMonitor(List<PqMonitor> monitorList);

    /**
     * 逆向可视化监测点
     *
     * @param monitorList
     */
    void reverseVisualizeMonitor(List<PqMonitor> monitorList);

    /**
     * 根据被检设备监测点id获取监测点信息
     *
     * @param devMonitorId 被检设备监测点id
     * @return
     */
    PqMonitor getByDevMonitorId(String devMonitorId);

    /**
     * 根据被检设备id获取额定电流
     *
     * @param devMonitorId 被检设备监测点id
     * @return 额定电流
     */
    Double getRatedCurrent(String devMonitorId);

    /**
     * 根据被检设备id获取额定电压
     *
     * @param devMonitorId 被检设备监测点id
     * @return 额定电压
     */
    Double getRatedVoltage(String devMonitorId);

    /**
     * @param monitorId      监测点id
     * @param adTypes        检测项指标id列表
     * @param dataSourceEnum 那种数据源
     * @param code           结果表后缀
     * @return
     */
    boolean updateMonitorResult(String monitorId, List<String> adTypes, DataSourceEnum dataSourceEnum, Integer num, Integer waveNum, String code);

    /**
     * 查询设备的检测状态
     *
     * @param devId
     * @return
     */
    Integer getDevCheckState(String devId);

    /**
     * 查询设备的检测结果
     *
     * @param devId
     * @return
     */
    Integer getDevCheckResult(String devId);

    /**
     * 根据被检设备id删除监测点信息
     *
     * @param devId
     * @return
     */
    boolean removeByDevId(String devId);

    /**
     * 根据被检设备id和监测点编号获取监测点信息
     * @param devId 设备id
     * @param monitorNum 监测点编号
     */
    PqMonitor getByDevIdAndNum(String devId, int monitorNum);
}
