package com.ruoyi.cs.mapper;

import com.ruoyi.cs.domain.CsAchievementInfoDetails;
import com.ruoyi.cs.domain.vo.CsAchievementInfoDetailsUserVo;
import org.apache.ibatis.annotations.Param;

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

/**
 * 科研成果-成果详情信息Mapper接口
 *
 * @author ruoyi
 * @date 2024-05-08
 */
public interface CsAchievementInfoDetailsMapper
{
    /**
     * 查询科研成果-成果详情信息
     *
     * @param infoDetailsId 科研成果-成果详情信息主键
     * @return 科研成果-成果详情信息
     */
    public CsAchievementInfoDetails selectCsAchievementInfoDetailsByInfoDetailsId(String infoDetailsId);

    /**
     * 查询科研成果-成果详情信息列表
     *
     * @param csAchievementInfoDetails 科研成果-成果详情信息
     * @return 科研成果-成果详情信息集合
     */
    public List<CsAchievementInfoDetails> selectCsAchievementInfoDetailsList(CsAchievementInfoDetails csAchievementInfoDetails);
    public List<CsAchievementInfoDetails> selectCsAchievementInfoDetailsListByGb(CsAchievementInfoDetails csAchievementInfoDetails);

    /**
     * 新增科研成果-成果详情信息
     *
     * @param csAchievementInfoDetails 科研成果-成果详情信息
     * @return 结果
     */
    public int insertCsAchievementInfoDetails(CsAchievementInfoDetails csAchievementInfoDetails);

    /**
     * 修改科研成果-成果详情信息
     *
     * @param csAchievementInfoDetails 科研成果-成果详情信息
     * @return 结果
     */
    public int updateCsAchievementInfoDetails(CsAchievementInfoDetails csAchievementInfoDetails);

    /**
     * 删除科研成果-成果详情信息
     *
     * @param infoDetailsId 科研成果-成果详情信息主键
     * @return 结果
     */
    public int deleteCsAchievementInfoDetailsByInfoDetailsId(String infoDetailsId);

    /**
     * 批量删除科研成果-成果详情信息
     *
     * @param infoDetailsIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCsAchievementInfoDetailsByInfoDetailsIds(String[] infoDetailsIds);

    /**
     * 批量新增科研成果-成果
     *
     * @param list 论文成果信息列表
     * @return
     */
    public int batchInsertCsAchievementInfoDetailsList(@Param("list") List<CsAchievementInfoDetails> list);

    /**
     * 批量修改科研成果-成果
     * @param list 预约成果信息列表
     * @return
     */
    public int batchUpdateAchievementDetailsList(List<CsAchievementInfoDetails> list);

    /**
     * 查询用户科研成果-成果详情信息列表
     *
     * @param memberUserId 用户ID
     * @return 科研成果-成果详情信息集合
     */
    public List<CsAchievementInfoDetailsUserVo> selectUserCsAchievementInfoDetailsList(String memberUserId);

    /**
     * 批量删除科研成果-成果详情信息
     *
     * @param resId 相关资源ID
     * @param achievementType 成果类型：0-论文成果，1-专利成果，2-专项成果，3-其他成果，4-预约成果，5-资源使用情况调研表
     * @return 结果
     */
    public int bachDeleteCsAchievementInfoDetailsByResId(@Param("resId") String resId, @Param("achievementType") String achievementType);

    /**
     * 查询管理端科研成果相关统计
     *
     * @param beginAt 开始时间
     * @param endAt 结束时间
     * @return 科研成果数量集合
     */
    public Map<String,Object> selectAchievementInfoDetailsStatistics(@Param("beginAt") String beginAt, @Param("endAt") String endAt);

    /**
     * 获取用户成果信息数量
     *
     * @param memberUserId 用户ID
     * @return 科研成果数量集合
     */
    public List<Map<String, Object>> getUserAchievementNum(String memberUserId);
}
