package com.qmth.teachcloud.report.business.service;

import com.qmth.teachcloud.report.business.bean.params.CalculateParams;

import java.io.IOException;

/**
 * @Description: 基础分析数据校验服务类
 * @Author: CaoZixuan
 * @Date: 2022-06-07
 */
public interface AnalyzeDataCheckService {

    /**
     * 试卷整体检查 - 检查试卷结构't_b_paper_struct'表中各小题总分之和是否和试卷总分一致't_b_paper'
     *
     * @param schoolId   学校id
     * @param examId     考试id
     * @param courseCode 课程编号
     */
    void checkPaperTotal(Long schoolId, Long examId, String courseCode);

    /**
     * 校验考生作答相关数据
     * <p>
     * 1.试卷结构对应检查 - 本地的试卷结构和考生作答的结构中 题目类型，大题号，小题号是否对应
     * 2.考生人数对应检查 - 本地试卷结构数量 * 考生数 =？ 考生作答总记录数
     * </p>
     *
     * @param schoolId   学校id
     * @param examId     考试id
     * @param courseCode 课程编号
     */
    void checkExamStudentAnswer(Long schoolId, Long examId, String courseCode);

    /**
     * 常规配置信息导入 - 't_b_common_level_config'、't_b_common_rank_level_config'
     *
     * @param schoolId   徐晓id
     * @param examId     考试id
     * @param courseCode 课程编号
     */
    void importConfigData(Long schoolId, Long examId, String courseCode);

    /**
     * 触发公式赋分 - 触发生成‘t_a_exam_course_record’，计算表的数据源
     *
     * @param schoolId   学校id
     * @param examId     考试id
     * @param courseCode 课程编号
     */
    void triggerAssign(Long schoolId, Long examId, String courseCode);

    void analyzeDataCheck(CalculateParams calculateParams) throws IOException;
}