package cn.com.qmth.scancentral.service;

import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qmth.boot.core.collection.PageResult;

import cn.com.qmth.scancentral.bean.MismatchQueryDomain;
import cn.com.qmth.scancentral.bean.MismatchToggleDomain;
import cn.com.qmth.scancentral.bean.User;
import cn.com.qmth.scancentral.bean.papermigrate.PaperMigrateDomain;
import cn.com.qmth.scancentral.entity.PaperEntity;
import cn.com.qmth.scancentral.entity.PaperPageEntity;
import cn.com.qmth.scancentral.vo.MismatchToggleVo;
import cn.com.qmth.scancentral.vo.PaperMigrateVo;
import cn.com.qmth.scancentral.vo.UriVo;
import cn.com.qmth.scancentral.vo.answerquery.StudentPaperVo;
import cn.com.qmth.scancentral.vo.mismatchquery.MismatchQueryVo;
import cn.com.qmth.scancentral.vo.paper.PaperCetVo;
import cn.com.qmth.scancentral.vo.paper.PaperVo;

/**
 * 鉴权
 */
public interface PaperService extends IService<PaperEntity> {

    void savePaperAndPages(PaperEntity paper, List<PaperPageEntity> pages);

    List<PaperVo> findStudentPaper(Long studentId);

    boolean updateMismatch(Long id, boolean mismatch);

    int getMismatchCountByExam(Long examId);

    PageResult<MismatchQueryVo> mismatchQuery(MismatchQueryDomain query);

    MismatchToggleVo mismatchToggle(MismatchToggleDomain domain);

    List<StudentPaperVo> listByStudentIds(List<Long> paramList);

    UriVo adminSliceUpload(Long paperId, Integer pageIndex, Integer index, MultipartFile file, String md5);

    UriVo adminSliceUpdate(Long paperId, Integer pageIndex, Integer index, MultipartFile file, String md5);

    int getCountByExamAndCardNumber(Long examId, Integer number);

    PaperMigrateVo paperMigrate(User user, PaperMigrateDomain domain);

    UriVo adminSheetUpdate(Long paperId, Integer pageIndex, MultipartFile file, String md5);

    List<PaperCetVo> findByStudentIds(List<Long> studentIds);

//    void updatePaperAssignedSuspect(Long id, Integer number, Boolean assignedSuspect);

    List<StudentPaperVo> listByBatchIdAndStudentId(Long batchId, Long studentId);
}