package com.aucma.base.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.aucma.base.domain.BaseDeviceParam;

/**
 * 设备参数Mapper接口
 * 
 * @author Yinq
 * @date 2023-09-19
 */
public interface BaseDeviceParamMapper 
{
    /**
     * 查询设备参数
     * 
     * @param objId 设备参数主键
     * @return 设备参数
     */
    public BaseDeviceParam selectBaseDeviceParamByObjId(@Param("objId") Long objId);

    /**
     * 查询设备参数列表
     * 
     * @param baseDeviceParam 设备参数
     * @return 设备参数集合
     */
    public List<BaseDeviceParam> selectBaseDeviceParamList(BaseDeviceParam baseDeviceParam);

    /**
     * 新增设备参数
     * 
     * @param baseDeviceParam 设备参数
     * @return 结果
     */
    public int insertBaseDeviceParam(BaseDeviceParam baseDeviceParam);

    /**
     * 修改设备参数
     * 
     * @param baseDeviceParam 设备参数
     * @return 结果
     */
    public int updateBaseDeviceParam(BaseDeviceParam baseDeviceParam);

    /**
     * 删除设备参数
     * 
     * @param objId 设备参数主键
     * @return 结果
     */
    public int deleteBaseDeviceParamByObjId(@Param("objId") Long objId);

    /**
     * 批量删除设备参数
     * 
     * @param objIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBaseDeviceParamByObjIds(@Param("objIds") Long[] objIds);

    /**
     * 根据参数编号列表查询已存在的参数
     *
     * @param paramCodes 参数编号列表
     * @return 设备参数集合
     */
    public List<BaseDeviceParam> selectByParamCodes(@Param("paramCodes") List<String> paramCodes);

    /**
     * 校验参数编号唯一性
     *
     * @param paramCode 参数编号
     * @param excludeObjId 排除的主键（更新时使用）
     * @return 已存在数量
     */
    public int countByParamCode(@Param("paramCode") String paramCode, @Param("excludeObjId") Long excludeObjId);

    /**
     * 批量新增设备参数
     *
     * @param list 设备参数列表
     * @return 结果
     */
    public int batchInsertDeviceParam(@Param("list") List<BaseDeviceParam> list);

    /**
     * 批量更新设备参数
     *
     * @param list 设备参数列表
     * @return 结果
     */
    public int batchUpdateDeviceParam(@Param("list") List<BaseDeviceParam> list);
}
