package com.dcs.hnyz.service;

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

import com.dcs.hnyz.domain.EquipmentParam;
import com.dcs.hnyz.domain.vo.EquipmentParamFormVO;

/**
 * 设备参数管理Service接口
 * 
 * @author hmy
 * @date 2025-04-23
 */
public interface IEquipmentParamService 
{
    /**
     * 查询设备参数管理
     * 
     * @param registerId 设备参数管理主键
     * @return 设备参数管理
     */
    public EquipmentParam selectEquipmentParamByRegisterId(Long registerId);

    /**
     * 查询设备参数管理列表
     * 
     * @param equipmentParam 设备参数管理
     * @return 设备参数管理集合
     */
    public List<EquipmentParam> selectEquipmentParamList(EquipmentParam equipmentParam);

    /**
     * 新增设备参数管理
     * 
     * @param equipmentParam 设备参数管理
     * @return 结果
     */
    public int insertEquipmentParam(EquipmentParam equipmentParam);

    /**
     * 修改设备参数管理
     * 
     * @param equipmentParam 设备参数管理
     * @return 结果
     */
    public int updateEquipmentParam(EquipmentParam equipmentParam);

    /**
     * 批量删除设备参数管理
     * 
     * @param registerIds 需要删除的设备参数管理主键集合
     * @return 结果
     */
    public int deleteEquipmentParamByRegisterIds(Long[] registerIds);

    /**
     * 删除设备参数管理信息
     * 
     * @param registerId 设备参数管理主键
     * @return 结果
     */
    public int deleteEquipmentParamByRegisterId(Long registerId);

    /**
     * 查询设备参数管理表单
     * @param equipmentParam
     * @return
     */
    public List<EquipmentParamFormVO> selectEquipmentParamForm(EquipmentParam equipmentParam);

    Map<Integer, Integer> getEquipmentIndexList();

    /**
     * 根据父设备id获取对应主数据寄存器唯一code
     */
    String getCodeByParentId(Long parentId);
    /**
     * 根据父设备id获取对应主设置项寄存器地址
     */
    Integer getSetCodeByParentId(Long parentId);

    /**
     * 根据父设备id获取对应所有寄存器code
     * @param parentId
     */
    List<String> getCodesByParentId(Long parentId);

    /**
     * 根据数据类型获取设备参数列表
     * @param dataTypes
     * @return
     */
    List<EquipmentParam> selectEquipmentParamListByDataType(List<String> dataTypes);
}
