package com.microservices.pms.document.service;

import com.alibaba.fastjson2.JSONObject;
import com.microservices.common.core.web.page.GenericsTableDataInfo;
import com.microservices.pms.document.domain.PmsDocument;
import com.microservices.pms.document.domain.vo.*;

import java.util.List;

/**
 * 项目管理-文档库Service接口
 * 
 * @author wanjia
 * @date 2024-01-08
 */
public interface IPmsDocumentService 
{
    /**
     * 查询项目管理-文档库
     * 
     * @param id 项目管理-文档库主键
     * @return 项目管理-文档库
     */
    public PmsDocument selectPmsDocumentByIdAndEnterpriseId(Long id, Long enterpriseId);

    /**
     * 查询项目管理-文档库详情
     *
     * @param id           项目管理-文档库主键
     * @param enterpriseId 企业id
     * @return 项目管理-文档库详情
     */
    PmsDocumentDetailVo selectPmsDocumentDetailVoByIdAndEnterpriseId(Long id, Long enterpriseId);

    /**
     * 查询项目管理-文档库列表
     * 
     * @param pmsDocument 项目管理-文档库
     * @return 项目管理-文档库集合
     */
    public List<PmsDocument> selectPmsDocumentList(PmsDocument pmsDocument);

    /**
     * 查询项目管理-文档库列表
     */
    GenericsTableDataInfo<PmsDocumentVo> selectPmsDocumentVoList(PmsDocumentSearchVo pmsDocumentSearchVo);

    /**
     * 新增项目管理-文档库
     * 
     * @param pmsDocument 项目管理-文档库
     * @return 结果
     */
    public int insertPmsDocument(PmsDocument pmsDocument);

    /**
     * 新增附件类型文档
     *
     * @param pmsFileTypeDocumentInputVo 附件类型文档
     * @return 结果
     */
    int insertPmsFileTypeDocument(PmsFileTypeDocumentInputVo pmsFileTypeDocumentInputVo);

    /**
     * 修改项目管理-文档库
     * 
     * @param pmsDocument 项目管理-文档库
     * @return 结果
     */
    public int updatePmsDocument(PmsDocument pmsDocument);

    /**
     * 批量删除项目管理-文档库
     *
     * @param ids          需要删除的项目管理-文档库主键集合
     * @param enterpriseId 企业id
     * @return 结果
     */
    public int deletePmsDocumentByIds(Long[] ids, Long enterpriseId, Long projectId);

    /**
     * 删除项目管理-文档库信息
     * 
     * @param id 项目管理-文档库主键
     * @return 结果
     */
    public int deletePmsDocumentById(Long id, Long enterpriseId, Long projectId);

    /**
     * 导入wiki时，可选择的仓库列表
     *
     * @param optionalWikiReposSearchVo 可选择的仓库搜索对象
     * @return
     */
    JSONObject getOptionalWikiRepoList(OptionalWikiReposSearchVo optionalWikiReposSearchVo);
}
