package com.xinelu.manage.mapper.questionsubject;

import com.xinelu.manage.domain.questionsubject.QuestionSubject;
import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO;
import com.xinelu.manage.vo.statistics.QuestionnaireTaskStatisticsVo;

import java.util.List;


/**
 * 问卷题目信息Mapper接口
 *
 * @author xinelu
 * @date 2024-02-29
 */
public interface QuestionSubjectMapper {
    /**
     * 查询问卷题目信息
     *
     * @param id 问卷题目信息主键
     * @return 问卷题目信息
     */
    QuestionSubject selectQuestionSubjectById(Long id);

    /**
     * 查询问卷题目信息列表
     *
     * @param questionSubject 问卷题目信息
     * @return 问卷题目信息集合
     */
    List<QuestionSubject> selectQuestionSubjectList(QuestionSubject questionSubject);

    /**
     * 新增问卷题目信息
     *
     * @param questionSubject 问卷题目信息
     * @return 结果
     */
    int insertQuestionSubject(QuestionSubject questionSubject);

    /**
     * 修改问卷题目信息
     *
     * @param questionSubject 问卷题目信息
     * @return 结果
     */
    int updateQuestionSubject(QuestionSubject questionSubject);

    /**
     * 删除问卷题目信息
     *
     * @param id 问卷题目信息主键
     * @return 结果
     */
    int deleteQuestionSubjectById(Long id);

    /**
     * 批量删除问卷题目信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteQuestionSubjectByIds(Long[] ids);

    /**
     * 批量新增问卷题目信息表
     *
     * @param questionSubjectList 问卷题目信息
     * @return 数量
     */
    int insertQuestionSubjectList(List<QuestionSubject> questionSubjectList);

    /**
     * 查询问卷题目信息列表
     *
     * @param questionInfoId 问卷题目信息
     * @return 问卷题目信息集合
     */
    List<QuestionSubjectVO> selectQuestionSubjectBy(Long questionInfoId);

    /**
     * 删除问卷题目信息
     *
     * @param questionInfoId 问卷题目信息主键
     * @return 结果
     */
    int deleteSubjectByQuestionInfoId(Long questionInfoId);

    /**
     * 原问卷选项信息
     *
     * @param questionnaireId 问卷id
     * @return QuestionnaireTaskStatisticsVo
     */
    List<QuestionnaireTaskStatisticsVo> selectQuestionnaireByQuestionnaireId(Long questionnaireId);
}
