package com.dxhy.admin.sys.service;

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

import com.baomidou.mybatisplus.extension.service.IService;
import com.dxhy.admin.sys.entity.SysDeptEntity;
import com.dxhy.common.utils.PageUtils;

/**
 * 部门管理
 *
 * @author jiaohongyang
 */
public interface SysDeptService extends IService<SysDeptEntity> {
    /**
     * 根据集团编码获取部门信息
     *
     * @param company
     *            集团编码
     * @return 部门信息
     */
    List<SysDeptEntity> queryList(String company);

    /**
     * 根据集团编码获取部门信息
     *
     * @param company
     *            集团编码
     * @return 部门信息
     */
    List<SysDeptEntity> queryList(String company,long parentId);

    /**
     * 根据集团编码获取用户关联信息
     *
     * @param company
     *            集团编码
     * @return 部门信息
     */

    List<SysDeptEntity> queryListUser(String company);

    /**
     * 根据集团编码获取部门上级信息
     *
     * @param company
     *            集团编码
     * @return 部门信息
     */

    List<SysDeptEntity> queryListParentTree(String company);

    /**
     * 根据集团编码获取部门上级信息
     *
     * @param company
     *            集团编码
     * @return 部门信息
     */

    List<SysDeptEntity> queryListParent(String company);

    /**
     * 查询子部门ID列表
     *
     * @param parentId
     *            上级部门ID
     * @return 部门id
     */
    List<Long> queryDetpIdList(Long parentId);

    /**
     * 获取子部门ID，用于数据过滤
     *
     * @param deptId
     *            部门id
     * @return 部门id
     */
    List<Long> getSubDeptIdList(Long deptId);

    /**
     * 分页查询部门信息
     *
     * @param params
     *            查询条件
     * @return 返回分页
     */
    PageUtils queryPage(Map<String, Object> params);

    /**
     * 根据集团编码和 部门类型编码查询部门信息
     *
     * @param company
     *            集团编码
     * @param orgType
     *            部门类型编码
     * @return 部门信息
     */

    List<SysDeptEntity> queryDept(String company, String orgType);

    /**
     * 保存部门信息
     *
     * @param dept
     *            部门信息
     */
    void saveDept(SysDeptEntity dept);

    /**
     * 批量保存部门信息
     *
     * @param dept
     *            部门信息
     */
    void saveDeptList(List<SysDeptEntity> dept);

    /**
     * 修改部门信息
     *
     * @param dept
     *            部门信息
     */

    void updateDept(SysDeptEntity dept);

    /**
     * 删除部门信息
     *
     * @param id
     *            部门ID
     */
    void deleteDept(Long id);

    /**
     * 批量删除部门信息
     *
     * @param dept
     *            部门信息
     */
    void deleteDeptList(List<SysDeptEntity> dept);

    /**
     * 根据部门id查询部门信息
     *
     * @param deptId
     *            部门id
     * @return 部门信息
     */
    SysDeptEntity queryDeptById(Long deptId);

    /**
     * 查询部门数量
     *
     * @param taxno
     *            税号
     * @param orgtype
     *            部门类型
     * @param company
     *            集团编码
     * @param deptId
     *            部门id
     * @param orgCode
     *            公司代码
     * @return 数量
     */
    Integer queryDeptTaxNo(String taxno, String orgtype, String company, Long deptId, String orgCode);

    /**
     * 查询供应商信息
     *
     * @param params
     *            查询条件
     * @return 分页信息
     */
    PageUtils queryVenderDept(Map<String, Object> params);

    /**
     * 根据上级id获取部门信息
     * 
     * @param parentId
     *            部门上级id
     * @return 部门信息列表
     */
    List<SysDeptEntity> queryDeptParentId(Long parentId);

    /**
     * 根据集团编码和 税号查询部门信息
     *
     * @param company
     *            集团编码
     * @param taxno
     *            部门类型编码
     * @return 部门信息
     */

    SysDeptEntity queryDeptTaxno(String company, String taxno);

    List<String> getOrgCodeList(Long userId);
}
