package com.ningdatech.carapi.company.service;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import com.ningdatech.basic.model.PageVo;
import com.ningdatech.carapi.company.entity.dto.*;
import com.ningdatech.carapi.company.entity.vo.CompanyEmployeesVO;
import com.ningdatech.carapi.open.model.vo.CompanySecurityInfoVO;
import com.ningdatech.carapi.sys.entity.Company;
import com.ningdatech.carapi.sys.entity.dto.CompanySaveDTO;


/**
 * @description:
 * @author: liushuai
 * @date: 2022/10/26 08:50
 */
public interface ICompanyArchivesService {

    /**
     * 获取企业信息
     *
     * @param
     * @return 企业列表
     */
    PageVo<ResCompanyArchivesDTO> getCompanyList(CompanyListParamDTO param);

    /**
     * 获取企业详情
     *
     * @param companyId 公司id
     * @return 企业详情
     */
    ResCompanyArchivesDetailsDTO getCompanyDetail(Long companyId);

    /**
     * 获取企业员工信息
     *
     * @param companyId 企业id
     * @return 企业员工信息
     */
    List<CompanyEmployeesVO> getCompanyEmployees(Long companyId);

    /**
     * 修改企业信息
     *
     * @param reqCompanyArchivesDetailsDTO {@link  ReqCompanyArchivesDetailsDTO}
     */
    void updateCompanyInfo(ReqCompanyArchivesDetailsDTO reqCompanyArchivesDetailsDTO);

    /**
     * 获取员工统计
     *
     * @param param
     * @return 分页统计
     */
    PageVo<ResCompanyEmployeesCountDTO> getCompanyEmployeesList(CompanyListParamDTO param);

    /**
     * 获取企业基础信用
     *
     * @param
     * @return 基础信用列表
     */
    PageVo<ResCompanyBasicCreditDTO> getCompanyBasicCreditList(CompanyListParamDTO param);

    /**
     * 获取基础信用详情
     *
     * @param companyId 企业id
     * @return 信用详情
     */
    ResCompanyBasicCreditDetailDTO getCompanyBasicCreditDetail(Long companyId);

    /**
     * 获取企业公共信用
     *
     * @param param
     * @return 公共信用信息
     */
    PageVo<ResCompanyCommonCreditDTO> getCompanyCommonCreditList(CompanyListParamDTO param);

    void companyListExport(HttpServletResponse response, CompanyListParamDTO param);

    void companyBasicCreditListExport(HttpServletResponse response, CompanyListParamDTO param);

    void companyCommonCreditListExport(HttpServletResponse response, CompanyListParamDTO param);

    void companyCertificateInformationListExport(HttpServletResponse response, CompanyListParamDTO param);
     PageVo<ResNotGetOnCarRecordDTO> getNotOnCarList(ReqNotGetOnCarDTO param);

    CompanySecurityInfoVO getCompanySecurityInfo(Long companyId);

    Company saveCompany(CompanySaveDTO data);

    PageVo<ResCompanyArchivesDTO> queryToBeAudit(CompanyAuditPageQuery param);

    PageVo<ResCompanyArchivesDTO> queryAuditedList(CompanyAuditPageQuery param);

    Boolean audit(CompanyAuditDTO data, Long userId);
}
