package com.ruoyi.cs.service;

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

import com.ruoyi.cs.domain.CsAchievementInfoDetails;
import com.ruoyi.cs.domain.dto.CsOrderApplyEditDTO;
import com.ruoyi.cs.domain.vo.*;

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

    /**
     * 查询科研成果-成果详情信息
     *
     * @param infoDetailsId 科研成果-成果详情信息主键
     * @return 科研成果-成果详情信息
     */
    public CsOrderApplyVO selectManageCsAchievementInfoDetailsByInfoDetailsId(String infoDetailsId);

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

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

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

    /**
     * 修改科研成果-成果详情信息
     *
     * @param orderDTO 科研成果-成果详情信息
     * @return 结果
     */
    public int updateManageCsAchievementInfoDetails(CsOrderApplyEditDTO orderDTO);

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

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

    /**
     * 查询论文成果列表
     *
     * @param applyId
     * @return
     */
    public List<CsAchievementPaperDetailsVO> selectPaperAchievementList(String applyId);

    /**
     * 查询专利成果列表
     *
     * @param applyId
     * @return
     */
    public List<CsAchievementPatentDetailsVO> selectPatentAchievementList(String applyId);

    /**
     * 查询奖项成果列表
     *
     * @param applyId
     * @return
     */
    public List<CsAchievementPrizeDetailsVO> selectPrizeAchievementList(String applyId);

    /**
     * 查询其他成果列表
     *
     * @param applyId
     * @return
     */
    public List<CsAchievementOtherDetailsVO> selectOtherAchievementList(String applyId);

    /**
     * 查询预约成果列表
     *
     * @param applyId
     * @return
     */
    public List<CsAchievementReservationDetailsVO> selectReservationAchievementList(String applyId);

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

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

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

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