package com.ruoyi.hezhi.service;

import com.ruoyi.hezhi.domain.TbExamSubject;
import com.ruoyi.hezhi.domain.vo.TopicImportTemplateVO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * 考试题目Service接口
 *
 * @author ruoyi
 * @date 2024-11-04
 */
public interface ITbExamSubjectService
{
    /**
     * 查询考试题目
     *
     * @param examSubjectId 考试题目主键
     * @return 考试题目
     */
    public TbExamSubject selectTbExamSubjectByExamSubjectId(Long examSubjectId);

    /**
     * 查询考试题目列表
     *
     * @param tbExamSubject 考试题目
     * @return 考试题目集合
     */
    public List<TbExamSubject> selectTbExamSubjectList(TbExamSubject tbExamSubject);

    /**
     * 新增考试题目
     *
     * @param tbExamSubject 考试题目
     * @return 结果
     */
    public int insertTbExamSubject(TbExamSubject tbExamSubject);

    /**
     * 修改考试题目
     *
     * @param tbExamSubject 考试题目
     * @return 结果
     */
    public int updateTbExamSubject(TbExamSubject tbExamSubject);

    /**
     * 批量删除考试题目
     *
     * @param examSubjectIds 需要删除的考试题目主键集合
     * @return 结果
     */
    public int deleteTbExamSubjectByExamSubjectIds(Long[] examSubjectIds);

    /**
     * 删除考试题目信息
     *
     * @param examSubjectId 考试题目主键
     * @return 结果
     */
    public int deleteTbExamSubjectByExamSubjectId(Long examSubjectId);

    /**
     * 查询所有题目
     *
     * @param params 参数
     * @return 结果
     */
    public List<Map<String,Object>> queryByParam(Map<String,Object> params);

    /**
     * 题目详情
     *
     * @param params 参数
     * @return 结果
     */
    public Map<String,Object> getExamSubjectInfo(Map<String,Object> params);

    /**
     * 专项练习（考试标题）
     *
     * @return 结果
     */
    public List<Map<String,Object>> getSpecialPracticeList(Map<String,Object> params);

    /**
     * 查询练习题数量
     *
     * @return 结果
     */
    public List<Map<String,Object>> getPracticeListCount(Map<String,Object> params);

    /**
     * 章节练习（考试标题）
     *
     * @return 结果
     */
    public List<Map<String,Object>> getMajorPracticeList();

    /**
     * 筛选条件下单选、多选、判断、论述题目数
     *
     * @param params 参数
     * @return 结果
     */
    public Map<String,Object> getExamSubjectNum(Map<String,Object> params);

    /**
     * 导入考试题目
     * @param list 文件
     * @param username 用户
     * @return 结果
     */
    String importData(List<TopicImportTemplateVO> list,String username) throws IOException;

    /**
     * 下载导入模板
     * @param response 响应流
     */
    void importTemplate(HttpServletResponse response) throws IOException;
}
