package com.xinelu.manage.service.agency;

import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.agency.Agency;
import com.xinelu.manage.dto.agency.AgencyDTO;
import com.xinelu.manage.dto.agency.HospitalDTO;
import com.xinelu.manage.vo.agency.AgencyTreeVO;
import com.xinelu.manage.vo.agency.AgencyVO;

import java.util.List;


/**
 * 机构信息Service接口
 *
 * @author xinelu
 * @date 2024-02-26
 */
public interface IAgencyService {

    /**
     * 查询机构信息
     *
     * @param id 机构信息主键
     * @return 机构信息
     */
    AgencyVO selectAgencyById(Long id);

    /**
     * 查询机构信息列表
     *
     * @param agency 机构信息
     * @return 机构信息集合
     */
    List<Agency> selectAgencyList(Agency agency);

    /**
     * 查询机构信息列表
     *
     * @param agency 机构信息
     * @return 机构信息集合
     */
    List<Agency> selectAgencyByIdList(Agency agency);

    /**
     * 新增机构信息
     *
     * @param agency 机构信息
     * @return 结果
     */
    AjaxResult insertAgency(Agency agency);

    /**
     * 修改机构信息
     *
     * @param agency 机构信息
     * @return 结果
     */
    AjaxResult updateAgency(Agency agency);

    /**
     * 批量删除机构信息
     *
     * @param ids 需要删除的机构信息主键集合
     * @return 结果
     */
    AjaxResult deleteAgencyByIds(Long[] ids);

    /**
     * 删除机构信息信息
     *
     * @param id 机构信息主键
     * @return 结果
     */
    int deleteAgencyById(Long id);

    /**
     * 树图
     *
     * @return AgencyVO
     */
    List<AgencyTreeVO> agencyList();


    /**
     * 机构信息导入
     *
     * @param agencyList 机构信息
     * @return int
     **/
    AjaxResult insertAgencyImportList(List<AgencyDTO> agencyList);

    /**
     * 医院园区科室病区联动查询
     *
     * @param hospitalDTO 信息
     * @return AjaxResult
     */
    AjaxResult getAgencyList(HospitalDTO hospitalDTO);
}
