# 组织

##  组织新增或更新
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.addOrUpdate(List<OrgParam> paramList)
ID参数为空时，执行新增；反之，执行更新。

**参数说明**

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | ID | Long | 否 | ID参数为空时，执行组织新增；反之，执行更新
| customOrgId | 自定义ID | Long | 否 | 自定义ID参数为空才自动生成ID
| number | 组织编码 | String | 否 | 根据自定义编码新增，否则根据编码规则生成
| name | 组织名称 | String | 否 | 新增是不能为空
| parentId | 上级ID | Long | 否 | 新增时必录；修改时可以为空
| orgPatternId | 组织形态ID | Long | 否 | 默认ID为4L（部门）
| multiViewMap | 多职能参数 | Map | 否 | 支持一次更新多种业务视图方案；键为视图方案编码（参照本页参数说明的[OrgViewType](#orgviewtype)），值为OrgDutyView对象
| propertyMap | 组织属性 | Map | 否 | 键为组织实体（bos_org）的字段标识，值为相应字段的值；支持扩展字段
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();

    /* 新增单个视图方案的组织 */
    OrgParam param = new OrgParam();
    param.setParentId(ROOT_ORG_ID);
    param.setName(NAME);
    param.setNumber(NUMBER);
    param.setOrgPatternId(1);
    param.setDuty(OrgViewType.Produce);
    // 设置组织属性
    Map<String, Object> proMap = new HashMap<>();
    proMap.put("uniformsocialcreditcode", "add0001");
    param.setPropertyMap(proMap);
    paramList.add(param);
   
    /* 新增多视图方案的组织 */
    param = new OrgParam();
    param.setName(NAME);
    param.setNumber(NUMBER);
    param.setOrgPatternId(1);
    // 设置多视图参数
    TreeMap<String, OrgDutyView> multiViewMap = new TreeMap<>();
    OrgDutyView dutyView = new OrgDutyView();
    dutyView.setParentId(ROOT_ORG_ID);
    // 采购组织
    multiViewMap.put(OrgViewType.Produce, dutyView);
    // 每种视图方案的参数对象不能用同一个，需要单独实例化
    dutyView = new OrgDutyView();
    dutyView.setParentId(ROOT_ORG_ID);
    // 资产组织
    multiViewMap.put(OrgViewType.Asset, dutyView);
    param.setMultiViewMap(multiViewMap);
    paramList.add(param);

    /* 设置自定义ID，并新增多视图方案的组织 */
    param = new OrgParam();
    param.setCustomId(1234567890L);
    param.setName(NAME);
    param.setNumber(NUMBER);
    param.setOrgPatternId(1);
    // 设置多视图参数
    TreeMap<String, OrgDutyView> multiViewMap = new TreeMap<>();
    OrgDutyView dutyView = new OrgDutyView();
    dutyView.setParentId(ROOT_ORG_ID);
    multiViewMap.put(OrgViewType.Produce, dutyView);
    param.setMultiViewMap(multiViewMap);
    paramList.add(param);

    /* 修改多视图方案的组织 */
    param = new OrgParam();
    param.setId(1234567891L);
    param.setName(NAME);
    param.setNumber(NUMBER);
    param.setOrgPatternId(1);
    // 设置多视图参数
    TreeMap<String, OrgDutyView> multiViewMap = new TreeMap<>();
    OrgDutyView dutyView = new OrgDutyView();
    dutyView.setParentId(ROOT_ORG_ID);
    multiViewMap.put(OrgViewType.Produce, dutyView);
    param.setMultiViewMap(multiViewMap);
    paramList.add(param);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.addOrUpdate(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 组织新增
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.add(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| customOrgId | 自定义ID | Long | 否 | 自定义ID参数为空才自动生成ID
| number | 组织编码 | String | 否 | 根据自定义编码新增，否则根据编码规则生成
| name | 组织名称 | String | 是 | 
| parentId | 上级ID | Long | 是 | 
| orgPatternId | 组织形态ID | Long | 否 | 默认ID为4L（部门）
| multiViewMap | 多职能参数 | Map | 否 | 支持一次更新多种业务视图方案；键为视图方案编码（参照本页参数说明的[OrgViewType](#orgviewtype)），值为OrgDutyView对象
| propertyMap | 组织属性 | Map | 否 | 键为组织实体（bos_org）的字段标识，值为相应字段的值；支持扩展字段
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();

    /* 新增单个视图方案的组织 */
    OrgParam param = new OrgParam();
    param.setParentId(ROOT_ORG_ID);
    param.setName(NAME);
    param.setNumber(NUMBER);
    param.setOrgPatternId(1);
    param.setDuty(OrgViewType.Produce);
    // 设置组织属性
    Map<String, Object> proMap = new HashMap<>();
    proMap.put("uniformsocialcreditcode", "add0001");
    param.setPropertyMap(proMap);
    paramList.add(param);
   
    /* 新增多视图方案的组织 */
    param = new OrgParam();
    param.setName(NAME);
    param.setNumber(NUMBER);
    param.setOrgPatternId(1);
    // 设置多视图参数
    TreeMap<String, OrgDutyView> multiViewMap = new TreeMap<>();
    OrgDutyView dutyView = new OrgDutyView();
    dutyView.setParentId(ROOT_ORG_ID);
    // 采购组织
    multiViewMap.put(OrgViewType.Produce, dutyView);
    // 每种视图方案的参数对象不能用同一个，需要单独实例化
    dutyView = new OrgDutyView();
    dutyView.setParentId(ROOT_ORG_ID);
    // 资产组织
    multiViewMap.put(OrgViewType.Asset, dutyView);
    param.setMultiViewMap(multiViewMap);
    paramList.add(param);

    /* 设置自定义ID，并新增多视图方案的组织 */
    param = new OrgParam();
    param.setCustomId(1234567890L);
    param.setName(NAME);
    param.setNumber(NUMBER);
    param.setOrgPatternId(1);
    // 设置多视图参数
    TreeMap<String, OrgDutyView> multiViewMap = new TreeMap<>();
    OrgDutyView dutyView = new OrgDutyView();
    dutyView.setParentId(ROOT_ORG_ID);
    multiViewMap.put(OrgViewType.Produce, dutyView);
    param.setMultiViewMap(multiViewMap);
    paramList.add(param);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.add(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 组织修改
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.update(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | ID | Long | 是 | 
| number | 组织编码 | String | 否 | 
| name | 组织名称 | String | 否 | 
| parentId | 上级ID | Long | 否 | 
| orgPatternId | 组织形态ID | Long | 否 |
| multiViewMap | 多职能参数 | Map | 否 | 支持一次更新多种业务视图方案；键为视图方案编码（参照本页参数说明的[OrgViewType](#orgviewtype)），值为OrgDutyView对象
| propertyMap | 组织属性 | Map | 否 | 键为组织实体（bos_org）的字段标识，值为相应字段的值；支持扩展字段
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();

    /* 新增单个视图方案的组织 */
    OrgParam param = new OrgParam();
    param.setId(123456780L);
    param.setName(NAME);
    param.setNumber(NUMBER);
    param.setOrgPatternId(1);
    param.setDuty(OrgViewType.Produce);
    // 设置组织属性
    Map<String, Object> proMap = new HashMap<>();
    proMap.put("uniformsocialcreditcode", "add0001");
    param.setPropertyMap(proMap);
    // 设置多视图参数
    TreeMap<String, OrgDutyView> multiViewMap = new TreeMap<>();
    OrgDutyView dutyView = new OrgDutyView();
    // 组织移动时，设置新的上级ID
    dutyView.setParentId(ROOT_ORG_ID);
    // 采购组织
    multiViewMap.put(OrgViewType.Produce, dutyView);
    // 每种视图方案的参数对象不能用同一个，需要单独实例化
    dutyView = new OrgDutyView();
    dutyView.setParentId(ROOT_ORG_ID);
    // 资产组织
    multiViewMap.put(OrgViewType.Asset, dutyView);
    param.setMultiViewMap(multiViewMap);
    paramList.add(param);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.update(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 组织启用
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.enable(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | ID | Long | 是 | 
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();
    OrgParam param = new OrgParam();
    param.setId(123456780L);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.enable(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 组织禁用
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.disable(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | ID | Long | 是 | 
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();
    OrgParam param = new OrgParam();
    param.setId(123456780L);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.disable(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 组织封存
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.freeze(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | ID | Long | 是 | 
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();
    OrgParam param = new OrgParam();
    param.setId(123456780L);
    // 是否同步云之家
    param.setYzjSync(true);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.freeze(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 组织解封
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.unFreeze(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | ID | Long | 是 | 
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();
    OrgParam param = new OrgParam();
    param.setId(123456780L);
    // 是否同步云之家
    param.setYzjSync(true);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.unFreeze(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 组织增加职能类型
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.addDuty(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | ID | Long | 是 | 
| parentId | 上级ID | Long | 否 | 单视图新增时不能为空
| multiViewMap | 多职能参数 | Map | 否 | 支持一次更新多种业务视图方案；键为视图方案编码（参照本页参数说明的[OrgViewType](#orgviewtype)），值为OrgDutyView对象
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();

    /* 新增单个视图方案的组织 */
    OrgParam param = new OrgParam();
    param.setId(123456780L);
    param.setDuty(OrgViewType.Produce);
    paramList.add(param);

    // 设置多视图参数
    param = new OrgParam();
    param.setId(123456781L);
    TreeMap<String, OrgDutyView> multiViewMap = new TreeMap<>();
    OrgDutyView dutyView = new OrgDutyView();
    // 组织移动时，设置新的上级ID
    dutyView.setParentId(ROOT_ORG_ID);
    multiViewMap.put(OrgViewType.Produce, dutyView);
    param.setMultiViewMap(multiViewMap);
    paramList.add(param);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.addDuty(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```


## 组织删除职能类型
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.deleteDuty(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | ID | Long | 是 | 
| multiViewMap | 多职能参数 | Map | 否 | 支持一次更新多种业务视图方案；键为视图方案编码（参照本页参数说明的[OrgViewType](#orgviewtype)），值为OrgDutyView对象
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();

    /* 新增单个视图方案的组织 */
    OrgParam param = new OrgParam();
    param.setId(123456780L);
    param.setDuty(OrgViewType.Produce);
    paramList.add(param);

    // 设置多视图参数
    param = new OrgParam();
    param.setId(123456781L);
    TreeMap<String, OrgDutyView> multiViewMap = new TreeMap<>();
    OrgDutyView dutyView = new OrgDutyView();
    // 组织移动时，设置新的上级ID
    dutyView.setParentId(ROOT_ORG_ID);
    multiViewMap.put(OrgViewType.Produce, dutyView);
    param.setMultiViewMap(multiViewMap);
    paramList.add(param);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.deleteDuty(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```


## 组织启用HR
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.enableHR(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | ID | Long | 是 | 
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();
    OrgParam param = new OrgParam();
    param.setId(123456780L);
    paramList.add(param);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.enableHR(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 组织禁用HR
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.disableHR(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | ID | Long | 是 | 
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();
    OrgParam param = new OrgParam();
    param.setId(123456780L);
    paramList.add(param);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.disableHR(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 组织禁用职能
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.disableDuty(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | 组织ID | Long | 是 | 
| duty | 组织视图方案编码 | String | 是 | 
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();
    OrgParam param = new OrgParam();
    param.setId(123456780L);
    param.setDuty(OrgViewType.Admin);
    paramList.add(param);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.disableDuty(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 组织启用职能
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.enableDuty(List<OrgParam> paramList)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgParam](#orgparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| id | 组织ID | Long | 是 | 
| duty | 组织视图方案编码 | String | 是 | 
	
**返回值**

执行结果回填到参数对象[OrgParam](#orgparam)，须判断是否执行成功标志success，失败时错误信息通过参数对象OrgParam的msg属性获取。


**代码示例**
```java
    List<OrgParam> paramList = new ArrayList<>();
    OrgParam param = new OrgParam();
    param.setId(123456780L);
    param.setDuty(OrgViewType.Admin);
    paramList.add(param);

    // 业务调用可以参照接口名，以下举例说明微服务调用方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    orgService.enableDuty(paramList);

    // 判断执行结果
    for (OrgParam result : paramList) {
        if (!result.isSuccess()) {
            this.getView().showTipNotification(result.getMsg());
            break;
        }
    }
```

## 获取根组织ID
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.getRootOrgId()

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| long | 根组织ID | 



**代码示例**
```java
    long rootOrgId = OrgUnitServiceHelper.getRootOrgId();
```


## 获取组织树的根节点（Map）
##### 接口名：getTreeRootNodeMapById(OrgTreeParam param)
构造组织树的根节点信息；可以指定根节点ID；返回Map对象。

**参数说明**

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgTreeParam](#orgtreeparam)

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| param | 组织树参数对象 | OrgTreeParam | 是 | 
	
**返回值**

Map详细信息

| 字段 | 说明
| -------------- | -------------- |
| id | 组织ID | 
| parentid | 上级组织ID | 
| number | 组织编码 | 
| name | 组织名称 | 
| text | 组织名称 | 
| longnumber | 组织长编码 | 
| isleaf | 是否叶子节点 | 

**代码示例**
```java
   OrgTreeParam param = new OrgTreeParam();
   param.setOrgViewNumber(OrgViewType.Admin);
   IOrgService orgService = ServiceFactory.getService(IOrgService.class);
   Map<String, Object> rootInfoMap = orgService.getTreeRootNodeMapById(param);
```

## 获取组织树的根节点（TreeNode）
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.getTreeRootNodeById(OrgTreeParam param)
构造组织树的根节点信息；可以指定根节点ID；返回TreeNode对象。

**参数说明**

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgTreeParam](#orgtreeparam)

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| param | 组织树参数对象 | OrgTreeParam | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| TreeNode | 根节点信息 | 

**代码示例**
```java
   OrgTreeParam param = new OrgTreeParam();
   param.setOrgViewNumber(OrgViewType.Admin);
   TreeNode rootNode = OrgUnitServiceHelper.getTreeRootNodeById(param);
```

## 获取组织树下级（Map）
##### 接口名：getTreeChildrenMap(OrgTreeParam param)
构造组织树的节点信息；可以自定义构建组织的条件、范围；返回Map的列表对象。默认根据上级获取直接下级。

**参数说明**

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgTreeParam](#orgtreeparam)

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| param | 组织树参数对象 | OrgTreeParam | 是 | 
	
**返回值**

Map详细信息

| 字段 | 说明
| -------------- | -------------- |
| id | 组织ID | 
| parentid | 上级组织ID | 
| number | 组织编码 | 
| name | 组织名称 | 
| text | 组织名称 | 
| longnumber | 组织长编码 | 
| isleaf | 是否叶子节点 | 

**代码示例**
```java
   OrgTreeParam param = new OrgTreeParam();
   param.setOrgViewNumber(OrgViewType.Admin);
   IOrgService orgService = ServiceFactory.getService(IOrgService.class);
   List<Map<String, Object>> rootInfoMap = orgService.getTreeChildrenMap(param);
```

## 获取组织树下级（TreeNode）
##### 接口名：kd.bos.servicehelper.org.OrgUnitServiceHelper.getTreeChildren(OrgTreeParam param)
构造组织树的节点信息；可以自定义构建组织的条件、范围；返回TreeNode的列表对象。默认根据上级获取直接下级。

**参数说明**

列表为部分必须、常用或者重要的参数，详情请查看参数对象[OrgTreeParam](#orgtreeparam)

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| param | 组织树参数对象 | OrgTreeParam | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织树点TreeNode的列表对象 | 

**代码示例**
```java
   OrgTreeParam param = new OrgTreeParam();
   param.setOrgViewNumber(OrgViewType.Admin);
   List<TreeNode> rootInfoMap = OrgUnitServiceHelper.getTreeChildren(param);
```

## 获取直接上级组织
##### 接口名：Map<Long, Long> getDirectSuperiorOrg(String viewSchemaNumber, List<Long> orgIds)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| viewSchemaNumber | 组织视图方案编码 | String | 是 | 
| orgIds | 组织ID列表 | List<Long> | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| Map | <组织ID - 上级组织ID> | 

**代码示例**
```java
    // 通用帮助服务
     Map<Long, Long> orgParentMap = OrgUnitServiceHelper.getDirectSuperiorOrg(OrgViewType.Admin, Collections.singletonList(100000L));
```

## 获取所有上级组织
##### 接口名：List<Long> getAllSuperiorOrgs(String orgFunction, long orgId)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| orgFunction | 视图方案编码 | String | 是 | 
| orgId | 组织ID | long | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 上级组织ID列表 | 

**代码示例**
```java
    // 微服务方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> parentIds = orgService.getAllSuperiorOrgs(OrgViewType.Admin, 12345678L);

    // 通用帮助服务
    List<Long> parentIds = OrgUnitServiceHelper.getAllSuperiorOrgs(OrgViewType.Admin, 12345678L);
```

## 判断组织是否为上下级关系
##### 接口名：boolean isParentOrg(String viewNumber, long parentId, long orgId)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| viewNumber | 视图方案编码 | String | 是 | 
| parentId | 上级组织ID | long | 是 | 
| orgId | 组织ID | long | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| boolean | 是否上下级关系 | 

**代码示例**
```java
    // 微服务方式
    long parentId = 100000L;
    long orgId = 100001L
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    boolean isParent = orgService.isParentOrg(OrgViewType.Admin, parentId, orgId);

    // 通用帮助服务
    boolean isParent = OrgUnitServiceHelper.isParentOrg(OrgViewType.Admin, parentId, orgId);
```

## 获取所有组织（根据视图编码）
##### 接口名：List<Long> getAllOrg(String viewSchemaNumber)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| viewSchemaNumber | 视图方案编码 | String | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织ID列表 | 

**代码示例**
```java
    // 微服务方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> orgIds = orgService.getAllOrg(OrgViewType.Admin);

    // 通用帮助服务
    List<Long> orgIds = OrgUnitServiceHelper.getAllOrg(OrgViewType.Admin);
```

## 获取所有组织（根据视图ID）
##### 接口名：List<Long> getAllOrgByViewId(long viewId, boolean isIncludeDisable)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| viewId | 视图方案ID | Long | 是 | 
| isIncludeDisable | 是否包禁用的组织 | boolean | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织ID列表 | 

**代码示例**
```java
    // 微服务方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> orgIds = orgService.getAllOrgByViewId(1L, false);

    // 通用帮助服务
    List<Long> orgIds = OrgUnitServiceHelper.getAllOrgByViewId(1L, false);
```

## 获取所有组织（根据视图编码）
##### 接口名：List<Long> getAllOrgByViewNumber(String viewSchemaNumber, boolean isIncludeDisable)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| viewSchemaNumber | 视图方案编码 | String | 是 | 
| isIncludeDisable | 是否包禁用的组织 | boolean | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织ID列表 | 

**代码示例**
```java
    // 微服务方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> orgIds = orgService.getAllOrgByViewNumber(OrgViewType.Admin, false);

    // 通用帮助服务
    List<Long> orgIds = OrgUnitServiceHelper.getAllOrgByViewNumber(OrgViewType.Admin, false);
```

## 获取所有下级组织（根据视图ID）
##### 接口名：List<Long> getAllSubordinateOrgs(Long viewId, List<Long> orgIds, boolean isIncludeCurOrg)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| viewId | 视图方案ID | Long | 是 | 
| orgIds | 组织ID列表 | List | 是 | 
| isIncludeCurOrg | 返回结果是否包含参数的组织 | boolean | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织ID列表 | 

**代码示例**
```java
    // 微服务方式
    List<Long> orgIds = new ArrayList<>(1);
    orgIds.add(100000L);
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> subOrgIds = orgService.getAllSubordinateOrgs(1L, orgIds, true);

    // 通用帮助服务
    List<Long> subOrgIds = OrgUnitServiceHelper.getAllSubordinateOrgs(1L, orgIds, true);
```

## 获取所有下级组织（根据视图编码）
##### 接口名：List<Long> getAllSubordinateOrgs(String viewSchemaNumber, List<Long> orgIds, boolean isIncludeCurOrg)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| viewSchemaNumber | 视图方案编码 | String | 是 | 
| orgIds | 组织ID列表 | List | 是 | 
| isIncludeCurOrg | 返回结果是否包含参数的组织 | boolean | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织ID列表 | 

**代码示例**
```java
    // 微服务方式
    List<Long> orgIds = new ArrayList<>(1);
    orgIds.add(100000L);
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> subOrgIds = orgService.getAllSubordinateOrgs(OrgViewType.Admin, orgIds, true);

    // 通用帮助服务
    List<Long> subOrgIds = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.Admin, orgIds, true);
```

## 过滤拥有相应职能的组织
##### 接口名：List<Long> filterOrgDuty(List<Long> orgIds, String orgViewNumber)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| orgIds | 组织ID列表 | List | 是 | 
| orgViewNumber | 视图方案编码 | String | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织ID列表 | 

**代码示例**
```java
    // 微服务方式
    List<Long> orgIds = new ArrayList<>(1);
    orgIds.add(100000L);
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> viewOrgIds = orgService.filterOrgDuty(orgIds, OrgViewType.Admin);

    // 通用帮助服务
    List<Long> viewOrgIds = OrgUnitServiceHelper.filterOrgDuty(orgIds, OrgViewType.Admin);
```

## 检查组织是否拥有指定职能类型
##### 接口名：boolean checkOrgFunction(Long orgID, String orgFunction)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| orgID | 组织ID | long | 是 | 
| orgFunction | 职能类型编码 | String | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| boolean |  | 

**代码示例**
```java
    // 通用帮助服务
    boolean hasAdminBiz = OrgUnitServiceHelper.checkOrgFunction(100000L, OrgViewType.Admin);
```

## 获取指定层级的所有组织
##### 接口名：List<Long> getOrgByLevel(String orgViewNumber, int level, boolean includeDisable, boolean includeFreeze)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| orgViewNumber | 视图方案编码 | String | 是 | 
| level | 组织层级 | int | 是 | 
| includeDisable | 是否包含禁用组织 | boolean | 是 | 
| includeFreeze | 是否包含封存组织 | boolean | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织ID列表 | 

**代码示例**
```java
    // 微服务方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> orgIds = orgService.getOrgByLevel(OrgViewType.Admin, 3, false, false);

    // 通用帮助服务
    List<Long> orgIds = OrgUnitServiceHelper.getOrgByLevel(OrgViewType.Admin, 3, false, false);
```

## 获取全部受托组织
##### 接口名：List<Long> getAllToOrg(String fromOrgType, String toOrgType, Long fromOrgId, boolean isIncludeFromOrgSelf)
列表第一个为业务单元间协作配置的默认受托组织

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| fromOrgType | 委托组织的职能类型 | String | 否 | 
| toOrgType | 受托组织的职能类型 | String | 是 | 
| fromOrgId | 委托组织ID | Long | 是 | 
| isIncludeFromOrgSelf | 是否包含委托组织本身 | boolean | 是 | 为true时：如果委托组织本身具有受托组织的职能类型，则返回结果包含委托组织本身
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织ID列表 | 

**代码示例**
```java
    // 微服务方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> orgIds = orgService.getAllToOrg(OrgViewType.Inventory, OrgViewType.Accounting, 100000L, false);

    // 通用帮助服务
    List<Long> orgIds = OrgUnitServiceHelper.getAllToOrg(OrgViewType.Inventory, OrgViewType.Accounting, 100000L, false);
```

## 获取一个受托组织
##### 接口名：Long getToOrg(String fromOrgType, String toOrgType, Long fromOrgId, boolean isIncludeFromOrgSelf)
默认返回业务单元间协作配置的默认受托组织，否则获取受托组织列表中组织编码最小的一个作为返回值。

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| fromOrgType | 委托组织的职能类型 | String | 否 | 
| toOrgType | 受托组织的职能类型 | String | 是 | 
| fromOrgId | 委托组织ID | Long | 是 | 
| isIncludeFromOrgSelf | 是否包含委托组织本身 | boolean | 是 | 为true时：如果委托组织本身具有受托组织的职能类型，则返回结果包含委托组织本身
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| Long | 组织ID | 

**代码示例**
```java
    // 微服务方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    Long orgId = orgService.getToOrg(OrgViewType.Inventory, OrgViewType.Accounting, 100000L, false);

    // 通用帮助服务
    Long orgId = OrgUnitServiceHelper.getToOrg(OrgViewType.Inventory, OrgViewType.Accounting, 100000L, false);
```

## 获取全部委托组织
##### 接口名：List<Long> getFromOrgs(String toOrgType, Long toOrgId, String fromOrgType, boolean isIncludeToOrgSelf) 
列表第一个为业务单元间协作配置的默认委托组织

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| toOrgType | 受托组织的职能类型 | String | 是 | 
| toOrgId | 受托组织ID | Long | 是 | 
| fromOrgType | 委托组织的职能类型 | String | 否 | 
| isIncludeToOrgSelf | 是否包含受托组织本身 | boolean | 是 | 为true时：如果受托组织本身具有委托组织的职能类型，则返回结果包含委托组织本身
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织ID列表 | 

**代码示例**
```java
    // 微服务方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> orgIds = orgService.getFromOrgs(OrgViewType.Accounting, 100000L, OrgViewType.Inventory, false);

    // 通用帮助服务
    List<Long> orgIds = OrgUnitServiceHelper.getFromOrgs(OrgViewType.Accounting, 100000L, OrgViewType.Inventory, false);
```

## 获取业务单元分配部门的组织
##### 接口名：List<Long> getAdminOrgRelation(List<Long> orgIds, boolean isReturnAdminOrg) 

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| orgIds | 组织列表 | List | 是 | 
| isReturnAdminOrg | 是否返回行政组织 | boolean | 是 | true；根据业务单元获取行政组织；false：根据行政组织获取业务单元
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织ID列表 | 

**代码示例**
```java
    List<Long> orgIds = new ArrayList<>();
    orgIds.add(100000L);
    // 微服务方式
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    List<Long> relationOrgIds = orgService.getAdminOrgRelation(orgIds, true);

    // 通用帮助服务
    List<Long> relationOrgIds = OrgUnitServiceHelper.getAdminOrgRelation(orgIds, false);
```

## 保存组织视图方案
##### 接口名： saveOrgViewSchema(ViewSchemaParam param)

列表为部分必须、常用或者重要的参数，详情请查看参数对象[ViewSchemaParam](#viewschemaparam)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| param | 视图方案编码 | ViewSchemaParam | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| [OrgApiResult](#orgapiresult) | 执行结果 | 

**代码示例**
```java
    // 微服务方式
    ViewSchemaParam param = new ViewSchemaParam();
    param.setNumber("1001");
    param.setName("自定义核算视图01");
    param.setViewType(OrgViewType.Accounting);
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    OrgApiResult result = orgService.saveOrgViewSchema(param);
    if (!result.isSuccess()) {
        this.getView().showTipNotification(result.getErrorMsg());
    }

    // 通用帮助服务
    OrgApiResult result = OrgUnitServiceHelper.saveOrgViewSchema(param);
    if (!result.isSuccess()) {
        this.getView().showTipNotification(result.getErrorMsg());
    }
```

## 删除组织视图方案
##### 接口名：deleteOrgViewSchema(List<Long> idList)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| idList | 视图方案ID列表 | List | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| [OrgApiResult](#orgapiresult) | 执行结果 | 

**代码示例**
```java
    // 微服务方式
    List<Long> viewIds = new ArrayList<>(1);
    viewIds.add(12345678L);
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    OrgApiResult result = orgService.deleteOrgViewSchema(viewIds);
    if (!result.isSuccess()) {
        this.getView().showTipNotification(result.getErrorMsg());
    }

    // 通用帮助服务
    OrgApiResult result = OrgUnitServiceHelper.deleteOrgViewSchema(viewIds);
    if (!result.isSuccess()) {
        this.getView().showTipNotification(result.getErrorMsg());
    }
```

## 启用/禁用组织视图方案
##### 接口名：enableOrgViewSchema(List<Long> idList, boolean enable)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| idList | 视图方案ID列表 | List | 是 | 
| enable | 启用/禁用 | boolean | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| [OrgApiResult](#orgapiresult) | 执行结果 | 

**代码示例**
```java
    // 微服务方式
    List<Long> viewIds = new ArrayList<>(1);
    viewIds.add(12345678L);
    IOrgService orgService = ServiceFactory.getService(IOrgService.class);
    OrgApiResult result = orgService.enableOrgViewSchema(viewIds, false);
    if (!result.isSuccess()) {
        this.getView().showTipNotification(result.getErrorMsg());
    }

    // 通用帮助服务
    OrgApiResult result = OrgUnitServiceHelper.enableOrgViewSchema(viewIds, false);
    if (!result.isSuccess()) {
        this.getView().showTipNotification(result.getErrorMsg());
    }
```

## 获取组织的所属公司
##### 接口名：Map<String, Object> getCompanyfromOrg(Long orgID)

通过行政组织树获得。如果当前组织为公司则直接返回，否则向上遍历得到最近的公司。可能返回为空map

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| orgID | 组织ID | Long | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| Map | 公司信息 | 

```json
  {
     "id": 100000,
     "number": "编码",
     "name": "名称",
     "address": "注册地址",
     "taxregnum": "纳税识别号",
     "depositbank": "开户银行",
     "bankaccount": "开户行账号",
     "uniformsocialcreditcode": "统一信用代码",
     "firmname": "法人公司的名称",
     "representative": "法定代表人"
  }
```

**代码示例**
```java
    // 通用帮助服务
    Map<String, Object> companyInfoMap = OrgUnitServiceHelper.getCompanyfromOrg(100000L);
```

## 获取组织的所属公司
##### 接口名：<T> Map<String, Object> getCompanyfromOrg(T org)

支持参数为组织ID或者组织编码。通过行政组织树获得。如果当前组织为公司则直接返回，否则向上遍历得到最近的公司。可能返回为空map

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| org | 组织ID/编码 | 泛型 | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| Map | 公司信息 | 

```json
  {
     "id": 100000,
     "number": "编码",
     "name": "名称",
     "address": "注册地址",
     "taxregnum": "纳税识别号",
     "depositbank": "开户银行",
     "bankaccount": "开户行账号",
     "uniformsocialcreditcode": "统一信用代码",
     "firmname": "法人公司的名称",
     "representative": "法定代表人"
  }
```

**代码示例**
```java
    // 通用帮助服务
    Map<String, Object> companyInfoMap = OrgUnitServiceHelper.getCompanyfromOrg("100000");
```

## 根据组织形态或者组织形态类型获取所属组织
##### 接口名：Map<String, Object> getBelongToOrgByPatternOrType(boolean isByPatternType, String orgViewNumber, long orgId, String... patternOrPatternTypes)

支持参数为组织ID或者组织编码。通过行政组织树获得。如果当前组织为公司则直接返回，否则向上遍历得到最近的公司。可能返回为空map

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| isByPatternType | 是否根据组织形态类型获取 | boolean | 是 | true（根据组织形态类型查询）/false（根据组织形态查询）
| orgViewNumber | 视图方案编码 | String | 是 | 
| orgId | 组织ID | long | 是 | 
| patternOrPatternTypes | 组织形态或者组织形态类型集合 | array | 是 | isByPatternType==true?组织形态类型 : 组织形态
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| Map | 组织信息 | 

```json
  {
     "id": 100000,
     "number": "编码",
     "name": "名称",
     "address": "注册地址",
     "taxregnum": "纳税识别号",
     "depositbank": "开户银行",
     "bankaccount": "开户行账号",
     "uniformsocialcreditcode": "统一信用代码",
     "firmname": "法人公司的名称",
     "representative": "法定代表人"
  }
```

**代码示例**
```java
    // 通用帮助服务
    Map<String, Object> orgInfoMap = OrgUnitServiceHelper.getBelongToOrgByPatternOrType(true, OrgViewType.Admin, 100000L, 1, 2);
```

## 获取行政组织相应的核算组织
##### 接口名：Map<String, Object> getCompanyByAdminOrg(Long adminOrgId)

 * 1.若业务单据返回的组织是行政组织，则需根据业务单元分配部门的关系，找到业务单元所属核算主体。
 * 2.因业务单元分配部门存在两者多对多的关系，会导致返回多个核算主体的情况，这种情况下随机返回一个核算组织
 * 3.若业务单元分配部门没有配置，这种情况下，优先找本组织对应的核算组织，其次上级行政组织是不是核算主体，最后找核算组织视图根组织。

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| adminOrgId | 行政组织ID | Long | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| Map | 核算组织信息 | 

```json
  {
     "id": 100000,
     "number": "编码",
     "name": "名称",
  }
```

**代码示例**
```java
    // 通用帮助服务
    Map<String, Object> orgInfoMap = OrgUnitServiceHelper.getCompanyByAdminOrg(100000L);
```

## 获取行政组织相应的核算组织(业务实体)
##### 接口名：Map<String, Object> getCompanyByAdminOrg(Long adminOrgId, Boolean isBizUnit)

 * 1.若业务单据返回的组织是行政组织，则需根据业务单元分配部门的关系，找到业务单元所属核算主体。
 * 2.因业务单元分配部门存在两者多对多的关系，会导致返回多个核算主体的情况，这种情况下随机返回一个核算组织
 * 3.若业务单元分配部门没有配置，这种情况下，优先找本组织对应的核算组织，其次上级行政组织是不是核算主体，最后找核算组织视图根组织。

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| adminOrgId | 行政组织ID | Long | 是 | 
| isBizUnit | 是否业务实体 | Boolean | 是 | 当需要查询“业务实体”的核算主体时传递true，当只需要查询核算主体时传递false
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| Map | 核算组织信息 | 

```json
  {
     "id": 100000,
     "number": "编码",
     "name": "名称",
  }
```

**代码示例**
```java
    // 通用帮助服务
    Map<String, Object> orgInfoMap = OrgUnitServiceHelper.getCompanyByAdminOrg(100000L, Boolean.TRUE);
```

## 获取限定级次的下级行政组织
##### 接口名：List<Long> getSubOrgLimitLevel(List<Long> orgIds, int limitLevel, boolean includeCurrent) 

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| orgIds | 组织ID列表 | List | 是 | 
| limitLevel | 限定层级 | int | 是 | 
| includeCurrent | 是否包含当前组织 | boolean | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织列表 | 

**代码示例**
```java
    // 通用帮助服务
     List<Long> subOrgList = OrgUnitServiceHelper.getSubOrgLimitLevel(Collections.singletonList(100000L), 2, false);
```

## 获取基本职能类型列表
##### 接口名：List<Map<String, String>> getOrgBizList()

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List | 组织职能类型列表：List<{ 职能类型编码 = 职能类型名称 }>

**代码示例**
```java
    // 通用帮助服务
     List<Map<String, String>> orgBizList = OrgUnitServiceHelper.getOrgBizList();
```

## 获取组织管理模式
##### 接口名：int getOrgmanageMode()

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| int | 1:单组织企业;2:多组织企业;3:多组织企业（集团）

**代码示例**
```java
    // 通用帮助服务
     int mode = OrgUnitServiceHelper.getOrgmanageMode();
```

## 获取职能类型的所有视图方案
##### 接口名：List<Map<String, Object>> getViewSchemaByType(String orgViewType)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| orgViewType | 职能类型编码 | String | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List<Map<String, Object>> | 公司信息 | 

```json
  {
     "id": 100000,
     "number": "编码",
     "name": "名称",
     "isdefault": "是否默认视图方案",
  }
```

**代码示例**
```java
    // 通用帮助服务
    List<Map<String, Object>> viewSchemaList = OrgUnitServiceHelper.getViewSchemaByType(OrgViewType.Accounting);
```

## 获取行政组织对应的成本中心
##### 接口名：List<DynamicObject> getCostCenterByAdminOrg(Long adminOrgID)

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| adminOrgID | 行政组织ID | Long | 是 | 
	
**返回值**

| 类型 | 说明
| -------------- | -------------- |
| List<DynamicObject> | 成本中心信息 | 

**代码示例**
```java
    // 通用帮助服务
    List<DynamicObject> costCenterList = OrgUnitServiceHelper.getCostCenterByAdminOrg(100000L);
```

## 列表视图懒加载组织树搜索
##### 接口名：listViewLazyLoadTreeSearch(Map<String, Object> param)
元数据类型是ListView时使用

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| view | 插件视图对象 | ListView | 是 | 
| searchText | 查询内容 | String | 是 | 默认根据查询内容匹配组织编码和名称
| viewNumber | 视图方案编码 | String | 是 | 
| clickNode | 是否执行树节点点击事件 | Boolean | 否 | 列表需要根据查询节点进行过滤时，可以通过执行树节点点击事件实现
| searchById | 是否根据组织ID查询 | Boolean | 否 | 查询时匹配组织ID

**代码示例**
```java
    Map<String, Object> param = new HashMap<>();
    param.put("searchText", "要查询组织的名称");
    param.put("viewNumber", OrgViewType.Admin);
    param.put("view", Plugin.getView());
    param.put("clickNode", Boolean.TRUE);
    OrgUnitServiceHelper.listViewLazyLoadTreeSearch(param);
```

## 表单视图懒加载组织树搜索
##### 接口名：formViewLazyLoadTreeSearch(Map<String, Object> param)
元数据类型非ListView时使用

**参数说明**

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| view | 插件视图对象 | IFormView | 是 | 非ListView时，如BillForm
| searchText | 查询内容 | String | 是 | 默认根据查询内容匹配组织编码和名称
| viewNumber | 视图方案编码 | String | 是 | 
| treeView | 组织树对象 | TreeView | 是 | 
| rootNodeCacheKey | 组织树根节点缓存键 | String | 是 | 动态表单构建树时，需要缓存已加载的树节点
| clickNode | 是否执行树节点点击事件 | Boolean | 否 | 列表需要根据查询节点进行过滤时，可以通过执行树节点点击事件实现
| searchById | 是否根据组织ID查询 | Boolean | 否 | 查询时匹配组织ID

**代码示例**
```java
    Map<String, Object> param = new HashMap<>();
    param.put("searchText", "要查询组织的名称");
    param.put("viewNumber", OrgViewType.Admin);
    param.put("view", Plugin.getView());
    param.put("treeView", Plugin.getControl("treeviewap"));
    param.put("rootNodeCacheKey", rootNodeCacheKey);
    OrgUnitServiceHelper.formViewLazyLoadTreeSearch(param);
```


### 参数对象

<div id="orgviewtype" name="orgviewtype"></div>

##### 1.职能类型（kd.bos.servicehelper.org.OrgViewType）

| 属性名           | 属性值                    | 说明    |
| ---------------- | ----------------------- | ------- |
| Admin             | "01"                  | 行政组织  |
| Purchase             | "02"                  | 采购组织  |
| Sale             | "03"                  | 销售组织  |
| Produce             | "04"                  | 生产组织  |
| Inventory             | "05"                  | 库存组织  |
| QC             | "06"                  | 质检组织  |
| Settlement             | "07"                  | 结算组织  |
| Bankroll             | "08"                  | 资金组织  |
| Asset             | "09"                  | 资产组织  |
| Accounting             | "10"                  | 核算组织  |
| HR             | "11"                  | HR组织  |
| SCC             | "12"                  | 共享中心  |
| Budget             | "13"                  | 预算组织  |
| ControlUnit             | "14"                  | 控制单元  |
| OrgUnit             | "15"                  | 业务单元  |
| BDControl             | "16"                  | 主数据控制  |


<div id="orgparam" name="orgparam"></div>

##### 2.参数对象（kd.bos.org.model.OrgParam）

| 参数           | 参数名                    | 类型    | 说明    |
| ---------------- | ----------------------- | ------- | ------- |
| id             | ID                  | long  |  |
| customOrgId             |  自定义ID                  | long  |  |
| number             | 编码                  | String  |  |
| name             | 名称                  | String  |  |
| parentId             | 上级ID                  | long  |  |
| fullname             | 长名称                  | String  | 下划线分隔，包含根组织，如[根组织_二级组织_三级组织] |
| orgPatternId             | 形态                  | long  | 默认为4L部门 |
| duty             | 职能类型编码                  | String  |  |
| yzjSync             | 是否同步云之家                  | boolean  |  |
| propertyMap             | 组织其他属性                 | Map  | |
| multiViewMap | 多职能参数 | Map | 支持一次更新多种业务视图方案；键为视图方案编码（参照本页参数说明的[OrgViewType](#orgviewtype)），值为OrgDutyView对象|
| autoMoveSubOrg | 自动移动下级组织 | boolean  | 默认为true：组织新增职能（如核算组织）时，会根据业务单元树的上下级结构，自动移动有相应职能（核算组织）的下级组织新增节点下;为false时，不自动移动下级组织 | 
| handleFrozenOrg             | 处理已封存的组织                  | boolean  | 启用该参数可以直接新增已封存的组织 |
| success             | 处理结果是否成功                  | boolean  | 处理结果放到了参数对象里 |
| msg             | 处理结果消息内容                  | String  | 处理结果放到了参数对象里 |

###### 2.1组织其他属性（propertyMap） 

| 属性名           | 标识                    | 类型    |
| ---------------- | ----------------------- | ------- |
| 编码             | number                  | String  |
| 名称             | name                    | String  |
| 数据状态         | status                  | String  |
| 使用状态         | enable                  | String  |
| 描述             | fcomment                | String  |
| 云之家组织内码   | fyzjorgid               | String  |
| 简称             | simplename              | String  |
| 形态             | orgpattern              | Long    |
| 统一社会信用代码 | uniformsocialcreditcode | String  |
| 公司名称         | ffirmname               | String  |
| 公司类型         | ffirmtype               | String  |
| 法定代表人       | frepresentative         | String  |
| 住所             | faddress                | String  |
| 注册资本         | registeredcapital       | Integer |
| 成立日期         | establishmentdate       | Date    |
| 营业期限         | businessterm            | Date    |
| 经营范围         | fbizscope               | String  |
| 纳税识别号       | ftaxregnum              | String  |
| 电话             | phone                   | String  |
| 开户行           | depositbank             | String  |
| 银行账户         | bankaccount             | String  |
| 国家/地区        | country                 | Long    |
| 城市             | city                    | Long    |
| 时区             | timezone                | Long    |
| 邮编             | postcode                | String  |
| 联系电话         | contactphone            | String  |
| 联系地址         | contactaddress          | String  |
| 开始时间         | startdate               | Date    |
| 结束时间         | enddate                 | Date    |
| .... （其他bos_org实体上的属性或者扩展属性）        | ....                 | ...    |


<div id="orgtreeparam" name="orgtreeparam"></div>

##### 3.参数对象（kd.bos.org.model.OrgTreeParam）

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| -------------- | -------------- | ---------- | ------- |--------------
| orgViewId | 视图方案ID | Long | 否 | 视图方案ID、编码、类型，三选一
| orgViewNumber | 视图方案编码 | String | 否 | 
| orgViewType | 组织职能类型 | String | 否 | 查询默认组织视图方案
| id | 组织ID | Long | 否 | 
| customFilterList | 自定义的过滤条件 | List | 否 | 指定构建树的过滤条件
| orgRangeList | 组织范围 | List | 否 | 指定构建树的组织范围
| includeDisable | 是否包含禁用组织 | boolean | 否 | 默认不包含
| includeFreeze | 是否包含封存组织 | boolean | 否 | 默认不包含
| addPermissionFilter | 是否添加管理员管辖范围权限 | boolean | 否 | 
| markFreeze | 是否标记已封存的组织 | boolean | 否 | 默认不标记；标记后会在封存组织后面加“（封存）”
| markNameMap | 标记节点名称的集合 | Map | 否 | 指定字段标记指定内容（<指定字段-标记内容>）
| orderBy | 排序字段 | String | 否 | 逗号隔开
| treeBuildType | 构造树的类型 | [OrgTreeBuildType](#orgtreebuildtype) | 否 | 

<div id="orgtreebuildtype" name="orgtreebuildtype"></div>

##### 4 参数对象（kd.bos.org.model.OrgTreeBuildType）

| 枚举类型 | 说明
| -------------- | -------------- 
| FILL_HIDDEN_PARENT_DIRECT | 构造直接下级树时补全上级（默认类型）
| FILL_HIDDEN_PARENT_ALL | 构造全部下级树时补全上级
| SKIP_HIDDEN_PARENT_ALL | 构造树时跳过隐藏的上级节点，继续往上找上级挂靠


<div id="viewschemaparam" name="viewschemaparam"></div>

##### 5.参数对象（kd.bos.org.model.ViewSchemaParam）

| 参数 | 参数名称 | 数据类型 | 必选 | 说明
| ---------------- | ----------------------- | ------- | ------- | ------- |
| id             | ID                  | long  |  | ID参数为空时，执行新增；反之，执行更新
| customId             |  自定义ID                  | long  |  |
| number             | 编码                  | String  |  |
| name             | 名称                  | String  |  |
| ViewType             | 职能类型(组织业务职能) | String  | 新增必录 | 
| startDate             | 开始时间 | Datae  |  | 默认为当前日期
| endDate             | 开始时间 | Datae  |  | 默认为2999-12-31

### 返回对象

<div id="orgapiresult" name="orgapiresult"></div>

##### 1.返回对象（kd.bos.org.model.OrgApiResult）

| 参数 | 参数名称 | 数据类型 | 说明
| ---------------- | ----------------------- | ------- | ------- |
| commitId             | 提交参数的唯一主键 | String  | 用于匹配参数对象
| success             |  是否成功  | boolean  |  |
| errorMsg             | 错误信息 | String | 成功时消息为空
| id             | ID                  | long | 
| number             | 编码                  | String|
| name             | 名称                  | String|
| resultList             | 批量返回结果 | List<OrgApiResult>  | 多行数据的处理结果 | 
