package com.openhis.administration.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.administration.domain.OutpatientNoSegment;

/**
 * 门诊号码段管理Service接口
 *
 * @author system
 * @date 2025-01-XX
 */
public interface IOutpatientNoSegmentService {
    
    /**
     * 分页查询门诊号码段列表
     *
     * @param page 分页对象
     * @param onlySelf 是否只查询自己的（true=只查询自己的，false=查询所有）
     * @param userId 用户ID
     * @return 分页结果
     */
    Page<OutpatientNoSegment> selectOutpatientNoSegmentPage(Page<OutpatientNoSegment> page, boolean onlySelf, Long userId);
    
    /**
     * 新增门诊号码段
     *
     * @param outpatientNoSegment 门诊号码段信息
     * @return 结果
     */
    int insertOutpatientNoSegment(OutpatientNoSegment outpatientNoSegment);
    
    /**
     * 修改门诊号码段
     *
     * @param outpatientNoSegment 门诊号码段信息
     * @return 结果
     */
    int updateOutpatientNoSegment(OutpatientNoSegment outpatientNoSegment);
    
    /**
     * 删除门诊号码段
     *
     * @param ids 门诊号码段ID列表
     * @return 结果
     */
    int deleteOutpatientNoSegmentByIds(Long[] ids);
    
    /**
     * 根据ID查询门诊号码段
     *
     * @param id 门诊号码段ID
     * @return 门诊号码段信息
     */
    OutpatientNoSegment getById(Long id);
    
    /**
     * 检查号码段是否重复（全系统范围）
     *
     * @param startNo 起始号码
     * @param endNo 终止号码
     * @param excludeId 排除的ID（用于更新时排除自身）
     * @return true=重复，false=不重复
     */
    boolean checkNumberSegmentOverlap(String startNo, String endNo, Long excludeId);
}

