package cn.iocoder.yudao.module.inspection.service;

import cn.iocoder.yudao.module.inspection.entity.InspectionFile;
import cn.iocoder.yudao.module.inspection.entity.TreeCommonResult;
import com.baomidou.mybatisplus.extension.service.IService;

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

/**
 * inspectionFileService接口
 *
 * @author zcy
 * @date 2023-10-13
 */
public interface IInspectionFileService extends IService<InspectionFile> {
    /**
     * 查询inspectionFile
     *
     * @param id inspectionFile主键
     * @return inspectionFile
     */
    public InspectionFile selectInspectionFileById(Long id);


    /**
     * 新增inspectionFile
     *
     * @param inspectionFile inspectionFile
     * @return 结果
     */
    public InspectionFile insertInspectionFile(InspectionFile inspectionFile);

    /**
     * 新增inspectionFile
     *
     * @param inspectionFiles inspectionFile
     * @return 结果
     */
    public boolean insertBatchInspectionFile(List<InspectionFile> inspectionFiles);

    /**
     * 修改inspectionFile
     *
     * @param inspectionFile inspectionFile
     * @return 结果
     */
    public int updateInspectionFile(InspectionFile inspectionFile);

    /**
     * 批量删除inspectionFile
     *
     * @param ids 需要删除的inspectionFile主键集合
     * @return 结果
     */
    public int deleteInspectionFileByIds(Long[] ids);

    /**
     * 删除inspectionFile信息
     *
     * @param id inspectionFile主键
     * @return 结果
     */
    public int deleteInspectionFileById(Long id);


    /**
     * 分页查询 InspectionFile 列表
     *
     * @param page           分页对象
     * @param inspectionFile 查询条件
     * @return 分页结果
     */
    List<InspectionFile> selectInspectionFileList(InspectionFile inspectionFile);

    /**
     * 根据id统计数量
     *
     * @param ids ids
     * @author 小李
     * @date 14:30 2024/12/14
     **/
    Map<Long, Long> getCountByIds(List<Long> ids);

    /**
     * 分配权限
     *
     * @param userIds 用户id集合
     * @param fileId  文件id
     * @return
     */
    Object assignAuthority(List<Long> userIds, Long fileId);

    /**
     * 根据文件id获取有权限的用户id集合
     *
     * @param fileId
     * @return
     */
    List<Long> getUserIdsByFileId(Integer fileId);

    /**
     * 根据权限查询文件集合
     *
     * @param inspectionFile
     * @return
     */
    Set<InspectionFile> selectInspectionFileListByPermissio(InspectionFile inspectionFile, Long userId);

    /**
     * 新增文件夹
     *
     * @param folderName 文件夹名称
     * @return 文件夹id
     */
    Long addFolder(String folderName, String key);
    Long addFolderForJx(String folderName, String key);

    /**
     * 查询文件夹树
     * @return 文件夹树
     */
    List<TreeCommonResult> queryTreeFolder();
    List<TreeCommonResult> queryTreeFolderForJx();
}
