package com.xhkjedu.sstudy.mapper.paperstudent;

import com.xhkjedu.base.TkMapper;
import com.xhkjedu.sstudy.model.paperstudent.TPaperStudentScantron;
import com.xhkjedu.sstudy.vo.paperreport.PaperRQuestionVo;
import com.xhkjedu.sstudy.vo.paperreport.PaperRStuQuestionVo;
import com.xhkjedu.sstudy.vo.paperstudent.PaperStudentScantronVo;
import com.xhkjedu.sstudy.vo.paperstudent.StudentPaperTypeVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

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

/**
 * @ClassName PaperStudentScantronMapper
 * Description 作业学生--答题卡试题
 * Author WN
 * Date 2020/6/9 10:37
 **/
@Repository
public interface PaperStudentScantronMapper extends TkMapper<TPaperStudentScantron> {

    /**
     *功能描述 学生答题卡作业试题
     * @author WN
     * @date 2020/6/12
     * @param  psid
     * @return java.util.List<com.xhkjedu.vo.paperstudent.PaperStudentScantronVo>
     */
    List<PaperStudentScantronVo> listPaperStudentScantrons(@Param("psid") Integer psid);

    /*
    * @Description 学生答题卡作业试题 无正确答案
    * @Author WN
    * @Date 2023/6/26 17:16:18
    */
    List<Map> listPaperStudentScantronsNoAnswer(@Param("psid") Integer psid);

    /**
     * 获取学生答题卡待批改试题列表
     * @Param [psid]
     * @Author ywx
     * @Date 2020/6/26 15:03
     * @return java.util.List<com.xhkjedu.vo.paperstudent.PaperStudentScantronVo>
     **/
    List<PaperStudentScantronVo> sListCorrectQuestion(@Param("psid") Integer psid);

    /**
     *功能描述 获取作业中试题
     * @author WN
     * @date 2020/6/12
     * @param  * @param psid
     * @return java.util.List<com.xhkjedu.model.paperstudent.TPaperStudentScantron>
     */
    List<TPaperStudentScantron> listPaperScantrons(@Param("psid") Integer psid);

    /**
     *功能描述  批量保存学生试题关联信息
     * @author WN
     * @date 2020/6/12
     * @param  * @param list
     * @return void
     */
    void saveBatchStudentScantron(@Param("list") List<TPaperStudentScantron> list);

    /**
     *功能描述 学生未做作业自动批阅
     * @author WN
     * @date 2020/6/12
     * @param psid
     * @return java.lang.Integer
     */
    Integer updateScantronPSQByNotDo(@Param("psid") Integer psid,@Param("checktime") Integer checktime);

    /**
     *功能描述 学生作业未批改试题数量
     * @author WN
     * @date 2020/6/12
     * @param psid
     * @return java.lang.Integer
     */
    Integer getScantronNotCorrect(@Param("psid") Integer psid);

    /**
     *功能描述 批阅单个学生作业
     * @author WN
     * @date 2020/6/12
     * @param  * @param list
     * @return void
     */
    void updateScantronQuestionBatch(@Param("list") List<TPaperStudentScantron> list);

    /**
     *功能描述  计算所有试题耗时
     * @author WN
     * @date 2020/6/12
     * @param psid
     * @return java.lang.Integer
     */
    Integer getSumScantronsCosttime(@Param("psid") Integer psid);

    /**
     *功能描述 修改学生答案图片（教师添加批注）
     * @author WN
     * @date 2020/8/24
     * @param  * @param useranswer
     * @param pssid
     * @return void
     */
    void updateUseranswer(String useranswer, Integer pssid);

    /**
     * 批量修改答题卡作业学生作答信息
     * @Param [list]
     * @Author ywx
     * @Date 2020/9/3 15:08
     * @return void
     **/
    void batchUpdateQuestion(@Param("list") List<TPaperStudentScantron> list);

    /**
     * 获取学生未提交试题集合
     * @Param [psid]
     * @Author ywx
     * @Date 2020/9/4 11:52
     * @return java.util.List<com.xhkjedu.model.paperstudent.TPaperStudentScantron>
     **/
    List<TPaperStudentScantron> listPSQByNotDo(@Param("psid") Integer psid);

    //附件作业--按题批阅列表
    List<Map> sqcorrectList(@Param("psids") List<Integer> psids);

    //获取学生作业未批改试题数量
    Integer getNoCheckNumByPsId(Integer psid);

    /**
     * 获取未合并的学生答案
     *
     * @param [psid]
     * @return java.util.List<com.xhkjedu.sstudy.model.paperstudent.TPaperStudentScantron>
     * @author ywx
     * @date 2022/5/9 15:14
     */
    List<TPaperStudentScantron> listNoMergeUserAnswer(@Param("psid") Integer psid);

    //获取作业所有学生试题作答情况
    List<PaperRStuQuestionVo> listAllStuAnswers(@Param("paperid") Integer paperid);

    //取作业中所有试题
    List<PaperRQuestionVo> listAllQuesByPaperid(@Param("paperid") Integer paperid);

    //清空指定作业所有优秀作答
    int updatePaperStudentGoodByPsid(@Param("psid") Integer psid);

    //标记单题是否优秀作答
    int updatePaperStudentGoodByPsqid(@Param("good") Integer good,@Param("psqid") Integer psqid);

    //学生作答时作业试题
    List<StudentPaperTypeVo> listPaperStuSacnsByPsid(@Param("psid") Integer psid);
}
