package com.ruoyi.cs.service;

import java.util.Date;
import java.util.List;
import com.ruoyi.cs.domain.CsAnnex;
import com.ruoyi.cs.domain.CsResourceOrderApply;
import com.ruoyi.cs.domain.dto.CsAnnexAddApplyDTO;
import com.ruoyi.cs.domain.dto.CsBusinessMappingDTO;
import com.ruoyi.cs.domain.dto.CsAchievementReservationDetailsDTO;
import com.ruoyi.cs.domain.vo.CsAnnexApplyVO;

/**
 * 附件Service接口
 *
 * @author ruoyi
 * @date 2024-04-30
 */
public interface ICsAnnexService
{
    /**
     * 查询附件
     *
     * @param annexId 附件主键
     * @return 附件
     */
    public CsAnnex selectCsAnnexByAnnexId(String annexId);

    /**
     * 查询附件列表
     *
     * @param csAnnex 附件
     * @return 附件集合
     */
    public List<CsAnnex> selectCsAnnexList(CsAnnex csAnnex);

    /**
     * 新增附件
     *
     * @param csAnnex 附件
     * @return 结果
     */
    public int insertCsAnnex(CsAnnex csAnnex);

    /**
     * 修改附件
     *
     * @param csAnnex 附件
     * @return 结果
     */
    public int updateCsAnnex(CsAnnex csAnnex);

    /**
     * 批量删除附件
     *
     * @param annexIds 需要删除的附件主键集合
     * @return 结果
     */
    public int deleteCsAnnexByAnnexIds(String[] annexIds);

    /**
     * 删除附件信息
     *
     * @param annexId 附件主键
     * @return 结果
     */
    public int deleteCsAnnexByAnnexId(String annexId);

    /**
     * 批量新增资源申请表文件信息
     * @param list 资源申请表文件列表
     * @param addApply 申请资源
     * @return
     */
    public int batchInsertResourceApplyFiles(List<CsAnnexAddApplyDTO> list, CsResourceOrderApply addApply);

    /**
     * 获取申请工单的全部附件
     * @param resId 资源/工单 ID
     * @param resType 类型（0-资源，1工单)
     * @return
     */
    List<CsAnnexApplyVO> getApplyFileList(String resId, String resType);

    /**
     * 批量新增附件
     * @param list 附件列表
     * @param applyId 申请工单id
     * @param createAt 创建时间
     * @return
     */
    public int batchInsertCsAnnexList(List<CsAnnex> list, String applyId, String createAt);

    /**
     * 批量覆盖申请的申请表文件列表
     * @param applyFileList 新的申请表列表
     * @param applyId 申请资源id
     * @param applyName 申请名
     * @param resType 相关资源类型：0-资源，1-工单，2-
     * @return
     */
    public int batchCoverAnnexList(List<CsAnnexAddApplyDTO> applyFileList, String applyId, String applyName, String resType);

    /**
     * 批量修改件
     *
     * @param list 附件列表
     * @return
     */
    public int batchUpdateCsAnnexList(List<CsAnnex> list);
}
