package com.qmth.jkserver.service;

import com.qmth.jkserver.dto.QueryResultDto;
import com.qmth.jkserver.dto.examProgress.ExamProgressDto;
import com.qmth.jkserver.dto.examProgress.ExamProgressStatisticDto;
import com.qmth.jkserver.enums.ExamConditionEnum;
import com.qmth.jkserver.enums.ExamFinishStatusEnum;
import com.qmth.jkserver.enums.RegistrationStatusEnum;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * @Description: 考试进度统计服务类
 * @Author: CaoZixuan
 * @Date: 2021-11-16
 */
public interface ExamProgressStatisticService {
    /**
     * 查找考试级联查询条件数据集
     *
     * @param examCode          考试任务编号
     * @param batchId           批次id
     * @param stageId           场次od
     * @param placeCode         考点编号
     * @param roomCode          考场编号
     * @param examConditionEnum 要查询的条件枚举
     * @return 结果
     */
    List<QueryResultDto> findExamConditionCascade(String examCode, String batchId, String stageId, String placeCode, String roomCode, ExamConditionEnum examConditionEnum);

    /**
     * 根据考试任务查询考试进度统计
     *
     * @param examCode 考试任务编号
     * @return 考试进度统计
     */
    ExamProgressStatisticDto findExamProgressStatisticByExamCode(String examCode);

    /**
     * 分页查询考试进度
     *
     * @param examCode           考试编号
     * @param batchId            批次
     * @param stageId            场次
     * @param placeCode          考点编号
     * @param roomCode           考场编号
     * @param courseCode         课程编号
     * @param registrationStatus 检录状态
     * @param examFinishStatus   考试完成状态枚举
     * @param examStudentParams  考试完成状态枚举
     * @param pageNumber         分页页数
     * @param pageSize           分页容量
     * @return 分页查询结果
     */
    Page<ExamProgressDto> findExamProgressPage(String examCode, String batchId, String stageId, String placeCode,
                                               String roomCode, String courseCode, RegistrationStatusEnum registrationStatus,
                                               ExamFinishStatusEnum examFinishStatus, String examStudentParams, int pageNumber, int pageSize);
}
