package com.hotwj.platform.reportStatistics.service;

import com.hotwj.platform.reportStatistics.domain.bo.ReportLedgerQueryBo;
import com.hotwj.platform.reportStatistics.domain.vo.*;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;

import java.util.List;

/**
 * 驾驶员台账服务接口
 *
 * @author shihongwei
 * @date 2026-01-06
 */
public interface ILedgerReportService {

    TableDataInfo<DriverInfoLedgerVo> queryDriverInfo(String districtCode, ReportLedgerQueryBo bo, PageQuery pageQuery);

    List<DriverInfoLedgerVo> listDriverInfo(String districtCode, ReportLedgerQueryBo bo);

    TableDataInfo<DriverHealthLedgerVo> queryDriverHealth(String districtCode, ReportLedgerQueryBo bo, PageQuery pageQuery);

    List<DriverHealthLedgerVo> listDriverHealth(String districtCode, ReportLedgerQueryBo bo);

    TableDataInfo<ProfCertScoreLedgerVo> queryProfCertScore(String districtCode, ReportLedgerQueryBo bo, PageQuery pageQuery);

    List<ProfCertScoreLedgerVo> listProfCertScore(String districtCode, ReportLedgerQueryBo bo);

    TableDataInfo<DriverIntegrityLedgerVo> queryDriverIntegrity(String districtCode, ReportLedgerQueryBo bo, PageQuery pageQuery);

    List<DriverIntegrityLedgerVo> listDriverIntegrity(String districtCode, ReportLedgerQueryBo bo);

    TableDataInfo<VehicleInfoLedgerVo> queryVehicleInfo(ReportLedgerQueryBo bo, PageQuery pageQuery);

    List<VehicleInfoLedgerVo> listVehicleInfo(ReportLedgerQueryBo bo);

    TableDataInfo<GovVehicleInfoLedgerVo> queryGovVehicleInfo(String districtCode, ReportLedgerQueryBo bo, PageQuery pageQuery);

    List<GovVehicleInfoLedgerVo> listGovVehicleInfo(String districtCode, ReportLedgerQueryBo bo);

    TableDataInfo<GovGpsViolationLedgerVo> queryGovGpsViolation(String districtCode, ReportLedgerQueryBo bo, PageQuery pageQuery);

    TableDataInfo<AccidentLedgerVo> queryAccident(ReportLedgerQueryBo bo, PageQuery pageQuery);

    List<AccidentLedgerVo> listAccident(ReportLedgerQueryBo bo);

    TableDataInfo<GovAccidentLedgerVo> queryGovAccident(String districtCode, ReportLedgerQueryBo bo, PageQuery pageQuery);

    List<GovAccidentLedgerVo> listGovAccident(String districtCode, ReportLedgerQueryBo bo);

    TableDataInfo<PreJobTrainingLedgerVo> queryPreJobTraining(ReportLedgerQueryBo bo, PageQuery pageQuery);

    List<PreJobTrainingLedgerVo> listPreJobTraining(ReportLedgerQueryBo bo);

    TableDataInfo<GovPreJobTrainingLedgerVo> queryGovPreJobTraining(String districtCode, ReportLedgerQueryBo bo, PageQuery pageQuery);

    List<GovPreJobTrainingLedgerVo> listGovPreJobTraining(String districtCode, ReportLedgerQueryBo bo);

    TableDataInfo<GovPreJobTrainingDetailVo> queryGovPreJobTrainingDetail(String districtCode, ReportLedgerQueryBo bo, PageQuery pageQuery);

    /**
     * 查询安全生产教育培训记录-分页
     */
    TableDataInfo<GovSafetyEducationTrainingVo> queryGovSafetyEducationTraining(ReportLedgerQueryBo bo, PageQuery pageQuery);

    /**
     * 查询安全生产教育培训详情
     */
    GovSafetyEducationTrainingDetailVo queryGovSafetyEducationTrainingDetail(Long id);

    /**
     * 查询违法违章信息排查记录-分页
     */
    TableDataInfo<GovViolationInfoLedgerVo> queryGovViolationInfoLedger(ReportLedgerQueryBo bo, PageQuery pageQuery);

    /**
     * 查询违法违章信息排查记录-详情分页
     */
    TableDataInfo<GovViolationInfoDetailVo> queryGovViolationInfoDetail(ReportLedgerQueryBo bo, PageQuery pageQuery);

    /**
     * 查询违章处理记录-分页（政府端）
     */
    TableDataInfo<GovViolationHandlingLedgerVo> queryGovViolationHandlingLedger(String districtCode, ReportLedgerQueryBo bo, PageQuery pageQuery);

    /**
     * 查询安全生产会议记录-分页
     */
    TableDataInfo<SafetyProductionMeetingLedgerVo> querySafetyProductionMeeting(ReportLedgerQueryBo bo, PageQuery pageQuery);
}
