package com.fuyuanshen.equipment.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fuyuanshen.common.core.domain.PageResult;
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
import com.fuyuanshen.equipment.domain.DeviceType;
import com.fuyuanshen.equipment.domain.form.DeviceTypeForm;
import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria;

import java.io.IOException;
import java.util.List;

/**
 * @Description:
 * @Author: WY
 * @Date: 2025/5/14
 **/
public interface DeviceTypeService extends IService<DeviceType> {

    /**
     * 查询数据分页
     *
     * @param criteria 条件
     * @param page     分页参数
     * @return PageResult
     */
    TableDataInfo<DeviceType> queryAll(DeviceTypeQueryCriteria criteria, Page<DeviceType> page);

    /**
     * 查询所有数据不分页
     *
     * @param criteria 条件参数
     * @return List<DeviceTypeDto>
     */
    List<DeviceType> queryAll(DeviceTypeQueryCriteria criteria);

    /**
     * 查询所有设备类型
     *
     * @return
     */
    List<DeviceType> queryDeviceTypes();

    /**
     * 根据设备类型名称查询设备类型
     *
     * @param typeName 条件参数
     * @return List<DeviceTypeDto>
     */
    DeviceType queryByName(String typeName);

    /**
     * 根据设备类型名称列表查询设备类型
     *
     * @param typeNames 设备类型名称列表
     * @return List<DeviceType>
     */
    List<DeviceType> queryByNames(List<String> typeNames);


    /**
     * 新增设备类型
     *
     * @param resources /
     */
    void create(DeviceTypeForm resources) throws IOException;

    /**
     * 修改设备类型
     *
     * @param resources /
     */
    void update(DeviceTypeForm resources) throws IOException;

    /**
     * 多选删除
     *
     * @param ids /
     */
    void deleteAll(List<Long> ids);

    /**
     * 获取设备类型通讯方式
     *
     * @param id /
     * @return DeviceTypeDto
     */
    DeviceType getCommunicationMode(Long id);
}
