package jnpf.cultivate.mapper;

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

import java.util.List;

public interface FtbCultivatePositionCourseIdentityMapper extends BaseMapper<FtbCultivatePositionCourseIdentity> {

    /**
     * 根据岗位学习 ID 列表统计鉴定数量
     */
    List<BatchCommonCountDto> countByPositionLearnIds(@Param("positionLearnIds") List<String> positionLearnIds);

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

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

    /**
     * 查询所有岗位学习鉴定列表（关联鉴定表）
     */
    List<FtbCultivatePositionCourseIdentity> queryAllPositionLearnIdentityLists();

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

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

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