package com.ktg.iscs.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ktg.iscs.domain.IsHardware;
import com.ktg.iscs.domain.dto.hardware.HardwareAutomaticDTO;
import com.ktg.iscs.domain.dto.hardware.HardwarePageDTO;

import java.util.List;

/**
 * 硬件Service接口
 *
 * @author cgj
 * @date 2024-10-16
 */
public interface IIsHardwareService extends IService<IsHardware>
{
    /**
     * 查询硬件
     *
     * @param id 硬件主键
     * @return 硬件
     */
    IsHardware selectIsHardwareById(Long id);

    /**
     * 查询硬件列表
     *
     * @param isHardware 硬件
     * @return 硬件集合
     */
    List<IsHardware> selectIsHardwareList(IsHardware isHardware);

    /**
     * 新增硬件
     *
     * @param isHardware 硬件
     * @return 结果
     */
    int insertIsHardware(IsHardware isHardware);

    /**
     * 修改硬件
     *
     * @param isHardware 硬件
     * @return 结果
     */
    int updateIsHardware(IsHardware isHardware);

    /**
     * 批量删除硬件
     *
     * @param ids 需要删除的硬件主键集合
     * @return 结果
     */
    int deleteIsHardwareByIds(String ids);

    /**
     * 删除硬件信息
     *
     * @param id 硬件主键
     * @return 结果
     */
    int deleteIsHardwareById(Long id);

    /**
     * 依据上传的文件，批量导入或更新硬件信息
     *
     * @param hardwareList 硬件信息列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    String importHardware(List<IsHardware> hardwareList, Boolean isUpdateSupport, String operName);

    /**
     * 更新硬件使用次数/寿命/在线状态，硬件在使用后或者定时任务更新数据
     *
     * @param dto 硬件
     * @return 结果
     */
    Boolean insertIsHardware(HardwareAutomaticDTO dto);

    Page<IsHardware> getIsHardwarePage(Page page, HardwarePageDTO dto);
}
