package jnpf.cultivate.mapper;

import jnpf.base.mapper.SuperMapper;
import jnpf.model.cultivate.resp.ExamPaperVo;
import jnpf.model.cultivate.v2.exam.po.CultivateExam;
import jnpf.model.cultivate.v2.exam.vo.ExamDrawRuleVo;
import jnpf.model.cultivate.v2.exam.vo.MyExamWebVo;
import jnpf.model.cultivate.v2.exam.vo.V2ExamListVo;
import org.apache.ibatis.annotations.Param;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * 考试mapper[v2]
 *
 * @author yanwenfu
 * @create 2026-03-05
 */
public interface CultivateExamMapper extends SuperMapper<CultivateExam> {

    /**
     * 查询考试列表
     * @param examName 考试名称
     * @param examType 考试类型(0: 岗位考试, 1: 自定义考试)
     * @param needUpdate 考试标签(1: 不需要更新[正常], 2: 需要更新[异常])
     * @param limitedDate 日期限制(1: 有, 0: 没有)
     * @return java.util.List<jnpf.model.cultivate.v2.exam.vo.V2ExamListVo>
     */
    List<V2ExamListVo> selectListV2(@Param("examName") String examName, @Param("examType") Integer examType,
                                    @Param("needUpdate") Integer needUpdate, @Param("limitedDate") Integer limitedDate);

    /**
     * 查询受影响的抽题规则(删题后)
     * @param bankId 题库id
     * @param typeList 题型列表
     * @return java.util.List<jnpf.model.cultivate.v2.exam.vo.ExamDrawRuleVo>
     */
    List<ExamDrawRuleVo> getAffectedExamRule(@Param("bankId") String bankId, @Param("typeList") List<Integer> typeList);

    /**
     * 查询老版本考试列表
     * @return java.util.List<jnpf.model.cultivate.resp.ExamPaperVo>
     */
    List<ExamPaperVo> getOldExamList();

    /**
     * 批量更新老版本考试信息
     * @param examList 考试列表
     */
    void updateOldExamBatch(@Param("examList") List<ExamPaperVo> examList);

    /**
     * 查询我的考试列表[web]
     * @param userId 用户id
     * @return java.util.List<jnpf.model.cultivate.v2.exam.vo.MyExamWebVo>
     */
    List<MyExamWebVo> getMyExamWebList(@Param("userId") String userId);
}
