package com.sundot.airport.system.service;

import java.math.BigDecimal;
import java.util.List;

import com.sundot.airport.common.core.domain.BaseLargeScreenQueryParamDto;
import com.sundot.airport.common.core.domain.SysHomeReportDetailDto;
import com.sundot.airport.system.domain.SysLargeScreenLearningGrowthDto;
import com.sundot.airport.system.domain.SysLargeScreenLearningGrowthOrganizationalSupportDto;
import com.sundot.airport.system.domain.SysLargeScreenLearningGrowthQueryParamDto;
import com.sundot.airport.system.domain.SysLearningGrowth;

/**
 * 学习成长Service接口
 *
 * @author ruoyi
 * @date 2025-10-22
 */
public interface ISysLearningGrowthService {
    /**
     * 查询学习成长
     *
     * @param id 学习成长主键
     * @return 学习成长
     */
    public SysLearningGrowth selectSysLearningGrowthById(Long id);

    /**
     * 查询学习成长列表
     *
     * @param sysLearningGrowth 学习成长
     * @return 学习成长集合
     */
    public List<SysLearningGrowth> selectSysLearningGrowthList(SysLearningGrowth sysLearningGrowth);

    /**
     * 新增学习成长
     *
     * @param sysLearningGrowth 学习成长
     * @return 结果
     */
    public int insertSysLearningGrowth(SysLearningGrowth sysLearningGrowth);

    /**
     * 修改学习成长
     *
     * @param sysLearningGrowth 学习成长
     * @return 结果
     */
    public int updateSysLearningGrowth(SysLearningGrowth sysLearningGrowth);

    /**
     * 批量删除学习成长
     *
     * @param ids 需要删除的学习成长主键集合
     * @return 结果
     */
    public int deleteSysLearningGrowthByIds(Long[] ids);

    /**
     * 删除学习成长信息
     *
     * @param id 学习成长主键
     * @return 结果
     */
    public int deleteSysLearningGrowthById(Long id);

    /**
     * 导入学习成长数据
     *
     * @param list            学习成长数据数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName        操作用户
     * @return 结果
     */
    public String importData(List<SysLearningGrowth> list, Boolean isUpdateSupport, String operName);

    /**
     * 能力画像-学习成长
     *
     * @param dto 上行参数
     * @return 能力画像-学习成长
     */
    public List<SysLargeScreenLearningGrowthDto> portrait(SysLargeScreenLearningGrowthQueryParamDto dto);

    /**
     * 能力画像-总体概览-学习成长平均分
     *
     * @param dto 大屏查询参数
     * @return 能力画像-总体概览-学习成长平均分
     */
    public BigDecimal population(BaseLargeScreenQueryParamDto dto);

    /**
     * 工作画像-组织支撑-培训测试平均分趋势图
     *
     * @param dto 大屏查询参数
     * @return 工作画像-组织支撑-培训测试平均分趋势图
     */
    public List<SysLargeScreenLearningGrowthOrganizationalSupportDto> organizationalSupport(SysLargeScreenLearningGrowthQueryParamDto dto);

    /**
     * 首页-学习成长-平均分
     *
     * @param dto 上行参数
     * @return 首页-学习成长-平均分
     */
    public BigDecimal learningGrowthAverage(BaseLargeScreenQueryParamDto dto);

    /**
     * 首页报表-培训答题分数数据
     *
     * @param dto 上行参数
     * @return 首页报表-培训答题分数数据
     */
    public SysHomeReportDetailDto learningGrowthData(BaseLargeScreenQueryParamDto dto);
}
