package com.njcn.gather.device.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.device.pojo.param.PqStandardDevParam;
import com.njcn.gather.device.pojo.po.PqStandardDev;
import com.njcn.gather.device.pojo.vo.PqStandardDevVO;
import com.njcn.gather.device.pojo.vo.PreDetection;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author caozehui
 * @date 2025-07-02
 */
public interface IPqStandardDevService extends IService<PqStandardDev> {

    /**
     * 分页查询标准设备列表
     *
     * @param queryParam 分页查询参数
     * @return
     */
    Page<PqStandardDev> listPqStandardDevs(PqStandardDevParam.QueryParam queryParam);

    /**
     * 根据id查询标准设备
     *
     * @param id 设备id
     * @return 设备对象
     */
    PqStandardDevVO getPqStandardDevById(String id);

    /**
     * 新增标准设备
     *
     * @param param 新增参数
     * @return 新增成功返回true，失败返回false
     */
    boolean addPqStandardDev(PqStandardDevParam param);

    /**
     * 修改标准设备
     *
     * @param param 修改参数
     * @return 修改成功返回true，失败返回false
     */
    boolean updatePqStandardDev(PqStandardDevParam.UpdateParam param);

    /**
     * 批量删除标准设备
     *
     * @param ids
     * @return
     */
    boolean deletePqStandardDevs(List<String> ids);

    /**
     * 导出标准设备
     *
     * @param queryParam
     */
    void export(PqStandardDevParam.QueryParam queryParam);

    /**
     * 下装标准设备导入模板
     */
    void downloadTemplate();

    /**
     * 导入标准设备数据
     *
     * @param file
     * @return
     */
    void importData(MultipartFile file, HttpServletResponse response);

    /**
     * 查询出指定计划以关联的标准设备列表
     *
     * @param planId
     * @return
     */
//    List<PqStandardDev> listByPlanId(String planId);

    /**
     * 查询出标准设备所需的检测信息
     *
     * @param ids
     * @return
     */
    List<PreDetection> listStandardDevPreDetection(List<String> ids);


    /**
     * 查询可绑定的标准设备列表
     *
     * @return
     */
    List<PqStandardDev> canBindingList();
}
