package jnpf.cultivate.v2.util;

import jnpf.cultivate.v2.service.V2CultivateBatchQueryService;
import jnpf.entity.cultivate.CultivateIdentifyApply;
import jnpf.model.cultivate.po.certificate.FtbCertificateUserEntity;
import jnpf.model.cultivate.po.exam.FtbCultivateExamUser;
import jnpf.model.cultivate.po.position.FtbCultivatePositionCourceLearning;
import jnpf.model.cultivate.v2.statistics.V2BatchQueryResult;
import jnpf.model.cultivate.v2.statistics.V2UserLearningStatusResult;

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

/**
 * 培养模块批量查询工具类
 * 提供通用的批量查询方法，适用于任务和岗位学习等多个场景
 */
public class CultivateBatchQueryUtil {


    /**
     * 使用V2批量查询服务进行批量查询
     * 适用于需要使用统一服务接口的场景
     *
     * @param courseIds           课程ID列表
     * @param examIds             考试ID列表
     * @param identityIds         鉴定ID列表
     * @param certificateIds      证书ID列表
     * @param practiceBusinessIds 练习业务ID列表
     * @param isSelectNoDelete    0-查询有效的 1-查询删除的  null 查询全部
     * @param v2BatchQueryService V2批量查询服务
     * @return 批量查询结果
     */
    public static V2BatchQueryResult batchQueryBasicInfoWithV2Service(
            List<String> courseIds,
            List<String> examIds,
            List<String> identityIds,
            List<String> certificateIds,
            List<String> practiceBusinessIds,
            Integer isSelectNoDelete,
            V2CultivateBatchQueryService v2BatchQueryService) {

        // 使用V2批量查询服务
        return v2BatchQueryService.batchQueryAllByIds(
                courseIds, examIds, identityIds, certificateIds, practiceBusinessIds, isSelectNoDelete);
    }


    /**
     * 使用V2批量查询服务查询用户学习情况（按具体ID列表）
     *
     * @param userId              用户ID列表
     * @param courseIds           课程ID列表
     * @param examIds             考试ID列表
     * @param identifyIds         鉴定ID列表
     * @param certificateIds      证书ID列表
     * @param skillIds            技能ID列表
     * @param v2BatchQueryService V2批量查询服务
     * @return 用户学习情况批量查询结果
     */
    public static V2UserLearningStatusResult batchQueryUserLearningStatusWithSpecificIds(
            String userId,
            List<String> courseIds,
            List<String> examIds,
            List<String> identifyIds,
            List<String> certificateIds,
            List<String> skillIds,
            V2CultivateBatchQueryService v2BatchQueryService,
            Integer source,
            String sourceId
    ) {

        // 使用V2批量查询服务查询用户学习情况
        Map<String, FtbCultivatePositionCourceLearning> userCourseMap = v2BatchQueryService.batchQueryUserCourseLearnStatus(userId, courseIds);
        Map<String, FtbCultivateExamUser> userExamMap = v2BatchQueryService.batchQueryUserExamStatus(userId, examIds);
        Map<String, CultivateIdentifyApply> userIdentificationMap = v2BatchQueryService.batchQueryUserIdentificationStatus(userId, identifyIds,source, sourceId);
        Map<String, FtbCertificateUserEntity> userCertificateMap = v2BatchQueryService.batchQueryUserCertificateStatus(userId, certificateIds);
        Map<String, List<String>> userSkillMap = v2BatchQueryService.batchQueryUserSkillStatus(userId, skillIds);

        return new V2UserLearningStatusResult(userCourseMap, userExamMap, userIdentificationMap, userCertificateMap, userSkillMap);
    }
}