package com.hotwj.platform.reportStatistics.service;

import java.util.List;

/**
 * 驾驶员档案打印Service接口
 *
 * @author shihongwei
 * @date 2026-01-04
 */
public interface IDriverFilePrintService {

    String TYPE_APPLICATION_FORM = "APPLICATION_FORM";
    String TYPE_ID_CARD_SCAN = "ID_CARD_SCAN";
    String TYPE_DRIVER_LICENSE_COPY = "DRIVER_LICENSE_COPY";
    String TYPE_QUALIFICATION_CERTIFICATE_COPY = "QUALIFICATION_CERTIFICATE_COPY";
    String TYPE_QUALIFICATION_REVIEW = "QUALIFICATION_REVIEW";
    String TYPE_ACCIDENT_RECORD = "ACCIDENT_RECORD";
    String TYPE_VIOLATION_RECORD = "VIOLATION_RECORD";
    String TYPE_ANNUAL_ASSESSMENT_RECORD = "ANNUAL_ASSESSMENT_RECORD";
    String TYPE_MEDICAL_EXAMINATION_REPORT = "MEDICAL_EXAMINATION_REPORT";
    String TYPE_REWARD_PUNISHMENT_RECORD = "REWARD_PUNISHMENT_RECORD";

    /**
     * 生成驾驶员应聘表PDF
     *
     * @param driverIds 驾驶员ID列表
     * @return PDF字节数组
     * @throws Exception 异常
     */
    byte[] generateApplicationForm(List<String> driverIds) throws Exception;

    /**
     * 生成身份证扫描件PDF
     *
     * @param driverIds 驾驶员ID列表
     * @return PDF字节数组
     * @throws Exception 异常
     */
    byte[] generateIdCardScan(List<String> driverIds) throws Exception;

    /**
     * 生成驾驶员机动车驾驶证复印件
     *
     * @param driverIds 驾驶员ID列表
     * @return PDF字节数组
     */
    byte[] generateDriverLicenseCopy(List<String> driverIds) throws Exception;

    /**
     * 生成驾驶员从业资格证复印件
     *
     * @param driverIds 驾驶员ID列表
     * @return PDF字节数组
     */
    byte[] generateQualificationCertificateCopy(List<String> driverIds) throws Exception;

    /**
     * 生成驾驶员资格审查及技能考核登记表PDF
     *
     * @param driverIds 驾驶员ID列表
     * @return PDF字节数组
     */
    byte[] generateQualificationReview(List<String> driverIds) throws Exception;

    /**
     * 生成驾驶员安全行车事故记录PDF
     *
     * @param driverIds 驾驶员ID列表
     * @return PDF字节数组
     */
    byte[] generateAccidentRecord(List<String> driverIds) throws Exception;

    /**
     * 生成驾驶员违章记录PDF
     *
     * @param driverIds 驾驶员ID列表
     * @return PDF字节数组
     */
    byte[] generateViolationRecord(List<String> driverIds) throws Exception;

    /**
     * 生成驾驶员年度考核记录PDF
     *
     * @param driverIds 驾驶员ID列表
     * @return PDF字节数组
     */
    byte[] generateAnnualAssessmentRecord(List<String> driverIds) throws Exception;

    /**
     * 生成驾驶员体检报告PDF
     *
     * @param driverIds 驾驶员ID列表
     * @return PDF字节数组
     */
    byte[] generateMedicalExaminationReport(List<String> driverIds) throws Exception;

    /**
     * 生成员工奖惩记录表PDF
     *
     * @param driverIds 驾驶员ID列表
     * @return PDF字节数组
     */
    byte[] generateRewardPunishmentRecord(List<String> driverIds) throws Exception;

    /**
     * 一键打印
     *
     * @param driverIds 驾驶员ID列表
     * @param types     打印类型列表
     * @return PDF字节数组
     */
    byte[] generateOneClickPrintPdf(List<String> driverIds, List<String> types) throws Exception;
}
