package cn.iocoder.yudao.module.pms.service.qhse.file;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.pms.controller.admin.qhse.file.vo.QhseFileTreePageReqVO;
import cn.iocoder.yudao.module.pms.controller.admin.qhse.file.vo.QhseFileTreeSaveReqVO;
import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeListReqVO;
import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.file.QhseFileTreeDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

/**
 * QHSE文件树 Service 接口
 *
 * @author 超级管理员
 */
public interface QhseFileTreeService {
    List<QhseFileTreeDO> getQhseTreeList(IotTreeListReqVO reqVO);
    void addDeptDeal(DeptDO deptDO);
    void updateDeptDeal(DeptDO deptDO);
    void deleteDeptDeal(String id);
    /**
     * 创建QHSE文件树
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createQhseFileTree(@Valid QhseFileTreeSaveReqVO createReqVO);

    /**
     * 更新QHSE文件树
     *
     * @param updateReqVO 更新信息
     */
    void updateQhseFileTree(@Valid QhseFileTreeSaveReqVO updateReqVO);

    /**
     * 删除QHSE文件树
     *
     * @param id 编号
     */
    void deleteQhseFileTree(Long id);

    /**
     * 获得QHSE文件树
     *
     * @param id 编号
     * @return QHSE文件树
     */
    QhseFileTreeDO getQhseFileTree(Long id);

    /**
     * 获得QHSE文件树分页
     *
     * @param pageReqVO 分页查询
     * @return QHSE文件树分页
     */
    PageResult<QhseFileTreeDO> getQhseFileTreePage(QhseFileTreePageReqVO pageReqVO);


    default List<QhseFileTreeDO> getChildTreeList(Long id) {
        return getChildTreeList(Collections.singleton(id));
    }
    List<QhseFileTreeDO> getChildTreeList(Collection<Long> ids);
    List<QhseFileTreeDO> getAllParentIds(Long classId);
    void initTree();
}
