package com.dsk.cscec.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.CbProjectFile;
import com.dsk.cscec.domain.bo.AddProjectFileUploadBo;
import com.dsk.cscec.domain.bo.DeleteCbProjectFileBo;
import com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo;
import com.dsk.system.domain.vo.SysOssVo;

import java.util.List;

/**
 * 项目成本文件表(CbProjectFile)表服务接口
 *
 * @author sxk
 * @since 2024-02-05 14:01:06
 */
public interface CbProjectFileService extends IService<CbProjectFile> {
    /**
     * 校验同一成本类型下是否存在相同文件
     *
     * @param fileUploadBo 上传信息
     */
    Boolean checkProjectFileExist(AddProjectFileUploadBo fileUploadBo);

    /**
     * 添加项目上传文件记录
     *
     * @param fileUploadBo 上传信息
     * @param oss          oss信息
     * @return 文件实体
     */
    CbProjectFile addProjectFile(AddProjectFileUploadBo fileUploadBo, SysOssVo oss);

    /**
     * 删除项目台账文件及对应数据
     *
     * @param deleteBo 待删除文件信息
     * @return 删除结果
     */
    Integer deleteProjectFile(DeleteCbProjectFileBo deleteBo);

    /**
     * 获取项目文件上传详情
     *
     * @param projectId 项目ID
     * @return 文件列表
     */
    QueryProjectFileUploadDetailVo getProjectFileUploadDetail(Long projectId);

    /**
     * 查询项目文件解析列表
     *
     * @param projectId 项目ID
     * @param cbType    成本类型(0:直接费成本、1:工料汇总、2:措施项目、3:其他项目、4:现场经费、5:成本汇总)
     * @param cbStage   成本阶段(0:标前成本、1:标后成本、2:转固成本)
     * @return
     */
    List<CbProjectFile> selectAnalysisList(Long projectId, Integer cbType, Integer cbStage);


    /**
     * 更新项目文件状态
     *
     * @param projectId 项目ID
     * @param cbType    CB型
     * @param fileId    文件ID文件ID
     * @param errmsg    RMSG
     * @return boolean
     */
    boolean UpdateProjectFileStatus(Long fileId, String errmsg, Integer status);
}
