package com.xhkjedu.sexam.mapper.report;

import com.xhkjedu.sexam.model.exam.EClass;
import com.xhkjedu.sexam.model.reportclass.ERclassAction;
import com.xhkjedu.sexam.model.reportclass.ERclassQuestion;
import com.xhkjedu.sexam.model.reportstu.ERstudent;
import com.xhkjedu.sexam.vo.report.EClassActionVo;
import com.xhkjedu.sexam.vo.report.EReportVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author ywx
 * @className EReportGenerateMapper
 * @description 考试报告生成
 * @date 2022/8/9 10:00
 **/
public interface EReportGenerateMapper {
    //考试科目
    List<Map> listSubject(@Param("examid") Integer examid, @Param("exammode") Integer exammode);

    //删除考试报告
    void deleteExamReport(@Param("examid") Integer examid);

    //学生上次考试排名及目标
    List<ERstudent> listStuRankAndGoal(@Param("examid") Integer examid);

    //学生违纪行为
    List<Map> listBadActionByExamId(@Param("examid") Integer examid);

    //学生优秀试卷行为
    List<Map> listGoodActionByExamId(@Param("examid") Integer examid);

    //学生违纪试卷
    List<Map> listBadQuesActionByExamId(@Param("examid") Integer examid);

    //获取试卷分数
    Double getScoreByExamAndSubjectId(@Param("examid") Integer examid, @Param("subjectid") String subjectid);

    //获取考试发布学生数量
    Integer getStuNumByExamId(@Param("examid") Integer examid);

    //根据考试id获取考试模式
    Integer getExamModeById(@Param("examid") Integer examid);

    //获取未处理的学生作答情况
    List<ERclassQuestion> listAnswerJson();

    //获取复合题满分人数
    Integer getFullscorenum(@Param("q") ERclassQuestion q);

    //获取考试班级集合
    List<EClass> listClassByExamIds(@Param("examids") List<Integer> examids);

    //更新班级试题作答详情和满分
    void updateClassQuestion(@Param("q") ERclassQuestion q);

    //所有违规学生id
    List<EClassActionVo> listBadQuesExam();

    //数据表是否已经生成
    List<ERclassAction> listBadQuesExam3(@Param("examid") Integer examid);

    //获取报告保存路径
    String getSaveFolder(@Param("examid") Integer examid);

    //修改考试pdf地址
    void updatePdf(@Param("report") EReportVo report);

    //考试班级未生成pdf的数量
    Integer getNoPdfNumByExamAndClassId(@Param("examid") Integer examid,@Param("classid")  Integer classid);
    //考试未生成pdf的数量
    Integer getNoPdfNumByExamId(@Param("examid") Integer examid);

    //考试学生列表
    List<ERstudent> listStudentByExamId(@Param("examid") Integer examid);

    //获取考试科目id列表
    List<String> listSubjectIdByExamId(@Param("examid") Integer examid);
}
