package cn.iocoder.yudao.module.company.service;

import cn.iocoder.yudao.module.app.company.vo.CompanyToServerVO;
import cn.iocoder.yudao.module.company.entity.Company;
import cn.iocoder.yudao.module.company.vo.CompanyReqVO;
import cn.iocoder.yudao.module.company.vo.CompanyRespVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 企业信息表（每个租户的下属企业信息）;(dl_company)表服务接口
 *
 * @author : http://www.chiner.pro
 * @date : 2024-7-31
 */
public interface CompanyService extends IService<Company> {
    /**
     * 获得企业信息表（每个租户的下属企业信息）分页
     *
     * @param pageReqVO 分页查询
     * @return 企业信息表（每个租户的下属企业信息）分页
     */
    IPage<Company> queryListPage(CompanyReqVO pageReqVO, Page<Company> page);

    /**
     * 新增企业信息
     *
     * @param companyRespVO 企业对象
     * @author vinjor-M
     * @date 9:56 2024/8/2
     **/
    void saveDataObj(CompanyRespVO companyRespVO);

    /**
     * 更新企业信息
     *
     * @param companyRespVO 企业对象
     * @author vinjor-M
     * @date 9:56 2024/8/2
     **/
    void updateDataObj(CompanyRespVO companyRespVO);

    /**
     * 删除企业
     *
     * @param id 企业id
     * @author vinjor-M
     * @date 16:33 2024/8/3
     **/
    void removeDataObj(String id);

    /**
     * 获取所有企业及对应的管理信息
     *
     * @author 小李
     * @date 10:15 2024/8/14
     **/
    List<CompanyRespVO> getCompanyAndManager();

    /**
     * 通过服务名称查能提供服务的企业 分页
     *
     * @author 小李
     * @date 14:09 2024/9/23
     * @param company 企业对象，主要是serverCodes
     **/
    IPage<Company> getCompanyPageByServer(Company company, Page<Company> page);

    /**
     * 查企业能提供的业务
     *
     * @author 小李
     * @date 10:21 2024/9/24
     * @param id 企业ID
     **/
    CompanyToServerVO getCompanyServerById(String id);
}