package org.example.mapper;

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

import java.util.List;

@Mapper
public interface HospitalWardMapper {
    
    /**
     * 查询所有病区
     * @return 病区列表
     */
    List<HospitalWard> findAll();
    
    /**
     * 根据病区代码查询病区
     * @param code 病区代码
     * @return 病区信息
     */
    HospitalWard findByCode(String code);
    
    /**
     * 根据病区名称模糊查询病区列表
     * @param name 病区名称
     * @return 病区列表
     */
    List<HospitalWard> findByNameContaining(String name);
    
    /**
     * 根据关联科室模糊查询病区列表
     * @param glkeshi 关联科室
     * @return 病区列表
     */
    List<HospitalWard> findByGlkeshiContaining(String glkeshi);
    
    /**
     * 根据启用状态查询病区列表
     * @param enabled 是否启用
     * @return 病区列表
     */
    List<HospitalWard> findByEnabled(Boolean enabled);
    
    /**
     * 检查是否存在指定代码的病区（用于唯一性检查）
     * @param code 病区代码
     * @param excludeCode 要排除的代码（更新时使用）
     * @return 病区列表
     */
    List<HospitalWard> findByCodeExcluding(String code, String excludeCode);
    
    /**
     * 插入新病区
     * @param ward 病区信息
     */
    void insert(HospitalWard ward);
    
    /**
     * 更新病区信息
     * @param ward 病区信息
     */
    void update(@Param("ward") HospitalWard ward, @Param("originCode") String originCode);
    
    /**
     * 根据病区代码删除病区
     * @param code 病区代码
     */
    void deleteByCode(String code);
}
