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

import java.util.*;

import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.vo.tunnelEquipment.TunnelEquipmentExcelVO;
import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.vo.tunnelEquipment.TunnelEquipmentPageReqVO;
import com.cico.nest.lcdp.boot.core.qxsd.adapter.web.vo.tunnelEquipment.TunnelEquipmentSaveReqVO;
import com.cico.nest.lcdp.boot.core.qxsd.infrastructure.gatewayimpl.database.dataobject.TunnelEquipmentDO;
import jakarta.validation.*;
import com.cico.nest.lcdp.framework.common.pojo.PageResult;

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

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

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

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

    /**
     * 获得隧道设备
     *
     * @param id 编号
     * @return 隧道设备
     */
    TunnelEquipmentDO getTunnelEquipment(String id);

    /**
     * 获得隧道设备分页
     *
     * @param pageReqVO 分页查询
     * @return 隧道设备分页
     */
    PageResult<TunnelEquipmentDO> getTunnelEquipmentPage(TunnelEquipmentPageReqVO pageReqVO);

    /**
     * 隧道设备导入
     * @param list 隧道设备列表
     * @param updateSupport 是否支持更新
     */
    void importExcel(List<TunnelEquipmentExcelVO> list, Boolean updateSupport);
}
