package com.cico.nest.lcdp.boot.core.qxsd.application.service;

import java.util.*;
import jakarta.validation.*;
import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.vo.tunnelDevice.*;
import com.cico.nest.lcdp.boot.core.qxsd.infrastructure.gatewayimpl.database.dataobject.TunnelDeviceDO;
import com.cico.nest.lcdp.framework.common.pojo.PageResult;
import com.cico.nest.lcdp.framework.common.pojo.PageParam;

/**
 * 隧道设备信息 Service 接口
 *
 * @author 管理员
 */
public interface TunnelDeviceService {

    /**
     * 创建隧道设备信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createTunnelDevice(@Valid TunnelDeviceSaveReqVO createReqVO);

    /**
     * 更新隧道设备信息
     *
     * @param updateReqVO 更新信息
     */
    void updateTunnelDevice(@Valid TunnelDeviceSaveReqVO updateReqVO);

    /**
     * 删除隧道设备信息
     *
     * @param id 编号
     */
    void deleteTunnelDevice(String id);

    /**
     * 获得隧道设备信息
     *
     * @param id 编号
     * @return 隧道设备信息
     */
    TunnelDeviceDO getTunnelDevice(String id);

    /**
     * 获得隧道设备信息分页
     *
     * @param pageReqVO 分页查询
     * @return 隧道设备信息分页
     */
    PageResult<TunnelDeviceDO> getTunnelDevicePage(TunnelDevicePageReqVO pageReqVO);
    /**
     * 获得隧道设备信息分页v2
     *
     * @param pageReqVO 分页查询
     * @return 隧道设备信息分页
     */
    PageResult<TunnelDeviceRespVO> getTunnelDevicePageV2(TunnelDevicePageReqVO pageReqVO);

    /**
     * 获取隧道洞下面所有设备
     * @param param
     * @return
     */
    List<TunnelDeviceDO> listByHole(TunnelDeviceRespVO param);
}
