package jnpf.cultivate.service;

import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.model.cultivate.po.position.FtbCultivatePosition;
import jnpf.model.cultivate.po.position.FtbCultivatePositionCoursePractice;
import jnpf.model.cultivate.v2.position.req.V2OtherCultivatePositionCourseForAppReq;
import jnpf.model.cultivate.v2.position.vo.FtbCultivatePositionCoursePracticeWithNameVo;

import java.util.List;
import java.util.Map;

/**
 * 岗位学习课程关联练习表服务接口
 *
 * @author xgl
 * @since 2025-01-19
 */
public interface FtbCultivatePositionCoursePracticeService extends IService<FtbCultivatePositionCoursePractice> {

    /**
     * 根据岗位学习ID列表统计练习数量
     */
    Map<String, Long> countByPositionLearnIds(List<String> positionLearnIds);

    /**
     * 根据岗位学习ID查询所有有效练习
     */
    List<FtbCultivatePositionCoursePractice> listByPostLearnId(String postLearnId);

    /**
     * 根据岗位学习ID和课程ID列表查询所有有效练习
     */
    List<FtbCultivatePositionCoursePractice> listByPostLearnIdAndCourseIds(String postLearnId, List<String> courseIds);

    List<FtbCultivatePositionCoursePractice> queryAllPositionLearnParacticeLists(V2OtherCultivatePositionCourseForAppReq v2OtherCultivatePositionCourseForAppReq);

    List<FtbCultivatePositionCoursePractice>  queryPositionBindItem(FtbCultivatePosition cultivatePosition, String gradeId);

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

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