package com.xhkjedu.suser.mapper.gradeclass;

import com.xhkjedu.base.TkMapper;
import com.xhkjedu.suser.model.gradeclass.TClassStudent;
import com.xhkjedu.suser.vo.gradeclass.ClassStudentVo;
import com.xhkjedu.suser.vo.gradeclass.ClassVo;
import com.xhkjedu.suser.vo.gradeclass.ImportStudentVo;
import org.apache.ibatis.annotations.Param;

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

public interface ClassStudentMapper extends TkMapper<TClassStudent> {
    //班级学生列表
    List<ClassStudentVo> findAll(@Param("student") TClassStudent student);

    //删除班级、分组对应学生
    void deleteById(@Param("classid") Integer classid,@Param("studentid") Integer studentid);

    //批量删除班级、分组对应学生
    void deleteBatchStudent(@Param("list") List<Integer> list, @Param("studentids") String studentids);

    //班级学生数量
    ImportStudentVo getNumById(@Param("classid") Integer classid, @Param("studentid") Integer studentid, @Param("year") Integer year);

    //获取学生行政班id
    Integer getClassIdByStuId(@Param("studentid") Integer studentid);

    /**
     * 根据班级id和学生id获取班级学生信息
     *
     * @return com.xhkjedu.model.gradeclass.TClassStudent
     * @Param [classid, studentid]
     * @Author ywx
     * @Date 2020/6/19 10:08
     **/
    Integer getByClassIdStudentId(@Param("classid") Integer classid, @Param("studentid") Integer studentid);

    List<ClassVo> listClassByStudentId(Integer year,Integer studentid);

    List<ClassStudentVo> listNoClassStu(@Param("student") TClassStudent student);

    //获取学生所在年级列表
    List<Integer> listGrade(@Param("studentid") Integer studentid,@Param("year") Integer year);

    //获取全校学生
    List<ClassStudentVo> listAllStudents(@Param("student") TClassStudent student);

    //获取班级学生id列表
    List<Integer> listStudentIdByClassId(@Param("classid") Integer classid);

    //添加
    void save(@Param("student") TClassStudent student);

    //获取学生所有提高班
    List<Integer> listTgClassid(Integer studentid);

    //批量保存班级学生
    void saveBatchClassStudent(@Param("list") List<TClassStudent> list);

    //获取学生除某个班外的行政班和提高班ids
    String getClassIdsByCidAndSid(@Param("classid") Integer classid, @Param("studentid") Integer studentid);

    //获取学生除某个班外的行政班和提高班ids
    List<Map> listClassIdsByCidAndSid(@Param("students") List<TClassStudent> students);

    //批量删除班级、分组对应学生
    void deleteBatchStudent2(@Param("students") List<TClassStudent> students);
}
