package com.xhkjedu.sapi.mapper.component;

import com.xhkjedu.sapi.vo.analyze.work.SchoolWorkSubjectVo;
import com.xhkjedu.sapi.vo.component.ComponentParams;
import com.xhkjedu.sapi.vo.component.ExamInfoVo;
import com.xhkjedu.sapi.vo.component.PaperStudentQuestionVo;
import com.xhkjedu.sapi.vo.component.StudyStatisticVo;
import com.xhkjedu.sapi.vo.notice.NoticeVo;
import com.xhkjedu.vo.exam.EPaperVo;
import org.apache.ibatis.annotations.Param;

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

/**
 * @Description：组件内容
 * @Author: WN
 * @Date: 2024/7/19 15:33:04
 **/
public interface ComponentMapper {

    //批改作业
    List<Map<String,Object>> listCorrectPages(@Param("userid")Integer userid,@Param("limitSize")Integer limitSize);

    //作业-我的
    List<Map<String,Object>> listPaperForMy(@Param("params")ComponentParams params);

    //通知公告
    List<NoticeVo> listNotices(@Param("userid")Integer userid,@Param("limitSize")Integer limitSize);

    //教学教研
    List<Map<String,Object>> listResearchs(@Param("userid") Integer userid, @Param("limitSize")Integer limitSize, @Param("timestamp") int timestamp);

    //我的空间
    List<Map<String,Object>> listMySpaces(@Param("userid") Integer userid, @Param("limitSize")Integer limitSize);

    //校本资源
    List<Map<String,Object>> listSchoolResources(@Param("userid") Integer userid, @Param("limitSize")Integer limitSize,@Param("schoolid")Integer schoolid);

    //同步视频
    List<Map<String,Object>> listVideos(@Param("userid") Integer userid, @Param("limitSize")Integer limitSize,@Param("schoolid")Integer schoolid);

    //预习
    List<Map<String,Object>> listGuides(@Param("userid") Integer userid, @Param("limitSize")Integer limitSize);

    //背诵
    List<Map<String,Object>> listReciteds(@Param("userid") Integer userid, @Param("limitSize")Integer limitSize);

    //课堂回顾
    List<Map<String,Object>> listClassrooms(@Param("userid") Integer userid, @Param("limitSize")Integer limitSize);

    //预习统计-班级
    List<StudyStatisticVo> listGuidesStatisticClass(@Param("params")ComponentParams params);

    //预习统计-科目
    List<StudyStatisticVo> listGuidesStatisticSubject(@Param("params")ComponentParams params);

    //作业统计-班级
    List<StudyStatisticVo> listPapersStatisticClass(@Param("params")ComponentParams params);

    //作业统计-科目
    List<StudyStatisticVo> listPapersStatisticSubject(@Param("params")ComponentParams params);

    //直播巡课
    Map<String,Object> listLivePatrol(@Param("params")ComponentParams params);

    //教师直播
    List<Map<String,Object>> listLiveTeachers(@Param("params")ComponentParams params);

    //班级错题集-最近一次作业错题数量
    Integer getClassErrorQuesLastPaper(@Param("params")ComponentParams params);

    //班级做提及-错题数量和错题讲解数量
    Map<String,Object> getClassErrorQuesAndExplain(@Param("params")ComponentParams params);

    //我的班级-权限班级
    List<Integer> listClassidsForTeacher(@Param("params")ComponentParams params);

    //我的班级-学生数量分组数量
    List<Integer> listClassStuAndGroup(@Param("userid") Integer userid, @Param("classidsStr")String classidsStr);

    //校本题库-试题数量
    Map<String,Integer> getQuestionStatistic(@Param("params")ComponentParams params);
    //校本题库-当前学科试题数
    Integer getQuestionStatisticSubejct(@Param("params")ComponentParams params);

    //教学统计-班级学生教师数量
    Map<String,Object> getTeachingSchoolClassNum(@Param("params")ComponentParams params);
    //教学统计-作业
    List<SchoolWorkSubjectVo> listTeachingPapers(@Param("params")ComponentParams params);
    //教学统计-预习
    List<SchoolWorkSubjectVo> listTeachingGuides(@Param("params")ComponentParams params);
    //教学统计-背诵
    List<SchoolWorkSubjectVo> listTeachingRecites(@Param("params")ComponentParams params);

    //常用应用
    List<Map<String,Object>> listUserModules(@Param("params")ComponentParams params);

    //考试-待出卷
    List<Map<String,Object>> listExamPaperGiv(@Param("params")ComponentParams params);
    //考试-待批阅
    List<Map<String,Object>> listExamPaperCheck(@Param("params")ComponentParams params);
    //考试-待监考
    List<Map<String,Object>> listExamInvigilate(@Param("params")ComponentParams params);

    //考试-校级报告-获取最近一次生成报告的考试
    Map<String,Object> getExamReportSchoolBase(@Param("schoolid")Integer schoolid);
    //考试-校级报告-成绩概况
    List<Map<String,Object>> listExamReportSchoolStatistic(@Param("examid")Integer examid);

    //考试-班级报告-考试信息
    ExamInfoVo getExamReportClassInfo(@Param("params")ComponentParams params);
    //考试-班级报告-学科成绩对比
    List<Map<String,Object>> listExamReportClassScore(@Param("params")ComponentParams params);
    //考试-考试报告-参与班级
    List<Map<String,Object>> listExamReportClass(@Param("examid")Integer examid,@Param("userid")Integer userid);

    //考试-单科报告-单科考试信息
    ExamInfoVo getExamReportSingleInfo(@Param("params")ComponentParams params);
    //考试-单科报告-单科概况
    Map<String,Object> getExamReportSingleBase(@Param("params")ComponentParams params);
    //考试-单科报告-成绩等级分布
    List<Map<String,Object>> listExamReportSingleRank(@Param("params")ComponentParams params);

    //考试-阅卷进度-考试信息
    ExamInfoVo getExamCheckProgressBase(@Param("params")ComponentParams params);
    //考试-阅卷进度-试卷
    List<EPaperVo> listExamCheckProgressPaper(@Param("examid")Integer examid);
    //考试-阅卷进度-学生试题
    List<PaperStudentQuestionVo> listExamCheckProgressStuQuestion(@Param("epids")String epids);

}
