---
title: "4.1.3、表单布局：FormLayoutRest"
docId: "954956811150032897"
source: "https://weapp.eteams.cn/build/techdoc/wdoc/index.html#/public/repository/9c2e5f92-03b4-4207-9b22-a0c1dd79ac56/doc/954956811150032897"
---
#### 1. 查询表单布局

> 所属包：weaver-common-form-api
> 
> 所属类：com.weaver.common.form.api.rest.layout.FormLayoutRest

**接口详情：**

```java
    /**
     * 根据表单Id、表单布局Id集合、表单名称，获取表单多布局集合
     * @param entity 表单多布局高级搜索实体类
     * @param employee 用户信息（必须包含id和tenantKey）
     * @return List<FormLayoutMultipleDto> 表单多布局集合
     */
    List<FormLayoutMultipleDto> listSimpleFormLayoutMultipleByEntity(FormLayoutMultipleSearchEntity entity, SimpleEmployee employee);
```

**参数说明：**

| 参数名 |  | 必传 | 类型 | 描述 |
| --- | --- | --- | --- | --- |
| entity |  | 是 | com.weaver.common.form.searchentity.FormLayoutMultipleSearchEntity | 布局版本id |
| entity<br>的具体属性 | formId | 是 | Long | 表单Id |
| formIds | 否 | List | 表单ids集合 |  |
| layoutIds | 否 | List | 多布局Id集合 |  |
| fieldIds | 否 | List | 字段id集合 |  |
| versionIds | 否 | List | 版本Id集合 |  |
| refLayoutIds | 否 | List | 多布局Id集合：兼容审批refId历史数据 |  |
| name | 否 | String | 布局名称 |  |
| desc | 否 | String | 布局描述 |  |
| isDelete | 否 | Integer | 删除状态<br>（0-未删除，1-已删除，2-彻底删除，null-所有） |  |
| deleteStatusList | 否 | List | 删除状态列表<br>（使用时会清空isDelete的默认值） |  |
| filterLayoutIds | 否 | List | 需要过滤掉的多布局Id集合 |  |
| creators | 否 | List | 创建人Id集合 |  |
| operators | 否 | List | 修改人Id集合 |  |
| beginTime | 否 | String | 开始时间（创建时间） |  |
| endTime | 否 | String | 结束时间（创建时间） |  |
| conditionType | 否 | ConditionType | 搜索条件（AND、OR） |  |
| terminalType | 否 | TerminalType | 应用设备（PC、MOBILE） |  |
| layoutType | 否 | LayoutType | 布局类型（FLOW、EXCEL） |  |
| isDefault | 否 | Integer | 是否默认<br>（0-否，1-是，null-所有） |  |
| enablePage | 否 | Boolean | 是否分页 |  |
| customOrder | 否 | String | 自定义排序SQL |  |
| beginUpdateTime | 否 | String | 开始时间（更新时间） |  |
| endUpdateTime | 否 | String | 结束时间（更新时间） |  |
| needI18N | 否 | Boolean | 是否需要国际化处理 |  |
| refId | 否 | Long | 外部模块指定ID |  |
| customParam | 否 | Map<String, Object> | 模块自定义参数 |  |
| customSql | 否 | String | 自定义查询SQL |  |
| module | 否 | ModuleSource | 所属模块 |  |
| copyRefIds | 否 | List | 复制表单、复制布局外部传入ID集合 |  |
| isCopy | 否 | Boolean | 是否为复制表单、复制布局 |  |
| isDefaultOrRefNull | 否 | Boolean | 是否筛选布局<br>仅复制默认布局 + refId为空的数据<br>（xml导入使用） |  |
| copyLayoutIds | 否 | List | 需要复制的布局ID集合 |  |
| parentIds | 否 | List | 父布局ID集合 |  |
| isSys | 否 | Integer | 系统布局查询条件<br>（0-仅查询非系统布局，1-仅查询系统布局，null-查询所有布局） |  |
| filterChild | 否 | Boolean | 是否过滤子布局 |  |
| filterPrint | 否 | Boolean | 是否过滤打印布局<br>（默认过滤，如果layoutIds或copyLayoutIds有值则不过滤） |  |
| convertEmployee | 否 | Boolean | 是否转换人员信息 |  |
| refTypes | 否 | List | 查询指定外部模块标识集合 |  |
| employee |  | 是 | com.weaver.teams.domain.user.SimpleEmployee | 用户信息（必须包含id和tenantKey） |

**返回值：**

| 类型 | 具体属性 | 类型所属包路径 | 描述 |
| --- | --- | --- | --- |
| List<FormLayoutMultipleDto> |  | **com.weaver.common.form.dto.layout.multiple.FormLayoutMultipleDto** | 布局具体属性 |
| FormLayoutMultipleDto<br>的具体属性 | id | Long | Id |
| formId | Long | 表单Id |  |
| name | String | 布局名称 |  |
| describe | String | 布局描述 |  |
| terminalType | com.weaver.ebuilder.common.module.app.enums.TerminalType | 应用类型（枚举：PC、MOBILE） |  |
| operator | com.weaver.common.form.base.FormUser | 修改人 |  |
| creator | com.weaver.common.form.base.FormUser | 创建人 |  |
| createTime | java.util.Date | 创建时间 |  |
| updateTime | java.util.Date | 更新时间 |  |
| isDefault | Boolean | 是否为默认布局(0-否, 1-是) |  |
| versionId | String | 最新版本布局Id |  |
| layoutType | com.weaver.ebuilder.common.module.page.enums.LayoutType | EB布局类型（枚举：FLOW-简易版、EXCEL-高级版） |  |
| labelObj | String | 布局国际化配置 |  |
| refId | Long | 外部模块指定ID |  |
| refType | String | 外部模块标识(类似module) |  |
| multipleLayoutId | Long | 表单多布局Id |  |
| mobileNoDefLayout | com.weaver.common.form.metadata.setting.H5LayoutBaseSettingType | 基础设置 当H5没有默认布局时 读取PC默认布局还是系统布局 |  |
| customParam | Map<String, Object> | 模块自定义参数 |  |
| isSys | Boolean | 是否为系统布局(0-否, 1-是) |  |
| relationId | Long | 外部模块指定ID |  |
| formTableId | Long | 物理表ID |  |
| formTableName | String | 物理表名称 |  |
| parentId | Long | 父布局ID |  |
| isParent | Boolean | 是否包含子布局 |  |
| children | List | 子布局集合 |  |
| readOnly | Boolean | 是否只读渲染：默认可编辑（非持久化属性） |  |
| simple | Boolean | 获取子布局数据 |  |
| ecodeId | Long | ecodeId |  |
| itemPermissionConfig | com.weaver.common.form.formmanage.permission.FormItemPermissionConfig | 独立权限控制（EB系统维度数据使用） |  |
| mappingId | Long | 映射布局ID（实际运行时取此布局） |  |
| mappingName | String | 映射布局名称 |  |

**对接示例：**

```java
import com.weaver.common.form.api.rest.FormRestFactory;
@Autowired
FormRestFactory formRestFactory;

public void Test() {
    String module = "workflow";

    SimpleEmployee employee = new SimpleEmployee();
    employee.setId(918327792617603074L);
    employee.setTenantKey("t82kg113nu");

    FormLayoutMultipleSearchEntity entity = new FormLayoutMultipleSearchEntity();
    entity.setFormId(1156582392999821251L);
    entity.setLayoutIds(new ArrayList<>(Arrays.asList(1156582392999821267L)));

    List<FormLayoutMultipleDto> formLayoutMultipleDtos = formRestFactory.getFormLayoutRest(module).listSimpleFormLayoutMultipleByEntity(entity , employee);
}
```

#### 2. 表单指定布局内追加字段

> 所属包：weaver-common-form-extend 
> 
> 所属类：com.weaver.common.form.api.rest.layout.FormLayoutRest

**接口详情：**

```java
    /**
     * 更新布局内控件
     * @param formInitDto 表单初始化dto
     * @param employee 用户信息（必须包含id和tenantKey）
     * @return  布局版型信息
     */
    FormLayoutVersionDto updateSimpleCompsByInitDto(FormInitDto formInitDto, SimpleEmployee employee);
```

**参数说明：**

| 参数名 | 具体属性 | 必传 | 类型 | 描述 |
| --- | --- | --- | --- | --- |
| formInitDto | 是 | FormInitDto | com.weaver.common.form.dto.form.FormInitDto | 入参实体 点击查看详情 |
| formInitDto<br>的具体属性 | form | 是 | com.weaver.common.form.metadata.Form | 表单 |
| layoutType | 是 | com.weaver.ebuilder.common.module.page.enums.LayoutType | EB布局类型<br>（枚举：FLOW-简易版、EXCEL-高级版） |  |
| belongModule | 是 | com.weaver.ebuilder.common.enums.BelongModule | 所属模块 |  |
| terminalType | 是 | com.weaver.ebuilder.common.module.app.enums.TerminalType | EB布局类型<br>（枚举：PC、H5） |  |
| comps | 否 | List<com.weaver.ebuilder.common.module.designer.entity.LayoutComponentEntity> | EB组件集合 |  |
| components | 否 | List<com.weaver.common.form.component.base.Component> | 表单组件集合 |  |
| assignPosition | 否 | Boolean | 单元格位置是否由模块指定 |  |
| colNum | 否 | Integer | excel布局初始化每行展示列数 |  |
| configMap | 否 | Map<String, Object> | excel布局的workbook信息：layoutType为EXCEL且assignPosition为true时使用该configMap作为布局的workbook |  |
| formLayout | 是 | com.weaver.common.form.layout.FormLayoutVersion | 表单布局 |  |
| layoutId | 否 | Long | 布局版本Id |  |
| updateCompsType | 否 | Integer | 布局组件更新类型（0-追加到最后、1-覆盖当前布局） |  |
| isPhysicalTable | 否 | Boolean | 是否创建物理表<br>true：物理表<br>false：共享表<br>null：共享表） |  |
| onlyAddToFiledManage | 否 | Boolean | 是否仅新建字段到字段管理true：仅新建<br>false：新建并创建布局<br>null：新建并创建布局） |  |
| presetLayoutId | 否 | Boolean | 是否预置布局id（版本升级服务部使用） |  |
| clearFormAndFormTable | 否 | Boolean | 保存配置失败、是否移除表单、物理表（版本升级服务部预置表单、物理表时会传false） |  |
| formStyleDetail | 否 | String | 自定义CSS代码块（对应FormStyle-styleDetail） |  |
| relationId | 否 | Long | 外部模块指定ID |  |
| layoutMultiId | 否 | Long | 表单布局Id |  |
| onlyCreateForm | 否 | Boolean | 是否仅创建表单（EB存在此场景，功能强依赖动态布局） |  |
| customParam | 否 | Map<String, Object> | 自定义参数 |  |
| styleTemplateId | 否 | Long | 样式模板ID |  |
| employee |  | 是 | com.weaver.teams.domain.user.SimpleEmployee | 用户信息（必须包含id和tenantKey） |

**返回值：**

| 类型 | 具体属性 | 类型 | 描述 |
| --- | --- | --- | --- |
| FormLayoutVersionDto |  | com.weaver.common.form.dto.layout.FormLayoutVersionDto | 表单布局简化实体 |
| FormLayoutVersionDto<br>的具体属性 | id | Long | ID |
| name | String | 布局名称 |  |
| describe | String | 布局描述 |  |
| pageLayouts | List | EB布局 |  |
| formStyle | FormStyleDto | 表单样式 |  |
| signContractFlowPoint | Object | 电子签对象 |  |
| fieldConfigs | Map<Long, JSONObject> | 表单字段属性 |  |
| multipleLayoutId | String | 所属布局Id |  |
| deleteFieldIds | Set | 布局内字段管理已删除字段集合（已废弃） |  |
| updateTimeStamp | String | 更新时间时间戳 |  |

**对接示例：**

```java
import com.weaver.common.form.api.rest.FormRestFactory;
@Autowired
FormRestFactory formRestFactory;

public void Test() {
    String module = "workflow";

    SimpleEmployee employee = new SimpleEmployee();
    employee.setId(918327792617603074L);
    employee.setTenantKey("t82kg113nu");

    //组件自行封装
    List<LayoutComponentEntity> comps = new ArrayList<>();
    // 场景1入参：将某布局的组件重置为新组件
    FormInitDto initDto = new FormInitDto();
    Form form = new Form();
    form.setId(1L);
    initDto.setForm(form);
    initDto.setLayoutId(2L);
    initDto.setUpdateCompsType(1);
    initDto.setComps(comps);

    // 场景2入参：向某布局组件后追加组件
    FormInitDto initDto = new FormInitDto();
    Form form = new Form();
    form.setId(1L);
    initDto.setForm(form);
    initDto.setLayoutId(2L);
    initDto.setUpdateCompsType(0);
    initDto.setComps(comps);

    FormLayoutVersionDto formLayoutVersionDto = formRestFactory.getFormLayoutRest(module).updateSimpleCompsByInitDto(initDto, employee);
}
```

#### 3. 获取模块关联布局

> 所属包：weaver-common-form-api
> 
> 所属类：com.weaver.common.form.api.rest.layout.FormLayoutRest

**接口详情：**

```java
    /**
     * 根据formId和refId获取模块的关联布局
     * @param params 参数实体
     * @param employee 用户信息（必须包含id和tenantKey）
     * @return FormLayoutVersion 表单布局
     */
    FormLayoutMultipleDto getSimpleRefFormLayoutMultiple(FormBuilderParam params, SimpleEmployee employee);
```

**参数说明：**

| 参数名 | 具体属性 | 必传 | 类型 | 描述 |
| --- | --- | --- | --- | --- |
| params |  | 是 | com.weaver.common.form.param.FormBuilderParam | 入参实体 |
| params<br>的具体属性 | formId | 是 | Long | 表单Id |
| refId | 是 | Long | 根据refID获取布局 |  |
| employee |  | 是 | com.weaver.teams.domain.user.SimpleEmployee | 用户信息（必须包含id和tenantKey） |

**返回值：**

| 类型 | 具体属性 | 类型所属包路径 | 描述 |
| --- | --- | --- | --- |
| FormLayoutMultipleDto |  | com.weaver.common.form.dto.layout.multiple.FormLayoutMultipleDto | 表单布局Bean |
| FormLayoutMultipleDto<br>的具体属性 | id | Long | Id |
| formId | Long | 表单Id |  |
| name | String | 布局名称 |  |
| describe | String | 布局描述 |  |
| terminalType | com.weaver.ebuilder.common.module.app.enums.TerminalType | 应用类型（枚举：PC、MOBILE） |  |
| operator | com.weaver.common.form.base.FormUser | 修改人 |  |
| creator | com.weaver.common.form.base.FormUser | 创建人 |  |
| createTime | java.util.Date | 创建时间 |  |
| updateTime | java.util.Date | 更新时间 |  |
| isDefault | Boolean | 是否为默认布局(0-否, 1-是) |  |
| versionId | String | 最新版本布局Id |  |
| layoutType | com.weaver.ebuilder.common.module.page.enums.LayoutType | EB布局类型（枚举：FLOW-简易版、EXCEL-高级版） |  |
| labelObj | String | 布局国际化配置 |  |
| refId | Long | 外部模块指定ID |  |
| refType | String | 外部模块标识(类似module) |  |
| multipleLayoutId | Long | 表单多布局Id |  |
| mobileNoDefLayout | com.weaver.common.form.metadata.setting.H5LayoutBaseSettingType | 基础设置 当H5没有默认布局时 读取PC默认布局还是系统布局 |  |
| customParam | Map<String, Object> | 模块自定义参数 |  |
| isSys | Boolean | 是否为系统布局(0-否, 1-是) |  |
| relationId | Long | 外部模块指定ID |  |
| formTableId | Long | 物理表ID |  |
| formTableName | String | 物理表名称 |  |
| parentId | Long | 父布局ID |  |
| isParent | Boolean | 是否包含子布局 |  |
| children | List | 子布局集合 |  |
| readOnly | Boolean | 是否只读渲染：默认可编辑（非持久化属性） |  |
| simple | Boolean | 获取子布局数据 |  |
| ecodeId | Long | ecodeId |  |
| itemPermissionConfig | com.weaver.common.form.formmanage.permission.FormItemPermissionConfig | 独立权限控制（EB系统维度数据使用） |  |
| mappingId | Long | 映射布局ID（实际运行时取此布局） |  |
| mappingName | String | 映射布局名称 |  |

**对接示例：**

```java
import com.weaver.common.form.api.rest.FormRestFactory;
@Autowired
FormRestFactory formRestFactory;

public void Test() {
    String module = "workflow";

    SimpleEmployee employee = new SimpleEmployee();
    employee.setId(918327792617603074L);
    employee.setTenantKey("t82kg113nu");

    FormBuilderParam param = new FormBuilderParam();
    param.setFormId(1L);
    param.setRefId(2L);

    FormLayoutMultipleDto formLayoutMultiple = formRestFactory.getFormLayoutRest(module).getSimpleRefFormLayoutMultiple(param, employee);
}
```

#### 4. 初始化模块关联布局

> 所属包：weaver-common-form-api
> 
> 所属类：com.weaver.common.form.api.rest.layout.FormLayoutRest

**接口详情：**

```java
    /**
     * 初始化布局
     * @param params 参数实体
     * @param employee 用户信息（必须包含id和tenantKey）
     * @return FormLayoutVersion 表单布局
     */
    FormLayoutVersionDto initSimpleLayoutByEditorSave(FormViewAttrParam params, SimpleEmployee employee);
```

**参数说明：**

| 参数名 | 具体属性 | 必传 | 类型 | 描述 |
| --- | --- | --- | --- | --- |
| params |  | 是 | com.weaver.common.form.param.FormViewAttrParam | 入参实体 |
| FormViewAttrParam<br>的具体属性 | formId | 是 | Long | 表单Id |
| customParam | 否 | Map<String, Object> | 自定义参数 |  |
| layoutId | 否 | Long | 布局版本Id |  |
| multipleLayoutId | 否 | Long | 所属多布局Id |  |
| configs | 否 | List | 配置详情集合 |  |
| showDelete | 否 | Integer | 是否展示已删除字段 |  |
| addLayout | 否 | boolean | 是否初始化新增布局 |  |
| assignPosition | 否 | Boolean | 单元格位置是否由模块指定 |  |
| formLayoutMultiple | 否 | com.weaver.common.form.layout.FormLayoutMultiple | 表单多布局 |  |
| formLayout | 否 | com.weaver.common.form.layout.FormLayoutVersion | 表单布局 |  |
| layoutType | 是 | com.weaver.ebuilder.common.module.page.enums.LayoutType | 模板预览时的布局类型<br>默认是高级版样式模板 |  |
| styleTemplateId | 否 | Long | 样式模板Id |  |
| colNum | 否 | Integer | 每行展示列数 |  |
| flowColNum | 否 | Integer | FLOW布局每行展示列数（主表） |  |
| groupNum | 否 | Integer | 随机分组配置（initMode=4、6时生效） |  |
| closeCompStyle | 否 | Boolean | 是否移除组件样式属性<br>（initMode=2、3、4时生效） |  |
| clearFoldComp | 否 | Boolean | 是否移除分组及内部容器，保留组件（initMode=2、3、4时生效） |  |
| flowCollapseColNum | 否 | Integer | FLOW布局每行展示列数（分组） |  |
| preview | 否 | boolean | 是否为预览表单布局<br>（预览数据不入库保存） |  |
| initMode | 否 | Integer | 初始化类型<br>（0-预览、1-初始化（直接初始化）<br>2-布局套模板（直接初始化）<br>3-布局套模板（字段管理分组）<br>4、布局套模板（随机分组）<br>5-初始化（字段管理分组）<br>6-初始化（随机分组）） |  |
| reserveEcode | 否 | Boolean | 是否保留ecode(默认不保留) |  |
| permissionId | 否 | Long | 字段权限Id |  |
| styleTemplateType | 否 | Integer | 样式模板类型（0-简易版、1-高级版） |  |
| styleTemplateParam | 否 | Map<String, Object> | 样式模板对象参数 |  |
| sourceCode | 否 | String | 自定义源码 |  |
| generateDetailTable | 否 | Boolean | 明细表是否重新生成<br>（明细表初始化时不需要重新生成：传入false） |  |
| pageLayout | 否 | com.weaver.ebuilder.common.module.designer.entity.PageLayoutEntity | EB布局对象 |  |
| initStyle | 否 | boolean | 是否样式主题设置 |  |
| businessScenarioEnum | 否 | com.weaver.common.form.biz.enums.BusinessScenarioEnum | 获取模块固定字段枚举 |  |
| relationId | 否 | Long | 外部模块指定ID |  |
| designerParam | 否 | com.weaver.common.form.param.layout.version.FormDesignerParam | 编辑器保存参数 |  |
| refId | 否 | Long | 外部模块指定id(打印设计器关联打印模板) |  |
| refType | 否 | String | 外部模块标识(类似module) |  |
| onlySavePageLayout | 否 | Boolean | 仅保存布局，已废弃 |  |
| formTableId | 否 | Long | 物理表ID |  |
| initType | 否 | com.weaver.common.form.enums.layout.FormPrintInitType | 打印初始化类型 |  |
| printInitType | 否 | String | 打印初始化类型 |  |
| sourceLayoutId | 否 | Long | 初始化类型是COPY_LAYOUT_MULTIPLE时，传入复制的布局id |  |
| layoutIds | 否 | List | printInitType类型是BATCH_DELETE_LAYOUT_MULTIPLE时，传入删除的布局id集合 |  |
| deleteType | 否 | Integer | printInitType类型是BATCH_DELETE_LAYOUT_MULTIPLE时，传入删除的布局删除类型 |  |
| cost | 否 | Boolean | 是否返回costTime（默认不返回） |  |
| needCache | 否 | Boolean | 是否需要缓存 |  |
| groupFieldIds | 否 | List | 需要过滤的分组列表，如果为空默认不过滤（initMode=5时生效） |  |
| employee |  | 是 | com.weaver.teams.domain.user.SimpleEmployee | 用户信息（必须包含id和tenantKey） |

**返回值：**

| 类型 | 类型所属包路径 | 描述 |  |
| --- | --- | --- | --- |
| FormLayoutVersionDto |  | com.weaver.common.form.dto.layout.FormLayoutVersionDto | 表单布局版本Bean |
| FormLayoutVersionDto<br>的具体属性 | id | Long | ID |
| name | String | 布局名称 |  |
| describe | String | 布局描述 |  |
| pageLayouts | List | EB布局 |  |
| formStyle | FormStyleDto | 表单样式 |  |
| signContractFlowPoint | Object | 电子签对象 |  |
| fieldConfigs | Map<Long, JSONObject> | 表单字段属性 |  |
| multipleLayoutId | String | 所属布局Id |  |
| deleteFieldIds | Set | 布局内字段管理已删除字段集合（已废弃） |  |
| updateTimeStamp | String | 更新时间时间戳 |  |

**对接示例：**

```java
import com.weaver.common.form.api.rest.FormRestFactory;
@Autowired
FormRestFactory formRestFactory;

public void Test() {
    String module = "workflow";

    SimpleEmployee employee = new SimpleEmployee();
    employee.setId(918327792617603074L);
    employee.setTenantKey("t82kg113nu");

    FormViewAttrParam formViewAttrParam = new FormViewAttrParam();
    formViewAttrParam.setFormId(1L);
    formViewAttrParam.setLayoutType(LayoutType.FLOW);
    FormLayoutVersion formLayoutVersionParam = new FormLayoutVersion();
    formLayoutVersionParam.setName("布局1");
    formViewAttrParam.setFormLayout(formLayoutVersionParam);
    formViewAttrParam.setRefId(2L);
    formViewAttrParam.setRefType("workflow");
    formViewAttrParam.setCustomParam(new HashMap<>());

    FormLayoutVersionDto formLayoutVersionDto = formRestFactory.getFormLayoutRest(module).initSimpleLayoutByEditorSave(formViewAttrParam, employee);
}
```

#### 5. 复制模块关联布局

> 所属包：weaver-common-form-api
> 
> 所属类：com.weaver.common.form.api.rest.layout.FormLayoutRest

**接口详情：**

```java
    /**
     * 基于已有关联布局复制
     * @param saveParam 参数实体
     * @param employee 用户信息（必须包含id和tenantKey）
     * @return FormLayoutVersion 表单布局
     */
    FormLayoutMultipleDto copySimpleFormLayoutMultipleByRefId(FormLayoutMultipleSaveParam saveParam, SimpleEmployee employee);

```

**参数说明：**

| 参数名 | 具体属性 | 必传 | 类型 | 描述 |
| --- | --- | --- | --- | --- |
| saveParam |  | 是 | com.weaver.common.form.param.layout.multiple.FormLayoutMultipleSaveParam | 入参实体 |
| FormLayoutMultipleSaveParam<br>的具体属性 | formLayout | 是 | com.weaver.common.form.layout.FormLayoutVersion | 布局版本 |
| formLayouts | 否 | List | 布局版本列表 |  |
| formLayoutIds | 否 | List | 批量保存布局入参 |  |
| form | 是 | com.weaver.common.form.metadata.Form | 表单基本信息 |  |
| layoutType | 是 | com.weaver.ebuilder.common.module.page.enums.LayoutType | 布局类型（FLOW、EXCEL） |  |
| terminalType | 否 | com.weaver.ebuilder.common.module.app.enums.TerminalType | 应用类型（枚举：PC、H5），未传默认为：PC |  |
| labelObj | 否 | String | 国际化信息 |  |
| refId | 是 | Long | 外部模块指定ID |  |
| refType | 否 | String | 外部模块标识<br>(类似module) |  |
| customParams | 否 | Map<String, Object> | 自定义参数 |  |
| onlyLayout | 否 | Boolean | 仅保存布局，已废弃 |  |
| designerParam | 否 | com.weaver.common.form.param.layout.version.FormDesignerParam | 编辑器保存参数 |  |
| onlySavePageLayout | 否 | Boolean | 仅保存布局，已废弃 |  |
| copyLayout | 否 | Boolean | 旧多布局id |  |
| oldMultipleLayoutId | 否 | String | 旧多布局id |  |
| oldLayoutId | 否 | Long | 产生新布局前的旧布局id |  |
| sourceId | 否 | Long | 复制源id |  |
| targetLayoutMultiple | 否 | com.weaver.common.form.layout.FormLayoutMultiple | 目标布局 |  |
| interfaceName | 否 | String | 访问接口名 |  |
| edit | 否 | Boolean | 编辑器模式 |  |
| refIdMap | 是 | Map<Long, Long> | 新老映射关系map |  |
| module | 否 | ModuleSource | 请求模块 |  |
| formTableId | 否 | Long | 所属物理表ID |  |
| savePageLayout | 否 | Boolean | 是否创建eb布局（默认新建） |  |
| parentId | 否 | Long | 父布局ID 0：主布局 指定值：所属父布局ID |  |
| savePermission | 否 | Boolean | 是否保存字段权限（仅后端参数传递使用） |  |
| relateConfigMap | 否 | Map<Long, List> | key为layoutId，value为读写属性 |  |
| showOrderMap | 否 | Map<String, Integer> | key为fieldId/subFormId/valueKey，value为预置的showOrder |  |
| ignoreECodeCheck | 否 | Boolean | 表单布局保存时，是否跳过ecode权限校验 |  |
| needLayoutTemplate | 否 | Boolean | 是否需要生成样式模板数据 |  |
| employee |  | 是 | com.weaver.teams.domain.user.SimpleEmployee | 用户信息（必须包含id和tenantKey） |

**返回值：**

| 类型 | 具体属性 | 类型 |  |
| --- | --- | --- | --- |
| FormLayoutMultipleDto |  | com.weaver.common.form.dto.layout.multiple.FormLayoutMultipleDto | 表单布局Bean |
| FormLayoutMultipleDto<br>的具体属性 | id | Long | Id |
| formId | Long | 表单Id |  |
| name | String | 布局名称 |  |
| describe | String | 布局描述 |  |
| terminalType | com.weaver.ebuilder.common.module.app.enums.TerminalType | 应用类型（枚举：PC、MOBILE） |  |
| operator | com.weaver.common.form.base.FormUser | 修改人 |  |
| creator | com.weaver.common.form.base.FormUser | 创建人 |  |
| createTime | java.util.Date | 创建时间 |  |
| updateTime | java.util.Date | 更新时间 |  |
| isDefault | Boolean | 是否为默认布局(0-否, 1-是) |  |
| versionId | String | 最新版本布局Id |  |
| layoutType | com.weaver.ebuilder.common.module.page.enums.LayoutType | EB布局类型（枚举：FLOW-简易版、EXCEL-高级版） |  |
| labelObj | String | 布局国际化配置 |  |
| refId | Long | 外部模块指定ID |  |
| refType | String | 外部模块标识(类似module) |  |
| multipleLayoutId | Long | 表单多布局Id |  |
| mobileNoDefLayout | com.weaver.common.form.metadata.setting.H5LayoutBaseSettingType | 基础设置 当H5没有默认布局时 读取PC默认布局还是系统布局 |  |
| customParam | Map<String, Object> | 模块自定义参数 |  |
| isSys | Boolean | 是否为系统布局(0-否, 1-是) |  |
| relationId | Long | 外部模块指定ID |  |
| formTableId | Long | 物理表ID |  |
| formTableName | String | 物理表名称 |  |
| parentId | Long | 父布局ID |  |
| isParent | Boolean | 是否包含子布局 |  |
| children | List | 子布局集合 |  |
| readOnly | Boolean | 是否只读渲染：默认可编辑（非持久化属性） |  |
| simple | Boolean | 获取子布局数据 |  |
| ecodeId | Long | ecodeId |  |
| itemPermissionConfig | com.weaver.common.form.formmanage.permission.FormItemPermissionConfig | 独立权限控制（EB系统维度数据使用） |  |
| mappingId | Long | 映射布局ID（实际运行时取此布局） |  |
| mappingName | String | 映射布局名称 |  |

**对接示例：**

```java
import com.weaver.common.form.api.rest.FormRestFactory;
@Autowired
FormRestFactory formRestFactory;

public void Test() {
    String module = "workflow";

    SimpleEmployee employee = new SimpleEmployee();
    employee.setId(918327792617603074L);
    employee.setTenantKey("t82kg113nu");

    FormLayoutMultipleSaveParam formLayoutMultipleSaveParam = new FormLayoutMultipleSaveParam();
    formLayoutMultipleSaveParam.setForm(new Form(1L));
    formLayoutMultipleSaveParam.setRefId(2L);
    Map<Long, Long> refIdMap = new HashMap<>();
    refIdMap.put(2L, 3L);
    formLayoutMultipleSaveParam.setRefIdMap(refIdMap);
    Map<String, Object> customParams = new HashMap<>(4);
    formLayoutMultipleSaveParam.setCustomParams(customParams);

    FormLayoutMultipleDto formLayoutMultipleDto = formRestFactory.getFormLayoutRest(module).copySimpleFormLayoutMultipleByRefId(formLayoutMultipleSaveParam, employee);
}
```

#### 6. 获取布局中的字段属性

> 所属包：weaver-common-form-api
> 
> 所属类：com.weaver.common.form.api.rest.layout.FormLayoutRest

**接口详情：**

```java
    /**
     * 获取字段的布局配置明细,包含布局控件
     * @param layout 版本信息
     * @param containLayout 是否包含布局控件
     * @param employee 当前操作人
     * @return map key为字段id，value为字段信息json字符串
     */
    Map<String,String> buildFormFieldDetailMap(FormLayoutVersion layout, Boolean containLayout, SimpleEmployee employee);
```

**参数说明：**

| 参数名 | 具体属性 | 必传 | 类型 | 描述 |
| --- | --- | --- | --- | --- |
| layout |  | 是 | com.weaver.common.form.layout.FormLayoutVersion | 入参实体 |
| layout<br>的具体属性 | form | 是 | com.weaver.common.form.metadata.Form | 表单对象<br>封装id即可 |
| id | 是 | Long | 布局ID |  |
| layoutDetail | 否 | String | 布局明细(json字符串，包含了所有布局的明细信息)<br>老表单必填 |  |
| containLayout | 否 | Boolean | 是否包含布局控件<br>传true才会包含 |  |
| employee |  | 是 | SimpleEmployee | 用户信息（必须包含id和tenantKey） |

**返回值：**

| 类型 | 类型所属包路径 | 描述 |
| --- | --- | --- |
| Map<String,String> | Map | 字段的布局属性<br>key：字段ID<br>value：字段布局属性的json串 |

**对接示例：**

```java
import com.weaver.common.form.api.rest.FormRestFactory;
@Autowired
FormRestFactory formRestFactory;

public void Test() {
    String module = "workflow";

    SimpleEmployee employee = new SimpleEmployee();
    employee.setId(918327792617603074L);
    employee.setTenantKey("t82kg113nu");

    FormLayoutVersion layout = new FormLayoutVersion();
    layout.setId(1156582392999821251L);
    layout.setForm(new Form(1156582392999821312L));

    Map<String,String> fieldConfigMap = formRestFactory.getFormLayoutRest(module).buildFormFieldDetailMap(layout ,false, employee);
}


```

####
