package com.srs.dormitory.mapper;

import com.srs.comprehensive.domain.Vo.CphSearch;
import com.srs.comprehensive.domain.Vo.StuClass;
import com.srs.dormitory.domain.DmsDormitoryBed;
import com.srs.dormitory.domain.DmsDormitoryClass;
import com.srs.dormitory.domain.Dto.BedInfo;
import com.srs.dormitory.domain.Dto.DmsSearch;
import com.srs.dormitory.domain.Dto.DormitoryQueryDto;
import com.srs.dormitory.domain.Dto.StuRoomInfo;
import com.srs.dormitory.domain.SrsDormitoryStudent;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.srs.dormitory.domain.Vo.DomInfo;
import com.srs.dormitory.domain.Vo.SrsDormitoryStudentVo;
import com.srs.stureg.domain.SrsStuReg;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * <p>
 * 宿舍学生关联表 Mapper 接口
 * </p>
 *
 * @author 猪油骨
 * @since 2023-07-14
 */
@Mapper
public interface SrsDormitoryStudentMapper extends BaseMapper<SrsDormitoryStudent> {


    public List<DmsDormitoryClass> listFdyCanDorm(String fdyNo);


    /**
     * 查询辅导员的学生是否吸烟早睡排序
     * @param fdyNo 辅导员工号
      **/
    public List<SrsStuReg> listSmokeEarly(String fdyNo);

    public List<DomInfo> doExport(DmsSearch param);
    public List<DomInfo> findByParam(DmsSearch param);
    public List<StuClass> listView(CphSearch param);

    public List<SrsDormitoryStudentVo> list(DmsSearch param);

    /**
     * 根据考生号查询宿舍信息
     * @author zhy
     * @date 2023-08-16 16:40:41
     * @param ksh
     * @return
     **/
    List<StuRoomInfo> selectStuRoomInfoByKsh(String ksh);

    /**
     * 根据宿舍id查询床位信息
     * @author zhy
     * @date 2023-08-15 11:23:50
     * @param dormId
     * @return
     **/
    List<BedInfo> selectBedInfoByDormId(Long dormId);


    /**
     * 查询还未选择床位的学生
     * @param major 专业代码
     * @param gender 性别
     * @return 学生id列表
     */
    List<SrsStuReg> selectStudentNoBed(@Param("major") String major, @Param("gender") String gender);

    /**
     * 查询空床位
     * @param major 专业代码
     * @param gender 性别
     * @return 床位id和对应的宿舍id
     */
    List<DmsDormitoryBed> selectBedNoStudent(@Param("major") String major, @Param("gender") String gender);

    /**
     * 查看还没有选择床位的学生
     * @return
     */
    List<SrsStuReg> getNoBedStudent();

    /**
     * 查询所有毕业的住宿生学号
     * @param gradeId 年级id
     * @param deptId 学院id
     * @param majorId 专业id
     * @return
     */
    List<String> selectStuNo(@Param("gradeId") Long gradeId,@Param("deptId") Long deptId,@Param("majorId") Long majorId);

    /**
     * 查询学生宿舍关联列表
     * @param queryDto
     * @return
     */
    List<Map<String, Object>> getList(DormitoryQueryDto queryDto);

    /**
     * 根据学号从student查询学生信息
     * @param stuNoList
     * @return
     */
    List<Map<String, Object>> selectStudentByStuNoList(@Param("stuNoList") List<String> stuNoList);

    /**
     * 根据学号从stu_reg查询新生信息
     * @param stuNoList
     * @return
     */
    List<Map<String, Object>> selectSrsStuRegByStuNoList(@Param("stuNoList")List<String> stuNoList);

    /**
     * 根据id查询关联表详情
     * @param id 关联表id
     * @return
     */
    Map<String, Object> selectDetailById(@Param("id") Long id);

    /**
     * 查询缴费数据
     * @return
     */
    List<Map<String,Object>> selectAll(SrsDormitoryStudent dormitoryStudent);

    /**
     * 查询所有住宿生的费用信息
     * @return
     */
    List<Map<String, String>> selectRecords();
    boolean updateSrsDormitoryStudent(SrsDormitoryStudent dormitoryStudent);
    List<Map<String,Object>> rankingCount();
}
