> 因地理位置；人员范围选择、人员组织多选、人力资源条件； 附件类型字段较为特殊，数据格式较为复杂。  特提供对应写入结构示例

##### **地理位置写入示例**

```java
1、直接写入中文地址， 会解析当前名称所在地. 如: 上海泛微软件园 (注:该方式需要在公共组件中配置地图key)
2、可手动传入对应地址经纬度写入
Map<String, Object> positionMap = Maps.newHashMap();
Map<String, Object> locationMap = Maps.newHashMap();
positionMap.put("address", "上海泛微软件园");
// 经度
locationMap.put("lng", "104.06");
// 维度
locationMap.put("lat", "30.67");
positionMap.put("location", locationMap);
ebDataDetailDto.setContent(JSON.toJSONString(positionMap));
```

##### **人力资源相关json示例说明**

```json
// 注： fieldId:1016741470610006018对应人员范围选择字段； fieldId:1016741470610006019对应人员组织多选字段
//  人力资源条件因结构过于复杂，需结合前端组件一起使用， 暂不提供写入结构说明

{
    "datas": [
        {
            "mainDatas": [
                {
                    "content": "5115301857314387263",
                    "fieldId": "1016741470610006017",
                    "matchByName": false
                },
                {
                    "dataOptions": [
                        {
                            "optionId": "5115301857314387263",
                            "type": "user"
                        },
                        {
                            "optionId": "8514691689202524468",
                            "type": "dept"
                        },
                        {
                            "optionId": "5140517273323883176",
                            "type": "subcompany"
                        }
                    ],
                    "fieldId": "1016741470610006018",
                    "matchByName": false
                },
                {
                    "dataOptions": [
                        {
                            "optionId": "5115301857314387263",
                            "type": "resource"
                        }
                    ],
                    "fieldId": "1016741470610006019",
                    "matchByName": false
                },
                {
                    "content": "11",
                    "fieldId": "1016741470610006016",
                    "matchByName": false
                }
            ]
        }
    ],
    "header": {
        "objId": "1016741410355544064",
        "operator": "5112849484828049659",
        "tenantKey": "T2K74I3RJO"
    },
    "operation": {
        "asyncPostProcess": true,
        "checkRight": false,
        "detailDatas": {},
        "doActoin": false,
        "execIgnoreParam": false,
        "execMonitor": false,
        "execRelate": false,
        "fieldNoFindRule": "ignore",
        "mainData": {
            "needAdd": true
        },
        "needPostProcess": true,
        "optionNoFindIgnore": false,
        "refType": "empty",
        "reqType": "fieldId",
        "updateType": "ids"
    }
}
```

##### **人力资源相关代码写入组装示例**

```java
// 注: 该示例只为说明人力资源相关字段组装说明， 操作配置属性组装请查看原始新增/修改文档及对应参数说明

EBDataChangeReqDto ebDataChangeReqDto = new EBDataChangeReqDto();
// 构建基础参数; objId 表单id, operator 操作人, tenantKey 租户
ebDataChangeReqDto.setHeader(new EBDataReqHeader("845949514837516289", "5112849484828049659", "t2k74i3rjo"));
List<EBDataReqDto> datas = Lists.newArrayList();

// 数据1
EBDataReqDto ebDataReqDto = new EBDataReqDto();
List<EBDataReqDetailDto> mainData = Lists.newArrayList();
// 人力资源字段
EBDataReqDetailDto ry = new EBDataReqDetailDto("845949549147324416", "5112849484828049659");

// 人员组织多选
EBDataReqDetailDto ryzz = new EBDataReqDetailDto();
List<FormDataOptionDto> ryzzOpts = Lists.newArrayList();
FormDataOptionDto ryzzOpt = new FormDataOptionDto();
// 人员组织类型
ryzzOpt.setType(ModuleSource.resource);
// 人员组织对应值
ryzzOpt.setOptionId("5115301857314387263");
ryzzOpts.add(ryzzOpt);
ryzz.setFieldId("1016741470610006019");
ryzz.setDataOptions(ryzzOpts);

// 人员范围选择
EBDataReqDetailDto ryfw = new EBDataReqDetailDto();
List<FormDataOptionDto> ryfwOpts = Lists.newArrayList();
FormDataOptionDto ryfwOpt1 = new FormDataOptionDto();
// 人员范围1类型(人员)
ryfwOpt1.setType(ModuleSource.user);
// 人员范围1对应值(人员id)
ryfwOpt1.setOptionId("5115301857314387263");
ryfwOpts.add(ryfwOpt1);
FormDataOptionDto ryfwOpt2 = new FormDataOptionDto();
// 人员范围2类型(部门)
ryfwOpt2.setType(ModuleSource.dept);
// 人员范围2对应值(部门id)
ryfwOpt2.setOptionId("8514691689202524468");
ryfwOpts.add(ryfwOpt2);
FormDataOptionDto ryfwOpt3 = new FormDataOptionDto();
// 人员范围3类型(分部)
ryfwOpt3.setType(ModuleSource.subcompany);
// 人员范围3对应值(分部id)
ryfwOpt3.setOptionId("5140517273323883176");
ryfwOpts.add(ryfwOpt3);
ryfw.setFieldId("1016741470610006019");
ryfw.setDataOptions(ryfwOpts);

mainData.add(ry);
mainData.add(ryzz);
mainData.add(ryfw);
ebDataReqDto.setMainDatas(mainData);

datas.add(ebDataReqDto);
ebDataChangeReqDto.setDatas(datas);
EBDataChangeResult ebDataChangeResult = remoteSimpleDataService.saveFormData(ebDataChangeReqDto);
```

##### **日期区间字段写入代码组装示例**

```java
日期区间字段为复合类型字段,  前台用户所见的一个字段为真实的两个字段， 数据保存时需要对两个字段分别赋值
如果通过字段id赋值： 可调用标准获取字段接口获取字段配置信息. 或通过系统中对应表单表结构查看对应字段id
如果通过dataKey赋值： 可调用标准获取字段接口获取字段配置信息. 或通过系统中对应表单表结构查看对应字段dataKey

// 注: 该示例只为说明日期区间字段组装说明， 操作配置属性组装请查看原始新增/修改文档及对应参数说明
EBDataChangeReqDto ebDataChangeReqDto = new EBDataChangeReqDto();
// 构建基础参数; objId 表单id, operator 操作人, tenantKey 租户
ebDataChangeReqDto.setHeader(new EBDataReqHeader("845949514837516289", "5112849484828049659", "t2k74i3rjo"));
List<EBDataReqDto> datas = Lists.newArrayList();

// 数据
EBDataReqDto ebDataReqDto = new EBDataReqDto();
List<EBDataReqDetailDto> mainData = Lists.newArrayList();

// 日期区间开始日期和结束日期字段分别赋值(字段id赋值示例)
mainData.add(new EBDataReqDetailDto("1099672659072376833", "2024-11-22"));
mainData.add(new EBDataReqDetailDto("1099672659072376834", "2024-11-30"));

ebDataReqDto.setMainDatas(mainData);
datas.add(ebDataReqDto);
ebDataChangeReqDto.setDatas(datas);
EBDataChangeResult ebDataChangeResult = remoteSimpleDataService.saveFormData(ebDataChangeReqDto);
```

##### **附件字段写入代码组装示例**

```java
// 注: 该示例只为说明附件字段组装说明， 操作配置属性组装请查看原始新增/修改文档及对应参数说明
EBDataChangeReqDto ebDataChangeReqDto = new EBDataChangeReqDto();
// 构建基础参数; objId 表单id, operator 操作人, tenantKey 租户
ebDataChangeReqDto.setHeader(new EBDataReqHeader("845949514837516289", "5112849484828049659", "t2k74i3rjo"));
List<EBDataReqDto> datas = Lists.newArrayList();

// 数据1
EBDataReqDto ebDataReqDto = new EBDataReqDto();
List<EBDataReqDetailDto> mainData = Lists.newArrayList();

// 文件字段通过id写入
EBDataReqDetailDto file1 = new EBDataReqDetailDto();
file1.setFieldId("附件字段Id1");
file1.setContent("文件id");

// 文件字段通过url方式写入
EBDataReqDetailDto file2 = new EBDataReqDetailDto();
file2.setFieldId("附件字段Id2");
List<FormDataOptionDto> file2Opts = Lists.newArrayList();
FormDataOptionDto file2Opt = new FormDataOptionDto();
file2Opt.setFileUrl("文件地址");
file2Opt.setContent("文件名称(需要带文件类型后缀)");
file2Opts.add(file2Opt);
file2.setDataOptions(file2Opts);

// 文件字段通过字节流方式写入
EBDataReqDetailDto file3 = new EBDataReqDetailDto();
file3.setFieldId("附件字段Id3");
List<FormDataOptionDto> file3Opts = Lists.newArrayList();
FormDataOptionDto file3Opt = new FormDataOptionDto();
file3Opt.setFileByte("文件字节流");
file3Opt.setContent("文件名称(需要带文件类型后缀)");
file3Opts.add(file3Opt);
file3.setDataOptions(file3Opts);

mainData.add(file1);
mainData.add(file2);
mainData.add(file3);
ebDataReqDto.setMainDatas(mainData);

datas.add(ebDataReqDto);
ebDataChangeReqDto.setDatas(datas);
EBDataChangeResult ebDataChangeResult = remoteSimpleDataService.saveFormData(ebDataChangeReqDto);
```

##### **金额类型写入示例**

```java
1、若没有开启"提交时选择货币", 直接传入金额币种值即可
// 金额值
ebDataDetailDto.setContent("123");

2、若设置"提交时选择货币", 需要正确传入币种类型; 可通过查看客户环境开放平台文档: 客户域名/sp/opendoc 查看[国际化]-[币种]-[获取所有币种]获取对应币种关系
// 金额值#币种类型
ebDataDetailDto.setContent("123#CNY");
```

[图片附件未整合: ../../../../_assets/228063881157672960/001-3b3f89d7fc.png]

##### **多语言文本写入示例 **(该字段类型写入支持最低基线: 2511.01)

```java
// 多语言文本内容值较为特殊, 需要特殊传递参数.  如需通过接口方式写入该字段值, 具体传入参数格式咨询表单:王松
// 其他字段参数正常传递
ebDataDetailDto.setContentObj(多语言文本字段值);
```

##### **补充说明**

      以上只做简单说明人力资源、人员范围选择、人员组织多选字段部分类型组装示例， 其他类型可参考以上代码组装示例调整对应组织架构类型和传入值实现； 如遇到传参问题可通过ESB动作流配置对应字段写入，执行之后查看对应EB数据操作组件报文中\[原始数据\]-\[response\]-\[context\]对应的jsonString，参数结构一致

[图片附件未整合: ../../../../_assets/228063881157672960/002-cde084f549.png]
