package com.xinyilu.system.service.testItemScoreinfo;


import com.xinyilu.common.core.domain.AjaxResult;
import com.xinyilu.common.core.page.TableDataInfo;
import com.xinyilu.system.domain.dto.ImportTestProjectScoresDTO;
import com.xinyilu.system.domain.dto.TestItemScoreInfoUpdateDTO;
import com.xinyilu.system.domain.vo.TestItemScoreinfoVO;

import java.math.BigDecimal;
import java.util.List;


/**
 * 个人成绩录入管理Service接口
 *
 * @author xinyilu
 * @date 2022-08-04
 */
public interface ITestItemScoreService {
    /**
     * 查询个人成绩录入管理
     *
     * @param studentId 学生id
     * @param batchCode 批次编号
     * @return 个人成绩录入管理
     */
    public AjaxResult selectTestItemScoreById(Long studentId, String batchCode);

    /**
     * 查询个人成绩录入管理列表
     *
     * @param testItemScore 个人成绩录入管理
     * @return 个人成绩录入管理集合
     */
    public TableDataInfo selectTestItemScoreList(TestItemScoreinfoVO testItemScore);

    /**
     * 新增个人成绩录入管理
     *
     * @param testItemScore 个人成绩录入管理
     * @return 结果
     */
    public AjaxResult insertTestItemScore(TestItemScoreInfoUpdateDTO testItemScore);

    /**
     * 修改个人成绩录入管理
     *
     * @param testItemScore 个人成绩录入管理
     * @return 结果
     */
    public AjaxResult updateTestItemScore(TestItemScoreInfoUpdateDTO testItemScore);

    /**
     * 删除个人成绩录入管理信息
     *
     * @param id 个人成绩录入管理主键
     * @return 结果
     */
    public int deleteTestItemScoreById(Long id);

    /**
     * 逻辑批量删除个人成绩录入管理
     *
     * @param studentId 学生id
     * @param batchCode 批次编号
     * @return 结果
     */
    public int updateTestItemScoreByIds(Long studentId, String batchCode);

    /**
     * 获取个人成绩的信息
     *
     * @param studentId 学生id
     * @param batchId   批次id
     * @param batchCode 批次编号
     * @return com.xinyilu.common.core.domain.AjaxResult
     **/
    AjaxResult getAllTestItemScoreInfo(Long studentId, Long batchId, String batchCode);

    /**
     * 根据学生的信息查询表中的信息自动匹配得分
     *
     * @param studentId   学生id
     * @param itemId      项目id
     * @param itemScore   项目成绩
     * @param hwfFraction 体重项目成绩
     * @return com.xinyilu.common.core.domain.AjaxResult
     **/
    AjaxResult getStudentFraction(Long studentId, Long itemId, BigDecimal itemScore, BigDecimal hwfFraction);

    /**
     * 导入个人成绩的信息
     *
     * @param list 成绩信息
     * @return AjaxResult
     */
    AjaxResult importData(List<ImportTestProjectScoresDTO> list);
}
