package com.bonus.material.archives.service;

import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.archives.domain.ArchivesDetails;
import com.bonus.material.archives.domain.ArchivesInfo;
import com.bonus.material.archives.domain.ArchivesVo;
import com.bonus.material.archives.domain.ElcSignatureInfo;
import com.bonus.material.basic.domain.BmProject;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 电子档案管理Service接口
 * @Author ma_sh
 * @create 2024/12/26 9:25
 */
public interface ArchivesService {

    /**
     * 上传档案工程信息类型的附件
     * @param fromProjectFileType 上传文件所属工程文件类型(领料单、退料单、业务联系单)
     * @param fileName 文件名称
     * @param filePath 文件地址
     * @return 结果
     */
    AjaxResult uploadArchivesProjectPdf(String fromProjectFileType, String fileName, String filePath, Integer projectId);

    /**
     * 获取文件大小（MB格式返回）
     * @param multipartFile 文件
     * @return 示例（返回1.2）
     */
    String getFileSizeInMb(MultipartFile multipartFile);

    /**
     * 工程新增事件--处理档案库对应数据
     */
    AjaxResult projectAddEventCope(BmProject projectInfo);

    /**
     * 获取电子档案分类树
     * @param archiveInfo
     * @return
     */
    AjaxResult getTypeList(ArchivesInfo archiveInfo);

    /**
     * 新增电子档案分类树
     * @param archiveInfo
     * @return
     */
    AjaxResult add(ArchivesInfo archiveInfo);

    /**
     * 修改电子档案分类树
     * @param archiveInfo
     * @return
     */
    AjaxResult edit(ArchivesInfo archiveInfo);

    /**
     * 删除电子档案分类树
     * @param archiveInfo
     * @return
     */
    AjaxResult deleteById(ArchivesInfo archiveInfo);

    /**
     * 获取电子档案详情信息
     * @param archivesDetails
     * @return
     */
    List<ArchivesDetails> getDetailsList(ArchivesDetails archivesDetails);

    /**
     * 新增电子档案右侧类型
     * @param archivesVo
     * @return
     */
    AjaxResult addDetails(ArchivesVo archivesVo);

    /**
     * 修改电子档案右侧详情
     * @param archivesDetails
     * @return
     */
    AjaxResult updateDetails(ArchivesDetails archivesDetails);

    /**
     * 删除电子档案右侧详情
     * @param archivesVo
     * @return
     */
    AjaxResult deleteByDetails(ArchivesVo archivesVo);

    /**
     * 下载电子档案右侧详情
     * @param archivesVo
     *
     * @param request
     * @param response
     * @return
     */
    AjaxResult download(ArchivesVo archivesVo, HttpServletRequest request, HttpServletResponse response);

    /**
     * 更新电子档案电子签名
     * @param info
     * @return
     */
    AjaxResult updateSign(ElcSignatureInfo info);

    /**
     * 获取电子档案电子签名
     * @param info
     * @return
     */
    AjaxResult getSign(ElcSignatureInfo info);
}
