package org.example.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.example.entity.Terminal;

import java.util.List;

@Mapper
public interface TerminalMapper {
    /**
     * 查询所有设备信息
     * @return 设备列表
     */
    List<Terminal> findAll();

    /**
     * 根据设备编号查询设备信息
     * @param terminalNumber 设备编号
     * @return 设备信息
     */
    Terminal findByTerminalNumber(String terminalNumber);

    /**
     * 根据设备类型模糊查询设备列表
     * @param terminalType 设备类型
     * @return 设备列表
     */
    List<Terminal> findByTerminalTypeContaining(String terminalType);

    /**
     * 根据所属科室模糊查询设备列表
     * @param deptCode 所属科室
     * @return 设备列表
     */
    List<Terminal> findByDeptCodeContaining(String deptCode);

    /**
     * 根据所属病区模糊查询设备列表
     * @param wardCode 所属病区
     * @return 设备列表
     */
    List<Terminal> findByWardCodeContaining(String wardCode);

    /**
     * 根据在线状态查询设备列表
     * @param isOnline 在线状态
     * @return 设备列表
     */
    List<Terminal> findByIsOnline(Boolean isOnline);

    /**
     * 根据设备名称模糊查询设备列表
     * @param terminalDesc 设备名称
     * @return 设备列表
     */
    List<Terminal> findByTerminalDescContaining(String terminalDesc);

    /**
     * 插入新设备
     * @param terminal 设备信息
     */
    void insert(Terminal terminal);

    /**
     * 更新设备信息
     * @param terminal 设备信息
     * @param terminalNumber 设备编号
     */
    void update(@Param("terminal") Terminal terminal, @Param("terminalNumber") String terminalNumber);

    /**
     * 删除设备
     * @param terminalNumber 设备编号
     */
    void deleteByTerminalNumber(String terminalNumber);
}