package com.srs.dormitory.service;

import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.page.TableDataInfo;
import com.srs.comprehensive.domain.Vo.CphSearch;
import com.srs.comprehensive.domain.Vo.StuClass;
import com.srs.dormitory.domain.DormitoryImportModel;
import com.srs.dormitory.domain.Dto.*;
import com.srs.dormitory.domain.SrsDormitoryStudent;
import com.baomidou.mybatisplus.extension.service.IService;
import com.srs.dormitory.domain.Vo.DomInfo;
import com.srs.dormitory.domain.Vo.SrsDormitoryStudentVo;
import com.srs.stureg.domain.SrsStuReg;
import org.springframework.web.bind.annotation.PathVariable;

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

/**
 * <p>
 * 宿舍学生关联表 服务类
 * </p>
 *
 * @author 猪油骨
 * @since 2023-07-14
 */
public interface ISrsDormitoryStudentService extends IService<SrsDormitoryStudent> {

    public AjaxResult assignDormitoryByTeacher(String teacherEmployeeId) ;

    public AjaxResult sendStudentConfirmMsg(SendConfirmDto param);

    public String doImport(List<ImportDormStuDto> list ,boolean updateSupport);

    public AjaxResult getStuLog( String stuNo);

    List<StuClass> listView(CphSearch param);

    List<SrsDormitoryStudentVo> list(DmsSearch param);

    /**
     * 学生自主选择床位
     * @param studentDormitoryDto 请求参数
     * @return
     */
    AjaxResult addStudentDormitory(StudentDormitoryDto studentDormitoryDto);

    /**
     * 管理员分配床位
     * @param studentDormitoryDto 请求参数
     * @return
     */
    AjaxResult AdminAddStudentDormitory(StudentDormitoryDto studentDormitoryDto);

    /**
     * 自动分配床位
     * @param majorCodes 需要分配的班级id列表
     * @return
     */
//    AjaxResult batchAdd(List<String> majorCodes);

    /**
     * 批量搬出宿舍
     * @param ids 学生宿舍关联ID列表
     * @return
     */
    AjaxResult batchDelete(List<Long> ids);

    /**
     * 取消选择床位
     * @return
     */
    AjaxResult cancel();

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

    /**
     * 毕业生一键退宿
     * @param gradeId 年级id
     * @param deptId 学院id
     * @param majorId 专业id
     * @return
     */
    AjaxResult out(Long gradeId, Long deptId, Long majorId);

    /**
     * 新生请求分配宿舍
     * @return
     */
    AjaxResult allocateDormitory();

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

    /**
     * 根据id查看详情
     * @param id 关联表id
     * @return
     */
    AjaxResult get(Long id);

    /**
     * 导入数据
     * @param list
     * @return
     */
    AjaxResult importData(List<DormitoryImportModel> list);

    List<DomInfo> doExport(DmsSearch param);
    boolean updateSrsDormitoryStudent(SrsDormitoryStudent dormitoryStudent);
    AjaxResult rankingCount();
}
