

### e-Builder表单数据源

#### 一. 说明

	通过内部rpc接口方式提供获取及操作e-Builder表单数据的能力

#### 二. 对接步骤

##### 2.1. 引入 ebuilder-form-client jar

```xml
<dependency>
    <groupId>com.weaver</groupId>
    <artifactId>weaver-ebuilder-form-client</artifactId>
</dependency>
```

##### 2.2. 接口暴露说明

无特别说明外 所有接口均不带version 默认group均为"ebuilderform"

如：com.weaver.ebuilder.form.client.service.emobile.IEtFormDatasetService::ebuilderform

#### 三. 使用方式

##### 3.1. 获取当前应用下表单

###### 请求接口：

- List\<Obj\> getTables(String appIds);

###### 请求参数：

| 参数名 | 必选 | 参数类型 | 参数说明 |
| --- | --- | --- | --- |
| appIds | 是 | String | 应用ids |

###### 返回值：

| 类型 | 类型所属包路径 | 描述 |
| --- | --- | --- |
| List\<Obj\> | com.weaver.ebuilder.form.client.entity.obj.Obj | 表单集合 |

###### 返回示例:

```json
[
        {
            "id": "714680402077925377",         // eb表单id(如需走eb业务， 表单id使用obj#id即可)
            "formId" : "714680402077925378",    // 表单引擎id
            "createTime": 1649599498000,        // 创建时间
            "creator": "5111888490171489130",   // 创建人
            "tenantKey": "t2k74i3rjo",
            "deleteType": 0,                    // 是否删除 0正常表单
            "appId": "656345206978961409",      // 应用id
            "name": "调拨单",                   // 表单名称
            "showName": "调拨单",               // 表单显示名
            "status": 0,
            "order": 0,
            "permissionId": "730661043344949262",
            "groupId": "-1",
            "hasOldPage": 0,
            "openMatter": 0,
            "matterRightPass": 0,
            "matterSingle": "0",
            "autoSave": 0,
            "quickEdit": 0,
            "isAdvance": false,
            "publicRightTable": 1,
            "enableComment": 1,
            "enableFullSearch": false,
            "fullSearch": "0",
            "tableName": "uf_xxx",                // 数据库表名
            "tableType": "physical"               // 表单类型 physical自定义物理表/ "" 共享表/ vform 虚拟表
        },
        {
            "id": "721192298489413633",
            "createTime": 1651115667000,
            "creator": "5111888490171489130",
            "tenantKey": "t2k74i3rjo",
            "deleteType": 0,
            "appId": "656345206978961409",
            "name": "耗材调拨申请",
            "showName": "耗材调拨申请",
            "status": 0,
            "order": 1,
            "permissionId": "730661812339605518",
            "groupId": "-1",
            "hasOldPage": 0,
            "openMatter": 0,
            "matterRightPass": 0,
            "matterSingle": "0",
            "autoSave": 0,
            "quickEdit": 0,
            "isAdvance": false,
            "publicRightTable": 1,
            "enableComment": 1,
            "enableFullSearch": false,
            "fullSearch": "0",
            "tableName": "",    
            "tableType": ""  
        }
]
```

###### 返回主要属性说明:

| 参数名 | 参数类型 | 参数说明 |
| --- | --- | --- |
| id | String | 表单id |
| createTime | TimeStamp | 创建时间 |
| creator | String | 创建人id |
| deleteType | Integer | 删除状态 |
| name | String | 表单名称 |
| showName | String | 表单显示名称 |
| isAdvance | Boolean | 是否高级表单 |

##### 3.2. 获取表单字段

###### 请求接口：

- List getFields(String module, Long mainId, String formatType, Boolean needChild);

###### 请求参数：

| 参数名 | 必选 | 参数类型 | 参数说明 |
| --- | --- | --- | --- |
| module | 否 | String | 模块标识（可传空） |
| mainId | 是 | String | 表单id |
| formatType | 是 | String | 组装级联字段("1"组装; 其他值不做处理) |
| needChild | 是 | Boolean | 是否需要返回明细字段 |

###### 返回值：

| 类型 | 类型所属包路径 | 描述 |
| --- | --- | --- |
| List\<ModuleField\> | com.weaver.ebuilder.form.client.entity.field.ModuleField | 表单字段集合 |

###### 返回示例：

```json
[{
		"objId": "740102326505775105",
		"fieldId": "id",
		"fieldType": "Number",
		"fieldName": "数据ID",
		"multiSelect": false,
		"number": 0,
		"id": "5",
		"objShowName": "newtable12",
		"fieldInfo": {
			"number": 0,
			"fieldName": "id",
			"showName": "数据ID",
			"objId": 0,
			"disableGroupSearch": false,
			"type": "Number",
			"componentKey": "Text",
			"fieldId": "5"
		},
		"richEditor": false
	},
	{
		"objId": "740102326505775105",
		"fieldId": "4765551850267937873",
		"fieldType": "String",
		"fieldName": "单行文本",
		"multiSelect": false,
		"number": 1,
		"id": "4765551850267937873",
		"columnName":"dhwb",
		"objShowName": "newtable12",
		"componentKey": "Text",
		"configString": "",
		"fieldInfo": {
			"number": 1,
			"fieldName": "field_1",
			"showName": "单行文本",
			"objId": 740102326505775105,
			"disableGroupSearch": false,
			"type": "String",
			"fieldType": "string",
			"componentKey": "Text",
			"config": "",
			"fieldId": "4765551850267937873",
			"multiSelect": false
		},
		"richEditor": false
	},
	{
		"objId": "740102326505775105",
		"fieldId": "4765551850267937874",
		"fieldType": "Date",
		"fieldName": "日期",
		"multiSelect": false,
		"columnName":"dhwb",
		"number": 2,
		"id": "4765551850267937874",
		"objShowName": "newtable12",
		"componentKey": "DateComponent",
		"config": {
			"format": "yyyy-MM-dd"
		},
		"fieldInfo": {
			"number": 2,
			"fieldName": "field_2",
			"showName": "日期",
			"objId": 740102326505775105,
			"disableGroupSearch": false,
			"type": "Date",
			"fieldType": "string",
			"componentKey": "DateComponent",
			"config": "{"format":"yyyy-MM-dd"}",
			"fieldId": "4765551850267937874",
			"multiSelect": false
		},
		"richEditor": false
	}
]
```

###### 返回主要属性说明:

| 参数名 | 参数类型 | 参数说明 |
| --- | --- | --- |
| fieldId | String | 字段id |
| fieldType | String | 字段类型 |
| fieldName | String | 字段名称 |
| multiSelect | Boolean | 是否多选 |
| number | Integer | 字段顺序 |
| componentKey | String | 字段组件类型 |
| config | jsonString | 字段配置 |

##### 3.3. 获取已有字段选项

###### 请求接口：

- List getFieldOptions(Long objId, String fieldId, String query);

###### 请求参数：

| 参数名 | 参数类型 | 参数说明 |
| --- | --- | --- |
| objId | String | 表单id |
| fieldId | String | 字段id |
| query | String | com.weaver.ebuilder.teams.etform.base.query.Query 转成的jsonString 主要过滤选项用 |

###### 返回值：

| 类型 | 类型所属包路径 | 描述 |
| --- | --- | --- |
| List\<SimpleOption\> | com.weaver.ebuilder.form.client.entity.field.ModuleField | 表单字段选项集合 |

###### 返回示例：

```json
[
        {
            "id": "6475649389761969109",
            "name": "选项1"
        },
        {
            "id": "6475649389763069110",
            "name": "选项2"
        },
        {
            "id": "6475649404245969204",
            "name": "111"
        }
    ]
```

###### 返回主要属性说明:

| 参数名 | 参数类型 | 参数说明 |
| --- | --- | --- |
| id | String | 选项id |
| name | String | 选项名称 |

##### 3.4. 获取分页数据

###### 请求接口：

- Map\<String, Object\> getDatas(Long mainId, String module, String query, String otherParm);

###### 请求参数：

| 参数名 | 参数类型 | 参数说明 |
| --- | --- | --- |
| mainId | String | 表单id |
| module | String | 模块标识（可传空） |
| query | String | com.weaver.ebuilder.teams.etform.base.query.Query对象base64转码之后的值 |
| otherParm | String | 其他条件值 可支持自定义参数处理 |

###### 返回值：

| 类型 | 类型所属包路径 | 描述 |
| --- | --- | --- |
| Map\<String, Objcet\> | java.util.Map | 数据集合 |

**无权限获取数据方式说明:**

```
// 构建参数， 组装到query对象中
Map<String, Object> ebuilderDataConfig = Maps.newHashMap();
Map<String, Object> dataSetup = Maps.newHashMap();
dataSetup.put("dataPermission", "ALL");
ebuilderDataConfig.put("dataSetup", dataSetup);
q.setEbuilderDataConfig(ebuilderDataConfig);
```

  query对象说明：

| 参数名 | 参数类型 | 参数说明 |
| --- | --- | --- |
| conditions | List\<Condition\> | 老版条件解析 |
| conditionTrees | ConditionTreeDto | 新树形条件解析 |
| queryFields | List\<QueryField\> | 查询字段 |
| orderFields | List\<OrderField\> | 排序字段 |
| pageNo | Integer | 分页查询当前页码 |
| pageSize | Integer | 分页查询单页大小 |
| groupFields | List\<GroupField\> | 分组字段 |
| groupStatFields | List\<StatField\> | 聚合字段（不分组） |
| statFields | List\<StatField\> | 聚合字段 |

- 具体使用方式见[请求数据](https://weapp.eteams.cn/sp/techdoc/doc/682655755930173441#ojiPF)

###### 返回示例：

```
{
        "count": 66,
        "field_map": {},
        "list": [
            {
                "7833469351760250635": "33333",
                "7833469351760250637": "33333",
                "7833469352480064398": "15111111111",
                "7833469355344650653": [
                    {
                        "id": "5112849484828049659",
                        "name": "yyk不乱码"
                    }
                ],
                "7833469355344650654": [
                    {
                        "id": "5140517273323883176",
                        "name": "weaver-demo"
                    }
                ],
                "UPDATE_TIME": 1656569251000,
                "create_time": 1656560458000,
                "creator": [
                    {
                        "id": "5112849484828049659",
                        "name": "yyk不乱码"
                    }
                ],
                "data_status": [
                    {
                        "id": "1",
                        "name": "提交"
                    }
                ],
                "form_data_id": "5955656045764824598",
                "id": "744577497769918465",
                "obj_id": "650659679596281856"
            }
        ]
}
```

###### 返回主要属性说明:

| 参数名 | 参数类型 | 参数说明 |
| --- | --- | --- |
| id | String | 数据ID |
| form\_data\_id | String | 表单数据ID |
| obj\_id | String | 表单ID |
| creator | List | 创建人对象 |
| data\_status | List | 数据状态对象 |
| create\_time | imestamp | 创建时间 |
| UPDATE\_TIME | imestamp | 更新时间 |

##### 3.5. 新增或修改数据

```
该接口为老逻辑接口，循环调用表单接口，参数组装较为麻烦，请使用批量接口
https://weapp.eteams.cn/sp/techdoc/doc/a4eb2865-2619-4b0f-bdc8-45b87cac5f7c/freepass 批量新增
https://weapp.eteams.cn/sp/techdoc/doc/ddbf4013-a5d2-42ce-922e-8cc07f4acd7a/freepass 批量修改
```

###### 请求接口：

- WeaResult\<Map\<String, Object\>\> saveFormData(Map\<String, Object\> datajson);

###### 请求示例：

```json
{
    "datas": {
        "operationinfo": {
            "optionNoFindIgnore": "false",
            "checkRight": "n",
            "doAction": "n",
            "needAdd": "y"
        },
        "mainTable": {
            "4765173061109167191": "",
            "7833469351760250635": "123123",
            "id": ""
        }
    },
    "header": {
        "objId": 650659679596281856,
        "operator": 5112849484828049659,
		"tenantKey": "t7akvdnf84"
    }
}
```

###### 请求参数：

| 参数名 | 参数类型 | 参数说明 |
| --- | --- | --- |
| operationinfo | Map | 操作信息 |
| mainTable | Map | 主表数据集 |
| objId | String | 表单id |
| operator | String | 操作人 |
| id | String | 主表数据id;为空默认走新增逻辑;有对应数据id即为更新逻辑 |
| optionNoFindIgnore | String | 选项找不到是否忽略(默认忽略; false不忽略; true忽略;) |
| checkRight | String | 是否校验权限(默认校验; n不校验; y校验; ) |
| doAction | String | 是否执行action动作(默认不执行; y执行; n不执行; ) |
| tenantKey | String | 租户key |

###### 返回示例：

```json
{
        "data": {
            "dataId": 1205122790313764401,
            "formId": 6475111449799634347,
            "module": "ebuilderform",
            "dataDetails": [
                {
                    "fieldId": 4765111450482898127,
                    "content": "1111"
                }
            ],
            "newLayout": true,
            "optionNoFindIgnore": false
        },
        "status": "addData",
        "isSuccess": true
    }
```

###### 返回主要属性说明:

| 参数名 | 类型 | 说明 |
| --- | --- | --- |
| dataDetails | List | 数据明细 |
| dataId | String | 数据id |
| status | String | 数据保存状态 |

##### 3.6. 表单数据删除

###### 请求接口：

- WeaResult\<Map\<String, Object\>\> deleteData(Map\<String, Object\> datajson);

###### 请求示例：

```json
{
    "datas": {
        "operationinfo": {
            "checkRight": "n",
			 "doAction": "y"
        },
        "mainTable": {
            "id": "707955965202055169"
        }
    },
    "header": {
        "objId": 650659679596281856,
        "operator": 5112849484828049659,
		"tenantKey": "t7akvdnf84"
    }
}
```

###### 请求参数：

| 参数名 | 必选 | 类型 | 说明 |
| --- | --- | --- | --- |
| objId | 是 | Long | 表单id |
| id | 是 | Long | 数据id |
| doAction | 否 | String | 是否执行action动作(默认不执行; y执行; n不执行; ) |
| tenantKey | 是 | String | 租户key |

###### 返回示例：

```json
{
    "code": 200,
    "msg": "接口返回成功",
    "status": true,
    "data": {
        "msg": "删除成功",
        "isSuccess": true
    }
}
```

###### 返回主要属性说明:

| 参数名 | 类型 | 说明 |
| --- | --- | --- |
| isSuccess | Boolean | 删除状态 |
| msg | String | 删除提示 |
