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

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.apply.EduStudentApply;
import com.yida.data.school.vo.transcation.StudentApplyImportErrorVO;
import com.yida.data.school.vo.transcation.StudentApplyImportProgressVO;
import com.yida.data.school.vo.transcation.StudentApplyImportVO;
import com.yida.data.school.vo.transcation.StudentApplyStatusVO;
import io.swagger.annotations.ApiParam;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

public interface EduStudentApplyService extends IService<EduStudentApply> {

    StudentApplyStatusVO getStudentApplyStatus(Long studentId, String applyCode);

    IPage<EduStudentApply> listStudentApply(String studentName,
        String studentNumber,
        Long schoolId,
        Long sectionId,
        Long campusId,
        Long gradeId,
        Long classId,
        Page<EduStudentApply> page);

    /**
     * 下载学生开通应用模板
     *
     * @param response
     * @throws Exception
     */
    void downloadTemplate(HttpServletResponse response) throws Exception;

    @Async
    void importStudentApplyInfo(MultipartFile file, String redisKey) throws IOException;

    void insertStudentApplyData(List<StudentApplyImportVO> studentApplyImportVOList, String redisKey);

    StudentApplyImportProgressVO getImportStudentApplyInfoProgress( String redisKey);

}
