package com.yida.data.school.smart.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yida.data.common.core.entity.CurrentUser;
import com.yida.data.common.core.entity.smart.EduSmartWelcomeGuideStepClass;
import com.yida.data.common.core.entity.smart.EduSmartWelcomeGuideStepDorm;
import com.yida.data.school.dto.smart.ClassImportDTO;
import com.yida.data.school.dto.smart.CustomDormImportDTO;
import com.yida.data.school.dto.smart.DormImportDTO;
import com.yida.data.school.dto.smart.DormImportFixDTO;
import com.yida.data.school.dto.smart.GuideRosterErrorExportDTO;
import com.yida.data.school.dto.smart.GuideRosterImportDTO;
import com.yida.data.school.vo.smart.ClassFixImportVO;
import com.yida.data.school.vo.smart.DormImportFixVO;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.ehcache.impl.internal.concurrent.ConcurrentHashMap;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.multipart.MultipartFile;

/**
 * 智慧迎新宿舍预分表Service接口
 */
public interface EduSmartWelcomeGuideStepDormService extends IService<EduSmartWelcomeGuideStepDorm> {


    /**
     * 下载导入宿舍模板
     *
     * @param response
     */
    void downloadDormTemplate(HttpServletResponse response);

    /**
     * 下载导入宿舍模板
     *
     * @param response
     */
    void downloadDormFixTemplate(HttpServletResponse response);

    /**
     * 导入宿舍预分信息，返回List对象
     *
     * @param file
     * @return
     */
    @Async
    void importDormData(MultipartFile file, String importKey, CurrentUser currentUser);


    @Async
    void importDormDataByCustom(String file, CurrentUser currentUser);


    DormImportFixVO importDormFixData(MultipartFile file, CurrentUser currentUser, Long guideId);

    /**
     * 分配宿舍
     *
     * @param guideId
     * @param stepId
     * @param rosterId
     */
    void dormBanding(Long guideId, Long stepId, Long rosterId);


    void saveCusTomDormData(ConcurrentHashMap<Integer, CustomDormImportDTO> concurrentHashMap, CurrentUser currentUser);
}
