package org.nl.system.service.dept;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.poi.ss.formula.functions.T;
import org.nl.common.domain.query.PageQuery;
import org.nl.system.service.dept.dao.SysDept;
import org.nl.system.service.dept.dto.DeptQuery;

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

/**
 * <p>
 * 部门 服务类
 * </p>
 *
 * @author generator
 * @since 2022-12-15
 */
public interface ISysDeptService extends IService<SysDept> {
    /**
     * 条件查询
     * @param query
     * @param pageQuery
     * @return
     */
    Page queryVo(DeptQuery query, PageQuery pageQuery);

    /**
     * 条件查询树结构
     * @param query
     * @return
     */
    Map<String, Object> buildTree(DeptQuery query);

    /**
     * 查询当前部门id的上级id
     * @param deptIds
     * @return
     */
    Map<String, Object> getSuperior(List<Long> deptIds);

    /**
     * 保存用户部门关系
     * @param UserId
     * @param deptIds
     */
    void saveUserDeptRelation(String UserId, Collection<String> deptIds);
    void delUserDeptRelation(String user);

    /**
     * 更新部门：同时更新节点
     * @param dept
     */
    void updateDept(SysDept dept);

    /**
     * 删除部门及子部门
     * @param deptIds
     */
    void delateDept(Set<String> deptIds);

    void createDept(SysDept dept);

}
