package com.njcn.gather.source.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.source.pojo.param.PqSourceParam;
import com.njcn.gather.source.pojo.po.PqSource;
import com.njcn.gather.source.pojo.po.SourceInitialize;
import com.njcn.gather.source.pojo.po.SourceParam;

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

/**
 * @author caozehui
 * @date 2024-11-28
 */
public interface IPqSourceService extends IService<PqSource> {

    /**
     * 分页查询检测源
     *
     * @param param 查询参数
     * @return 分页数据
     */
    Page<PqSource> listPqSource(PqSourceParam.QueryParam param);

    /**
     * 根据id查询检测源
     *
     * @param id
     * @return
     */
    PqSource getPqSourceById(String id);

    /**
     * 新增检测源
     *
     * @param param 新增参数
     * @return 成功返回true，失败返回false
     */
    boolean addPqSource(PqSourceParam param);

    /**
     * 修改检测源
     *
     * @param param 修改参数
     * @return 成功返回true，失败返回false
     */
    boolean updatePqSource(PqSourceParam.UpdateParam param);

    /**
     * 删除检测源
     *
     * @param ids 检测源id列表
     * @return 成功返回true，失败返回false
     */
    boolean deletePqSource(List<String> ids);

    /**
     * 获取指定模式下的所有检测源
     *
     * @param patternId 模式Id
     * @return 检测源列表
     */
    List<Map<String, Object>> listAllPqSource(String patternId);

    /**
     * 获取指定检测源的指定参数
     *
     * @param sourceId 检测源Id
     * @return 源参数
     */
    List<SourceParam> getSourceParam(String sourceId);

    /**
     * 根据源参数组装源初始化参数
     *
     * @param sourceId
     * @return
     */
    SourceInitialize getSourceInitializeParam(String sourceId);


    /**
     * 根据名称获取检测源Id列表
     *
     * @param sourceNames 检测源名称列表
     * @return
     */
    List<String> listPqSourceIdByName(String[] sourceNames);
}
