### 吉客云数据集成到金蝶云星空:JY-BDS组装拆卸单案例分享
在本篇技术文章中,我们将深入探讨如何通过轻易云数据集成平台,将吉客云的数据高效、可靠地集成到金蝶云星空系统中。目标是配置和实现名为“JY-BDS组装拆卸单”的实际运行方案。
首先,考虑到两大系统之间的API接口特性,吉客云提供了获取数据的 `erp.combined.get` API,而金蝶云星空则支持批量写入操作,通过其 `batchSave` API 实现。本次集成过程中,我们着重于以下关键环节:
1. **定时可靠的数据抓取**:
使用定时任务机制,从吉客云的 `erp.combined.get` 接口定期拉取最新数据,并确保每次获取的数据完整且不漏单。在处理分页和限流问题上进行了优化,以便应对大量数据请求。
2. **自定义数据转换逻辑**:
针对业务需求,对从吉客云获取的数据进行必要的格式转化,使其符合金蝶云星空要求。例如,在字段映射与值转换方面,使用自定义规则来保证转换过程准确无误。
3. **快速批量写入**:
实现从轻易平台直接向金蝶云星空的大规模高效写入。在这部分,通过运用分批处理技术以及优化并发数量,使得大量数据能够被快速且稳定地录入到目标系统中。
4. **集中监控与告警系统**:
在整个集成流程中,实时跟踪各项任务状态,包括成功率、执行耗时及异常情况等。一旦出现问题,比如网络延迟或者服务崩溃,可以即时触发告警并启动错误重试机制以保障业务连续性。
5. **异常处理与日志记录**:
详细记录每一笔操作日志,对于可能出现的任何异常都设立完善的捕捉与重试策略,从而减少因偶然因素导致的数据丢失或重复。同时,为后续复盘和调优提供充分依据。
以上几个核心步骤构建了一个健全、高效、安全可靠的数据集成模式。接下来我们将逐步展开详细讲解具体实施方案及相关技术细节。
![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/D8.png~tplv-syqr462i7n-qeasy.image)
### 调用吉客云接口erp.combined.get获取并加工数据的技术实现
在数据集成生命周期的第一步,我们需要从源系统吉客云中调用接口`erp.combined.get`来获取原始数据,并对其进行初步加工。以下将详细探讨如何通过轻易云数据集成平台配置元数据,完成这一过程。
#### 接口调用配置
首先,我们需要根据提供的元数据配置来设置API调用参数。以下是具体的配置细节:
```json
{
"api": "erp.combined.get",
"method": "POST",
"number": "assNo",
"id": "assId",
"pagination": {
"pageSize": 50
},
"idCheck": true,
"request": [
{
"label": "开始日期",
"field": "applyStartDate",
"type": "string",
"value": "{{DAYS_AGO_1|datetime}}"
},
{
"label": "结束日期",
"field": "applyEndDate",
"type": "string",
"value": "{{CURRENT_TIME|datetime}}"
}
]
}
```
#### 参数解析与配置
1. **API与方法**:
- `api`: 指定了要调用的API接口为`erp.combined.get`。
- `method`: 使用POST方法进行请求。
2. **标识字段**:
- `number`: 数据记录的编号字段为`assNo`。
- `id`: 数据记录的唯一标识字段为`assId`。
3. **分页设置**:
- `pagination`: 设置每次请求的数据条数为50条,以便处理大批量数据时能够分批获取,避免单次请求过多导致性能问题。
4. **ID检查**:
- `idCheck`: 设置为true,表示在处理数据时会进行ID检查,确保数据唯一性和完整性。
5. **请求参数**:
- `request`: 包含两个时间参数,分别是开始日期和结束日期,用于限定查询的数据范围。
- `applyStartDate`: 开始日期,使用模板变量`{{DAYS_AGO_1|datetime}}`表示当前时间前一天。
- `applyEndDate`: 结束日期,使用模板变量`{{CURRENT_TIME|datetime}}`表示当前时间。
#### 数据请求与清洗
在完成上述配置后,通过轻易云平台发起API请求,从吉客云中获取符合条件的数据。以下是一个示例请求体:
```json
{
"applyStartDate": "<昨天的日期>",
"applyEndDate": "<当前时间>"
}
```
假设我们今天是2023年10月10日,那么实际发送的请求体可能如下:
```json
{
"applyStartDate": "2023-10-09T00:00:00Z",
"applyEndDate": "2023-10-10T23:59:59Z"
}
```
#### 数据转换与写入
获取到原始数据后,需要对其进行初步清洗和转换,以便后续处理和分析。主要包括以下步骤:
1. **格式转换**:将日期、时间等字段转换为标准格式,确保一致性。
2. **字段映射**:根据业务需求,将原始数据中的字段映射到目标系统所需的字段。例如,将吉客云中的`assNo`映射到目标系统中的订单编号字段。
3. **去重与校验**:利用ID检查功能,对获取的数据进行去重和校验,确保每条记录都是唯一且有效的。
通过以上步骤,我们可以高效地从吉客云中获取并初步加工所需的数据,为后续的数据转换与写入奠定基础。这一过程中,轻易云平台提供了全透明可视化操作界面,使得每个环节都清晰易懂,并实时监控数据流动和处理状态,大大提升了业务透明度和效率。
![如何开发企业微信API接口](https://pic.qeasy.cloud/S26.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式。本文将详细探讨如何利用轻易云数据集成平台,将源数据转换为金蝶云星空API接口所需的格式,并最终写入目标平台。
#### 元数据配置解析
首先,我们需要理解元数据配置中的各个字段及其作用。以下是一个典型的元数据配置示例:
```json
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{assNo}"},
{"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{companyCode}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"ZZCX01_SYS"},
{"field":"FAffairType","label":"事务类型","type":"string","describe":"下拉列表","value":"_function case {assembleType} when 1 then 'Assembly' else 'Dassembly' end"},
{"field":"FSubProOwnerIdH","label":"子件货主","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{companyCode}"},
{"field":"FSubProOwnTypeIdH","label":"子件货主类型","type":"string","describe":"组织","value":"BD_OwnerOrg"},
{"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"},
{"field":"FOwnerIdHead","label":"成品货主","type":"string","describe":"多类别基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{companyCode}"},
{"field":"FDate","label":"","type":"","describe":"","value":""},
{"field":"","label":"","type":"","describe":"","value":""}
],
"otherRequest":[
{"field":"","label":"","type":"","describe":"","value":""}
]
}
```
#### 数据转换与写入
1. **请求头设置**:在请求头中,我们需要指定API路径和HTTP方法。在这个例子中,`api`字段设定为`batchSave`,表示我们将使用金蝶云星空的批量保存接口;`method`字段设定为`POST`,表示我们将使用HTTP POST方法发送请求。
2. **字段映射与转换**:
- `FBillNo`:单据编号,从源数据中的`assNo`字段获取。
- `FStockOrgId`:库存组织,需要通过`ConvertObjectParser`解析器将源数据中的公司代码(`companyCode`)转换为金蝶系统识别的格式。
- `FBillTypeID`:单据类型,固定值为“ZZCX01_SYS”,同样需要通过解析器进行转换。
- `FAffairType`:事务类型,根据条件判断,如果装配类型(`assembleType`)为1,则值为“Assembly”,否则为“Dassembly”。
- `FSubProOwnerIdH`, `FOwnerIdHead`, `FOwnerIdSETY`, 等等:这些字段都需要通过解析器将公司代码转换为金蝶系统识别的格式。
3. **日期格式化**:
- `FDate`: 日期字段,需要通过函数将UNIX时间戳(毫秒)转换为标准日期时间格式。
4. **嵌套数组处理**:
- `FEntity`: 成品信息,包括物料编码、数量、仓库等,需要从源数据中的产品信息(product)提取并映射到相应字段。
- `FSubEntity`: 子件信息,包括物料编码、数量、仓库等,需要从源数据中的材料信息(material)提取并映射到相应字段。
5. **其他请求参数**:
- `FormId`: 固定值“STK_AssembledApp”,表示业务对象表单ID。
- `IsAutoSubmitAndAudit`: 设置为true,表示自动提交并审核。
- `IsVerifyBaseDataField`: 设置为true,表示验证所有基础资料有效性。
#### 实际案例
假设我们有如下源数据:
```json
{
"assNo": "A12345",
"companyCode": "C001",
"assembleType": 1,
"applyDate": 1672531199000,
"remark": "测试备注",
"product": [
{
"goodsNo": "P001",
"quantity": 10,
"warehouseCode": "W001",
"rowRemark": ""
}
],
"material": [
{
"goodsNo": "",
""
""
""
""
""
""
```
根据上述元数据配置和处理逻辑,我们可以生成如下目标平台所需的数据格式:
```json
{
...
}
```
通过轻易云的数据集成平台,我们可以轻松实现复杂的数据转换和写入操作,从而确保不同系统间的数据无缝对接,提高业务效率。
![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)