datai/docs/archive/api-docs/integration/DataiIntegrationObjectController/0016-insert-multiple-object-data-to-target.md

177 lines
6.0 KiB
Markdown
Raw Normal View History

feat: 添加定时任务功能和文档 - 新增 4 个定时任务类: - ObjectSyncTask: 对象自动同步任务 - ObjectInsertTask: 对象自动插入任务 - ObjectUpdateTask: 对象自动更新任务 - MetadataChangeAutoSyncTask: 元数据变更自动同步任务 - 新增 2 个多对象操作接口: - insertMultipleObjectDataToTarget: 批量插入对象数据到目标系统 - updateMultipleObjectDataToTarget: 批量更新对象数据到目标系统 - 新增完整的定时任务文档: - task/index.md: 定时任务文档索引 - ObjectSyncTask.md: 对象自动同步任务文档 - ObjectInsertTask.md: 对象自动插入任务文档 - ObjectUpdateTask.md: 对象自动更新任务文档 - MetadataChangeAutoSyncTask.md: 元数据变更自动同步任务文档 - RateLimitResetTask.md: 每日限流重置任务文档 - 新增 API 文档索引:api-docs/index.md - 更新唯一真源文档中心:docs/index.md - 新增完整的项目文档: - REQ-005.md: 定时任务自动同步、插入和更新对象数据需求 - REQ-006.md: 元数据变更自动同步本地数据库需求 - 0005-scheduled-tasks-implementation.md: 定时任务架构决策 - 0006-metadata-change-auto-sync.md: 元数据变更自动同步架构决策 - 005-scheduled-tasks-implementation.md: 定时任务实现提示词 - 006-metadata-change-auto-sync.md: 元数据变更自动同步实现提示词 - 20260116-scheduled-tasks-implementation.md: 定时任务实现会话记录 - 20260116-metadata-change-auto-sync.md: 元数据变更自动同步实现会话记录 - 20260116-scheduled-tasks-implementation-retro.md: 定时任务实现复盘 - 20260116-metadata-change-auto-sync-retro.md: 元数据变更自动同步实现复盘 - 0015-scheduled-tasks-implementation.md: 定时任务变更记录 - 0016-metadata-change-auto-sync.md: 元数据变更自动同步变更记录 - 更新 CHANGELOG.md 和 README.md
2026-01-16 16:38:35 +08:00
# 多个对象数据插入目标系统
## 接口信息
- **接口名称**: 多个对象数据插入目标系统
- **接口路径**: `/integration/object/insertMultipleData`
- **请求方法**: POST
- **接口描述**: 该方法用于将本地数据库中的多个对象数据批量插入到目标Salesforce系统。插入操作会依次处理每个对象查询本地表中该对象的所有批次数据然后通过SOAP API插入到目标系统。插入成功后会将返回的ID保存到new_id字段并更新is_insert字段。即使某个对象插入失败也会继续插入其他对象。
## 请求参数
### 请求体
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| ids | Integer[] | 是 | 对象ID数组 | [1, 2, 3] |
| targetOrgType | String | 是 | 目标ORG类型 | "sandbox" |
### 请求示例
```json
{
"ids": [1, 2, 3],
"targetOrgType": "sandbox"
}
```
```http
POST /integration/object/insertMultipleData
Content-Type: application/json
{
"ids": [1, 2, 3],
"targetOrgType": "sandbox"
}
```
## 响应参数
### 响应格式
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"success": true,
"message": "多对象数据插入完成",
"totalObjects": 3,
"successCount": 2,
"failureCount": 1,
"totalInserted": 5000,
"duration": 15000,
"objectResults": [
{
"success": true,
"message": "对象数据插入完成",
"objectId": 1,
"objectApi": "Account",
"objectLabel": "账户",
"totalBatches": 5,
"successBatches": 5,
"failedBatches": 0,
"totalInserted": 2000,
"duration": 5000,
"batchResults": []
},
{
"success": true,
"message": "对象数据插入完成",
"objectId": 2,
"objectApi": "Contact",
"objectLabel": "联系人",
"totalBatches": 3,
"successBatches": 3,
"failedBatches": 0,
"totalInserted": 3000,
"duration": 8000,
"batchResults": []
},
{
"success": false,
"message": "没有找到任何批次",
"objectId": 3
}
]
}
}
```
### 响应字段说明
| 字段名 | 类型 | 说明 | 示例 |
|--------|------|------|------|
| code | Integer | 响应状态码200表示成功其他表示失败 | 200 |
| msg | String | 响应消息,成功时返回"操作成功",失败时返回错误信息 | 操作成功 |
| data | Object | 响应数据,包含插入结果信息 | - |
| data.success | Boolean | 操作结果 | true |
| data.message | String | 操作消息 | 多对象数据插入完成 |
| data.totalObjects | Integer | 总对象数 | 3 |
| data.successCount | Integer | 成功对象数 | 2 |
| data.failureCount | Integer | 失败对象数 | 1 |
| data.totalInserted | Integer | 总插入记录数 | 5000 |
| data.duration | Long | 总耗时(毫秒) | 15000 |
| data.objectResults | Array | 每个对象的插入结果列表 | - |
| data.objectResults[].success | Boolean | 对象插入结果 | true |
| data.objectResults[].message | String | 对象插入消息 | 对象数据插入完成 |
| data.objectResults[].objectId | Integer | 对象ID | 1 |
| data.objectResults[].objectApi | String | 对象API | Account |
| data.objectResults[].objectLabel | String | 对象标签 | 账户 |
| data.objectResults[].totalBatches | Integer | 总批次数量 | 5 |
| data.objectResults[].successBatches | Integer | 成功批次数量 | 5 |
| data.objectResults[].failedBatches | Integer | 失败批次数量 | 0 |
| data.objectResults[].totalInserted | Integer | 该对象插入记录数 | 2000 |
| data.objectResults[].duration | Long | 该对象耗时(毫秒) | 5000 |
| data.objectResults[].batchResults | Array | 批次结果列表 | - |
### 响应示例(失败)
```json
{
"code": 500,
"msg": "对象ID不能为空",
"data": null
}
```
```json
{
"code": 500,
"msg": "目标ORG类型不能为空",
"data": null
}
```
## 权限要求
- **权限标识**: `integration:object:insertData`
- **说明**: 需要登录认证,且用户需要具有插入对象数据的权限
## 业务规则
1. 如果对象ID数组为空返回错误信息"对象ID不能为空"
2. 如果目标ORG类型为空返回错误信息"目标ORG类型不能为空"
3. 即使某个对象插入失败,也会继续插入其他对象
4. 每个对象的插入结果都会记录在 objectResults 中
5. 最终的 success 字段始终为 true表示批量操作完成具体成功/失败数量通过 successCount 和 failureCount 体现
## 异常处理
| 异常场景 | 响应码 | 响应消息 |
|----------|---------|----------|
| 对象ID数组为空 | 500 | 对象ID不能为空 |
| 目标ORG类型为空 | 500 | 目标ORG类型不能为空 |
| 插入多个对象数据时发生异常 | 500 | 插入多个对象数据时发生异常: [异常信息] |
## 使用场景
1. 管理员需要批量将多个对象的数据插入到目标Salesforce系统
2. 数据迁移场景,需要将多个对象的数据从本地数据库迁移到目标系统
3. 测试环境准备,需要批量插入多个对象的测试数据
## 注意事项
1. 批量插入操作可能会耗时较长,特别是对于数据量较大的对象
2. 建议在非高峰期执行批量插入操作
3. 即使某个对象插入失败,也会继续插入其他对象
4. 可以通过 objectResults 查看每个对象的详细插入结果
5. 进度信息仅在插入进行中存在,插入完成后会被清除
## 相关接口
- [对象数据插入目标系统](0011-update-object-data-to-target.md) - 将本地数据库中的指定对象数据插入到目标Salesforce系统
- [查询指定对象的插入进度](0012-query-insert-progress.md) - 查询指定对象的插入进度
- [查询所有正在插入的对象进度](0013-query-all-insert-progress.md) - 查询所有正在插入的对象进度列表
- [多个对象数据更新目标系统](0017-update-multiple-object-data-to-target.md) - 将本地数据库中的多个对象数据更新到目标Salesforce系统