package org.dromara.system.service.score;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.system.domain.score.ScoreData;
import org.dromara.system.domain.score.ScoreDataStudent;
import org.dromara.system.domain.score.bo.ScoreDataBo;
import org.dromara.system.domain.score.vo.ScoreDataDetailVo;
import org.dromara.system.domain.score.vo.ScoreDataStudentVo;
import org.dromara.system.domain.score.vo.ScoreDataVo;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 成绩Service接口
 *
 * @author boman
 * @date 2023-08-17
 */
public interface IScoreDataService {

    /**
     * 查询成绩
     */
    ScoreDataVo queryById(Long scoreId);

    /**
     * 查询成绩列表
     */
    TableDataInfo<ScoreDataVo> queryPageList(ScoreDataBo bo, PageQuery pageQuery);

    /**
     * 查询成绩列表
     */
    List<ScoreDataVo> queryList(ScoreDataBo bo);

    /**
     * 新增成绩
     */
    Boolean insertByBo(ScoreDataBo bo);

    /**
     * 修改成绩
     */
    Boolean updateByBo(ScoreDataBo bo);

    /**
     * 校验并批量删除成绩信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);


    /**
     * 后台首页成绩统计排名
     */
    public List<ScoreDataStudentVo> indexPaiMing(ScoreData scoreData);
    /**
     * 后台首页成绩统计分段人数饼图
     */
    public Map<String,Object> indexBingTu(ScoreData scoreData);

    /**
     * 后台首页成绩统计分段人数折线图
     */
    public Map<String,Object> indexZheXian(ScoreData scoreData);


    /**
     * 成绩年级统计
     */
    public List<ScoreDataStudentVo> gradeRank(ScoreData scoreData);

    /**
     * 后台首页成绩统计列表
     */
    public List<ScoreDataStudentVo> indexList(ScoreData scoreData);

    /**
     * 成绩学科统计
     * @param scoreDatabo
     * @return
     */
    public List<ScoreDataDetailVo> xuekeRank(ScoreDataBo scoreDatabo);

    /**
     * 班级总分平均分排名统计
     */
    public List<ScoreDataVo> classRank(ScoreData scoreData);
    public Map<String,Object> classRankZheXian(ScoreData scoreData);
    /**
     * 班级总分平均分人数统计
     */
    public List<ScoreDataVo> avgRank(ScoreData scoreData);

    /**
     * 年级分数段统计
     * @param scoreData
     * @return
     */
    public Map<String,Object> bingTuRank(ScoreData scoreData);


    /**
     * 查询成绩
     *
     * @param scoreData 成绩主键
     * @return 成绩
     */
    public ScoreDataVo selectScoreDataByScoreId(ScoreData scoreData);

    public void importData(ScoreDataBo scoreData,List<Map<String, String>> maps);
}
