package org.xyzh.workcase.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.api.workcase.dto.TbWorkcaseDeviceDTO;
import org.xyzh.common.core.page.PageParam;

/**
 * @description    工单设备文件数据访问层
 * @filename    TbWorkcaseDeviceMapper.java
 * @author    yslg
 * @copyright xyzh
 * @since 2025-12-18
 */
@Mapper
public interface TbWorkcaseDeviceMapper {

    /**
     * 插入工单设备文件
     */
    int insertWorkcaseDevice(TbWorkcaseDeviceDTO device);

    /**
     * 更新工单设备文件（只更新非null字段）
     */
    int updateWorkcaseDevice(TbWorkcaseDeviceDTO device);

    /**
     * 删除工单设备文件
     */
    int deleteWorkcaseDevice(@Param("workcaseId") String workcaseId, @Param("fileId") String fileId);

    /**
     * 根据工单ID和文件ID查询
     */
    TbWorkcaseDeviceDTO selectWorkcaseDeviceById(@Param("workcaseId") String workcaseId, @Param("fileId") String fileId);

    /**
     * 查询工单设备文件列表
     */
    List<TbWorkcaseDeviceDTO> selectWorkcaseDeviceList(@Param("filter") TbWorkcaseDeviceDTO filter);

    /**
     * 分页查询工单设备文件
     */
    List<TbWorkcaseDeviceDTO> selectWorkcaseDevicePage(@Param("filter") TbWorkcaseDeviceDTO filter, @Param("pageParam") PageParam pageParam);

    /**
     * 统计工单设备文件数量
     */
    long countWorkcaseDevices(@Param("filter") TbWorkcaseDeviceDTO filter);

}
