package com.yida.data.user.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yida.data.common.core.entity.school.EduDormitory;
import com.yida.data.common.core.entity.school.EduDormitoryRoom;
import com.yida.data.user.dto.ExchangeDormDTO;
import com.yida.data.user.dto.PageStudentDormDTO;
import com.yida.data.user.vo.StudentDormInfoVO;

import org.springframework.scheduling.annotation.Async;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 学生住宿
 */
public interface EduStudentDormService {

    /**
     * 分页查询住宿学生
     *
     * @param dto
     * @return
     */
    IPage<StudentDormInfoVO> listStudentDormPage(PageStudentDormDTO dto);

    /**
     * 新增住宿学生
     *
     * @param studentId
     * @param dormRoomId
     */
    void saveStudentDorm(Long studentId, Long dormRoomId, Long dormId);

    /**
     * 退宿
     */
    void cancelBatch(List<Long> studentIds);

    /**
     * 换寝
     *
     * @param dto
     */
    void exchangeDorm(ExchangeDormDTO dto);

    /**
     * 导入住宿学生
     *
     * @param file
     * @param schoolId
     * @param key
     */
    void importDormRoom(MultipartFile file, Long schoolId, String key);

    @Async
    void exportStudentDorm(PageStudentDormDTO dto, String key);

    /**
     * 查询导出进度
     *
     * @param key 导出唯一标识
     * @return java.lang.Object
     * @author ZYJ
     * @date 2023/12/14 16:25
     */
    Object getStudentDormExportInfo(String key);
}
