package com.mosty.base.service;

import com.mosty.base.model.dto.base.GetDeptListDTO;
import com.mosty.base.model.dto.base.SysDeptDTO;
import com.mosty.base.model.query.base.GetSysDeptListQuery;
import com.mosty.base.model.query.base.SysDeptQuery;
import com.mosty.base.model.vo.base.DeptInfoVo;
import com.mosty.common.core.business.entity.SysDept;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @author dw
 * @since 2022/8/1
 **/
public interface DeptService {

    @ApiOperation("根据部门deptid获取所属分县局、所属地市州")
    DeptInfoVo getOrgByDeptId(String deptid);

    @ApiOperation("查询所有的部门信息")
    List<DeptInfoVo> getDeptAll();

    @ApiOperation("查询部门下的所有子部门信息,排除一些部门")
    List<DeptInfoVo> getChildDept(GetDeptListDTO dto);

    @ApiOperation("根据部门orgcode获取所属分县局、所属地市州")
    DeptInfoVo getOrgByOrgcode(String orgcode);

    @ApiOperation("查询分县局下的派出所信息")
    List<SysDeptDTO> getPcsByFxjdm(String orgcode);

    @ApiOperation("获取部门信息")
    List<SysDept> getOrg(SysDeptQuery deptQuery);

    @ApiOperation("获取组织机构信息列表")
    List<SysDept> getOrganizationList(GetSysDeptListQuery query);

    @ApiOperation("重置部门的部门ROOT")
    void resetRootPath();


    @ApiOperation("获取用户的查询条件")
    String getSsbm(String ssbmdm, String isChild);

    @ApiOperation("根据类型查询所有的部门")
    List<SysDept> getDeptByType(String type, String ssbmdm);

    @ApiOperation("查询父级部门")
    List<String> getParentOrgCode(String ssbmdm);

    @ApiOperation("查询父级部门")
    SysDept getParentDept(String ssbmid);

    @ApiOperation("查询部门信息")
    SysDept getSysDeptBySsbmdm(String ssbmdm);

    @ApiOperation("同步组织机构代码")
    void tbZjjgDm();

    @ApiOperation("同步组织机构人员")
    void tbZzjgRy();
}
