package com.srs.comprehensive.mapper;



import com.srs.comprehensive.domain.Dto.StuDataSelcetDto;
import com.srs.comprehensive.domain.SrsStudent;
import com.srs.comprehensive.domain.Vo.*;
import com.srs.framework.mybatisplusMapper.EasyBaseMapper;
import com.srs.system.domain.vo.StuStatus;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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


/**
 * 学生信息Mapper接口
 *
 * @author srs
 * @date 2023-06-27
 */
@Mapper
public interface SrsStudentMapper extends EasyBaseMapper<SrsStudent>
{

    public List<Map<String,Object>> selectViewStuInfo(CphSearch param);

    public List<Map<String,Object>> countGradeStuNew();

    public List<Map<String,Object>> countDeptStuNew();

    public List<Map<String,Object>> countMajorStuByDept(CphSearch param);

    public List<Map<String,Object>> countDeptGradeStuNew();

    public List<StuCount> countParkStu();

    // 根据多个班级ID查询学生
    List<SrsStudent> selectSrsStudentByClassIds(@Param("classIds") List<Long> classIds);
    public List<StuCount> countLakeGradeStu();


    public List<StuCount> countGoodGradeStu();



    public List<StuCount> countGoodBiyeGradeStu();


    public List<StuCount> countDeptGradeStu();
    public List<StuCount> countDeptStu();


    public List<SrsStudent> listEnableStu();

    public List<StuNoName> selectStuNoNameByClass(Long id);

    public List<StuClass> getOwnClass(String stuNo);

    /**
     * 查询学生信息
     *
     * @param stuId 学生信息主键
     * @return 学生信息
     */
    public SrsStudent selectSrsStudentByStuId(Long stuId);
    /**
     * 通过学号查询信息
     *
     * @param stuNo 学号
     * @return 学生信息
     */
    public SrsStudent selectSrsStudentByStuNo(String stuNo);

    public SrsStudent selectSrsStudentByStuNoNew(String stuNo);
    /**
     *  连表查询
     *
     * @param srsStudent 学生信息
     * @return 学生信息集合
     */


    public List<SrsStudent> selectSrsStudentListJoin(SrsStudent srsStudent);

    /**
     * 查询学生信息列表
     * @param srsStudent 学生信息
     * @return学生信息集合
     */
    public List<SrsStudent> selectSrsStudentList(SrsStudent srsStudent);


    /**
     * 通过班级id查询学生名字列表
     * @param  id
     * @return学生名字集合
     */

    public List<Map<String,Object>> selectSrsStudentNameList(Long id);

    /**
     * 新增学生信息
     *
     * @param srsStudent 学生信息
     * @return 结果
     */
    public int insertSrsStudent(SrsStudent srsStudent);

    /**
     * 修改学生信息
     *
     * @param srsStudent 学生信息
     * @return 结果
     */
    public int updateSrsStudent(SrsStudent srsStudent);
    /**
     * 修改学生信息
     *
     * @param srsStudent 学生信息
     * @return 结果
     */
    public int updateSrsStudent2(SrsStudent srsStudent);

    /**
     * 删除学生信息
     *
     * @param stuId 学生信息主键
     * @return 结果
     */
    public int deleteSrsStudentByStuId(Long stuId);

    /**
     * 批量删除学生信息
     *
     * @param stuIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSrsStudentByStuIds(Long[] stuIds);

    public int batchInsertSrsStudent(List<SrsStudent> students);

    public int batchUpdateSrsStudent(List<SrsStudent> students);

    //批量更新
    void updateSrsStudentList(@Param("studentList") List<SrsStudent> studentList);

    Long selectClassId(String bjdm);

    /**
     * 查询各年级请假人数
     * @return
     */
    List<DeptLeaveDataVo> selectDeptLeveaDataCount();

    /**
     * 查询各学院休学人数
     * @return
     */
    List<DeptStuQuitPunisDataVo> selectStuQuitSchoolCount();

    /**
     * 查询各学院处分人数
     * @return
     */
    List<DeptStuQuitPunisDataVo> selectStuPunishCount();

    /**
     * 查询当前学年各学院困难认定情况
     * @return
     */
    List<DeptStuQuitPunisDataVo> selectKnrdCount();

    /**
     * 查询当前学年各学院助学金人数
     * @return
     */
    List<DeptStuQuitPunisDataVo> selectZxjCount();

    /**
     * 查询里建校区人数
     * @return
     */
    List<DeptStuQuitPunisDataVo> selectDeptCountByCampusLJ();

    /**
     * 查询长堽校区
     * @return
     */
    List<DeptStuQuitPunisDataVo> selectDeptCountByCampusCG();

    /**
     * 获取在校学生各年级人数
     * @return
     */
    List<GradeStuDataVo> selectGradeCount();
    /**
     * 获取学院的休学人员具体信息
     * @return
     */
    List<RtStuQuitSchoolVo> getRtStuQuitSchool(StuDataSelcetDto stuDataSelcetDto);
    /**
     * 获取学院的处分人员具体信息
     * @return
     */
    List<RtStuDisciplinaryApplicationVo> getRtStuDisciplinaryApplication(StuDataSelcetDto stuDataSelcetDto);
    /**
     * 获取学院退学人员具体信息
     * @return
     */
    List<RtStuDropOutSchoolVo> getRtStuDropOutSchool(StuDataSelcetDto stuDataSelcetDto);
     /**
      * 获取学院困难人员具体信息
      */
    List<SrsKnrdApplyVo> getSrsKnrdApply(StuDataSelcetDto stuDataSelcetDto );
    /**
     * 获取学院助学金人员具体信息
     */
    List<SrsZxjApplyVo> getSrsZxjApply(StuDataSelcetDto stuDataSelcetDto);

    List<DeptStuQuitPunisDataVo> selectStuDropOutSchoolCount();

    public List<Map<String,Object>> countStuMZ();

    public  List<Map<String,Object>> getSrsHZCount();

    public  List<Map<String,Object>> getSrsZZCount();

    public  List<Map<String,Object>> getSrsGenderCount();

    public  List<Map<String,Object>> getSrsknrdCount();

    public  List<Map<String,Object>> getSrsAgeCount();
    public List<Map<String,Object>> getCountbyCity();
    public List<Map<String,Object>> getSchoolCountbyGrade();
    public List<Map<String,Object>> getSchoolTotalCount();
    public List<Map<String,Object>> getNotSchoolTotalCount();
    public List<Map<String,Object>> getMajorsCount();
    public List<Map<String,Object>> getFiveSchoolTotalCount();
    public List<StuStatus> statusList();
}
