简道云数据集成到金蝶云星空:流量成交表(二合一)=> 销售出库单
在复杂的业务场景中,如何高效且准确地将简道云的数据集成到金蝶云星空系统,是许多企业关注的重点。本文分享了一个实际运行的案例,通过轻易云的数据集成平台,实现了从简道云获取流量成交表(二合一),并将数据批量写入金蝶云星空中的销售出库单。
为了确保整个过程能够无缝进行,我们利用了以下关键技术特性与API接口:
数据获取与处理
首先,通过调用简道云提供的API接口/api/v2/app/{app_id}/entry/{entry_id}/data
来抓取所需数据。这一步需要特别注意分页和限流问题,因为大量的数据请求有可能导致接口响应时间增加甚至失败。在这个过程中,我们实现了一套定时可靠的抓取机制,使得每次调用都尽可能成功,并监控借助于内置的数据质量监控功能及时发现异常情况。
数据转换及自定义逻辑
由于简道云和金蝶云星空在数据结构上存在差异,因此我们使用轻易平台提供的自定义数据转换工具,对抓取到的数据进行了格式转换。这一步包括但不限于字段映射、单位换算以及日期格式调整,以适应目标系统需求。通过可视化设计工具,操作人员无需编写繁琐代码,即可直观完成这些任务,大大提升了工作效率。
数据批量写入与性能优化
当所有准备工作就绪后,将处理后的数据以高吞吐量方式批量写入到金蝶云星空,这是至关重要的一步。我们采用金蝶 API batchSave
进行操作,在此过程中,确保对接异常处理机制和错误重试策略有效实施。一旦发现任何失误或不一致,可以即时告警并自动重新尝试,以保证最终结果正确无误。同时,我们还配备集中监控告警系统,实时跟踪整个任务状态及性能表现,让管理者对全流程执行情况心中有数。
通过以上几个环节,不仅高效解决了如何从简道快速、安全地提取大量交易记录,还顺利实现了向金蝶上传整合销售数据信息,从而达到了强化业务透明度,提高运营效率目标。在下文中,将进一步详细介绍具体方案步骤与实施细节,包括请求参数配置、日志记录方法等。
调用简道云接口获取并加工数据的技术实现
在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用简道云接口/api/v2/app/{app_id}/entry/{entry_id}/data
来获取并加工数据。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是具体的配置细节:
{
"api": "/api/v2/app/{app_id}/entry/{entry_id}/data",
"effect": "QUERY",
"method": "POST",
"number": "_widget_1683509935530",
"id": "_id",
"idCheck": true,
"request": [
{
"field": "appId",
"label": "应用ID",
"type": "string",
"describe": "应用ID",
"value": "642307c010703500087839ac"
},
{
"field": "entryId",
"label": "表单ID",
"type": "string",
"describe": "表单ID",
"value": "6438b3adacef5e0009b2e467"
},
{
"field": "fields",
"label": "需要查询的字段",
"type": "string",
"describe": "多个字段以逗号隔开,默认不传入则输出所有字段",
"parser": {
"name": "StringToArray",
"params": ","
}
},
{
"field": "limit",
"label": "每页返回数量",
"type": "string",
"describe": "[1~100],默认10条记录。",
...
请求参数解析
在请求参数中,我们定义了多个字段,包括应用ID(appId
)、表单ID(entryId
)、需要查询的字段(fields
)以及每页返回数量(limit
)。这些参数确保我们能够灵活地控制数据请求的范围和内容。
例如,以下是一个典型的请求体:
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
![如何开发钉钉API接口](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image)
### 数据集成与ETL转换:轻易云平台至金蝶云星空API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式。本文将详细介绍如何通过轻易云数据集成平台,将流量成交表(二合一)的数据转换并写入金蝶云星空API接口。
#### 配置元数据
在进行ETL转换之前,我们需要配置好元数据,以确保数据能够正确映射到目标平台的API接口。以下是关键的元数据配置:
```json
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"number": "FBillNo",
"id": "FBillNo",
"name": "FBillNo",
"idCheck": true,
"request": [
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{_widget_1683509935530}"},
{"field":"FDate","label":"日期","type":"datetime","describe":"日期","value":"{_widget_1680516292932}"},
{"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"销售组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{_widget_1704940494753}"},
{"field":"FCustomerID","label":"客户","type":"string","describe":"客户","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{_widget_1704940494720}"},
{"field":"FStockOrgId","label":"发货组织","type":"string","describe":"发货组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{_widget_1704940494753}"},
{"field":"FNote","label":"备注","type":"string","describe":"备注","value":"{_widget_1680516292942}"},
{
"field": "FEntity",
"label": "明细信息",
"type": "array",
"describe": "明细信息",
"value": "_widget_1680764252483",
"children": [
{"field": "FMaterialID", "label": "物料编码", "type": "string", "describe": "物料编码",
"parser":{"name": "ConvertObjectParser",
"params":
"FNumber"},
"value":
"{{_widget_1680764252483._widget_1683178621266}}"
},
{"field":
"FRealQty",
"label":
"实发数量",
"type":
"int",
"describe":
"实发数量",
"value":
"{{_widget_1680764252483._widget_1680768645007}}"
},
{"field":
"FTaxPrice",
"label":
"含税单价",
"type":
"float",
"describe":
"含税单价",
"value":
"_function round({{_widget_1680764252483._widget_1680768644995}},2)"
},
{"field":
"FOwnerTypeId",
"label":
"货主类型",
"type":
"string",
"describe":
"货主类型",
"value":
"BD_OwnerOrg"
},
{"field":
FOwnerId,
label:
HuoZhu,
type:
string, describe:
HuoZhu, parser:{
name: ConvertObjectParser, params: FNumber}, value:{ _ widget _1704940494753}},
{ field: FStockID, label: CangKu, type: string, describe: CangKu, parser:{ name: ConvertObjectParser, params: FNumber}, value:{ _ widget _1704940494655}},
{ field: FIsFree, label: ShiFuZengPin, type: bool, describe: ShiFuZengPin, value:_function CASE '{{ _ widget _1680764252483._ widget _1680768644995}}' WHEN '0' THEN '1' WHEN ' ' THEN '1' ELSE '0' END},
{ field: FEntrynote, label: BeiZhu, type: string, describe: BeiZhu},
{ field: Flot, label: PiHao, type:string,value:"123",parser:{ name:"ConvertObjectParser",params:"FNumber"}},
{ field:FEntryTaxRate,label:"ShuiLv",type:"string",value:"1"}
]
}
],
otherRequest:[
{ field:"FormId", label:"YeWuDuiXiangBiaoDanId", type:"string", describe:"YeWuDuiXiangBiaoDanId ", value:"SAL_OUTSTOCK"},
{ field:"Operation ", label:"ZhiXingDeCaoZuo ", type:"string ", describe:"ZhiXingDeCaoZuo ", value:"BatchSave"},
{ field:"IsAutoSubmitAndAudit ", label:"TiJiaoBingShenHe ", type:"bool ", describe:"TiJiaoBingShenHe ", value:true},
{ field:"IsVerifyBaseDataField ", label:"YanZhengJiChuZiLiao ", type:"bool ", describe:"YanZhengJiChuZiLiao ", value:true},
{ field :"SubSystemId ", label :"XiTongMoKuai ", type :"string ", describe :"XiTongMoKuai ", value :"21"},
{ field :"InterationFlags ", label :"YunXuFuKuCun ", type :"string ", describe :"YunXuFuKuCun ", value :"STK_InvCheckResult"}
],
operation:{
rowsKey : array,
rows :1,
method : batchArraySave
}
}
数据请求与清洗
在数据请求阶段,我们从源系统(如流量成交表)获取原始数据,并进行必要的清洗和标准化处理。这个过程包括去除冗余字段、标准化日期格式、校验数据完整性等操作。
数据转换与写入
-
字段映射与转换:
- 使用
ConvertObjectParser
对字段进行解析和转换。例如,FBillTypeID
、FSaleOrgId
等字段需要通过ConvertObjectParser
将内部编码转为金蝶云星空所能识别的编码。 - 对于复杂的数据结构,如明细信息(
FEntity
),需要逐层解析和映射。例如,物料编码(FMaterialID
)同样需要通过ConvertObjectParser
进行转换。
- 使用
-
特殊字段处理:
- 对于一些特殊字段,如含税单价(
FTaxPrice
),我们使用自定义函数进行处理。例如,通过_function round({{_widget_1680764252483._widget_1680768644995}},2)
保证价格保留两位小数。 - 对于是否赠品(
FIsFree
)字段,通过条件判断函数_function CASE '{{ _ widget _1680764252483._ widget _1680768644995}}' WHEN '0' THEN '1' WHEN ' ' THEN '1' ELSE '0' END
来确定其值。
- 对于一些特殊字段,如含税单价(
-
批量保存:
- 配置
operation.rowsKey = array
,operation.rows = 1
,operation.method = batchArraySave
来实现批量保存操作。 - 设置
otherRequest.IsAutoSubmitAndAudit = true
, 确保提交并审核操作自动完成。
- 配置
-
API调用:
- 最后,通过 POST 请求调用金蝶云星空的
batchSave
API,将处理后的数据写入目标系统。确保所有必填字段均已正确填写,并且符合 API 接口要求。
- 最后,通过 POST 请求调用金蝶云星空的
实际案例
假设我们从源系统获取到如下原始数据:
{
"_widget_1683509935530": "SO20231001",
"_widget_1680516292932": "2023-10-01T00:00:00",
"_widget_1704940494753": ["ORG001"],
"_widget_1704940494720": ["CUS001"],
"_widget_1704940494655":["STK001"],
"_widget_1680516292942":["Test Note"],
"_widget_1680764252483":[
{
"_widget_1683178621266":["MAT001"],
"_widget_1680768645007":[100],
"_widget_1680768644995":[50]
}
]
}
经过 ETL 转换后,生成如下符合金蝶云星空 API 接口要求的数据:
{
...
}
通过上述步骤,我们实现了从源系统到目标系统的数据无缝对接,确保了数据的一致性和准确性。这不仅提高了业务效率,也为企业的数据管理提供了强有力的支持。