package jnpf.cultivate.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import jnpf.model.cultivate.po.position.FtbCultivatePosition;
import jnpf.model.cultivate.po.position.FtbCultivatePositionCoursePractice;
import jnpf.model.cultivate.dto.learn.BatchCommonCountDto;
import jnpf.model.cultivate.v2.position.vo.FtbCultivatePositionCoursePracticeWithNameVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Title: 岗位学习课程关联练习表
 * @Author: 
 * @create: 2025-01-14
 */
public interface FtbCultivatePositionCoursePracticeMapper extends BaseMapper<FtbCultivatePositionCoursePractice> {
    
    /**
     * 根据岗位学习 ID 列表统计练习数量
     */
    List<BatchCommonCountDto> countByPositionLearnIds(@Param("positionLearnIds") List<String> positionLearnIds);

    /**
     * 根据岗位学习 ID 查询练习列表（关联技能表）
     */
    List<FtbCultivatePositionCoursePractice> listByPostLearnId(@Param("postLearnId") String postLearnId);

    /**
     * 根据岗位学习 ID 和课程 ID 列表查询练习列表（关联技能表）
     */
    List<FtbCultivatePositionCoursePractice> listByPostLearnIdAndCourseIds(@Param("postLearnId") String postLearnId, @Param("courseIds") List<String> courseIds);

    /**
     * 查询所有岗位学习课程练习列表（关联技能表）
     */
    List<FtbCultivatePositionCoursePractice> queryAllPositionLearnParacticeLists(@Param("req") Object req);

    List<FtbCultivatePositionCoursePractice> queryPositionBindItem(@Param("position") FtbCultivatePosition position, @Param("gradeId") String gradeId);

    /**
     * 根据岗位学习ID查询练习列表（包含技能点名称）
     *
     * @param postLearnId 岗位学习 ID
     * @return FtbCultivatePositionCoursePracticeWithNameVo 对象列表
     */
    List<FtbCultivatePositionCoursePracticeWithNameVo> listByPostLearnIdWithName(@Param("postLearnId") String postLearnId);

    /**
     * 根据岗位学习 ID 和课程 ID 列表查询练习列表（包含技能点名称）
     *
     * @param postLearnId 岗位学习 ID
     * @param courseIds   课程 ID 列表
     * @return FtbCultivatePositionCoursePracticeWithNameVo 对象列表
     */
    List<FtbCultivatePositionCoursePracticeWithNameVo> listByPostLearnIdAndCourseIdsWithName(
            @Param("postLearnId") String postLearnId,
            @Param("courseIds") List<String> courseIds);
}