案例分享:金蝶其他应收单对接纷享销客账户支出流水--账户信息未填
在本篇技术文章中,我们将深入探讨一个实际运行的系统对接集成案例。通过本次项目,成功实现了金蝶云星空的数据无缝传输到纷享销客,尤其是针对"金蝶其他应收单"与"纷享销客账户支出流水"的特定场景。
首先,在数据获取方面,我们利用金蝶云星空提供的executeBillQuery API,实现了对“其他应收单”数据的精准抓取。此接口支持分页及限流处理,有效避免了由于大规模数据调用导致的网络拥塞和接口超时问题。同时,我们设定了定时任务机制,确保每隔一定时间段就能可靠地从金蝶云星空获取最新的数据快照。
然后,为解决两端系统间的数据格式差异,我们设计了一套数据转换逻辑。这包括字段映射、类型转换以及必要的数据清洗等步骤。例如,将获取到的数据重新格式化,以符合纷享销客API/cgri/crm/v2/data/create所需的JSON结构,从而顺利完成批量写入操作。
另外,在整个集成过程中,对于可能出现的数据异常情况,例如某条记录字段缺失或值不合法,我们实现了一套完善的错误重试机制和实时监控日志记录系统。一旦检测到接口调用失败,即可根据日志信息及时定位并解决问题,如自动重试或手动干预处理,极大提升了系统稳定性和数据完整度。
通过这些精密设计与实施方法,本次项目不仅充分展示了如何高效且可靠地进行跨平台数据集成,也为未来类似需求提供了一份成熟且值得借鉴的方法论。后续部分将详细介绍具体实施细节与代码示例。
调用源系统金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,获取并加工数据,以实现与纷享销客账户支出流水的对接。
接口配置与请求参数
首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery
接口。以下是元数据配置的详细内容:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FBillNo",
"pagination": {
"pageSize": 100
},
"idCheck": true,
"request": [
{"field": "FBillNo", "label": "单据编号", "type": "string", "value": "FBillNo"},
{"field": "FDATE", "label": "业务日期", "type": "string", "value": "FDATE"},
{"field": "FAMOUNTFOR", "label": "总金额", "type": "string", "value": "FAMOUNTFOR"},
{"field": "FCONTACTUNIT_FNumber", "label": "往来单位", "type": "string", "value":"FCONTACTUNIT.FNumber"},
{"field": "FSALEERID_FName", "label": "销售员", "type":"string","value":"FSALEERID.FName"},
{"field":"F_PRSH_Assistant_imu","label":"用途","type":"string","value":"F_PRSH_Assistant_imu.fnumber"}
],
...
}
请求参数解析
- API及方法:使用POST方法调用
executeBillQuery
API。 - 分页设置:每次请求获取100条记录,通过分页参数控制数据量。
- 字段映射:定义了多个字段,如单据编号(FBillNo)、业务日期(FDATE)、总金额(FAMOUNTFOR)等,确保从源系统获取到所需的数据。
- 过滤条件:通过
FilterString
字段设置过滤条件,例如FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and F_PRSH_Assistant_imu.fnumber in ('01')
,确保只获取符合条件的数据。
数据请求与清洗
在实际操作中,首先需要构建请求体,并根据元数据配置发送HTTP POST请求至金蝶云星空接口。以下是一个示例请求体:
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/S3.png~tplv-syqr462i7n-qeasy.image)
### 数据集成平台生命周期的第二步:ETL转换与写入纷享销客API接口
在数据集成过程中,将源平台的数据转换为目标平台能够接收的格式是关键的一步。本文将深入探讨如何使用轻易云数据集成平台,将金蝶其他应收单的数据通过ETL(Extract, Transform, Load)转换后,写入到纷享销客的账户支出流水中。
#### API接口配置解析
在进行数据写入之前,我们需要了解目标平台的API接口配置。以下是针对纷享销客API接口的元数据配置:
```json
{
"api": "/cgi/crm/v2/data/create",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "data",
"label": "数据map",
"type": "object",
"children": [
{
"field": "object_data",
"label": "表头",
"type": "object",
"children": [
{"field":"dataObjectApiName","label":"对象的api_name","type":"string","value":"AccountTransactionFlowObj"},
{"field":"name","label":"单号","type":"string","value":"{FBillNo}"},
{"field":"transaction_date","label":"交易日期","type":"string","value":"_function ROUND((TIMESTAMPDIFF(MICROSECOND, '1970-01-01 00:00:00', STR_TO_DATE('{FDATE}', '%Y-%m-%dT%H:%i:%s')) / 1000),0)"},
{"field":"customer_id","label":"客户","type":"string","value":"_findCollection find _id from b4342822-5038-3e8f-9bdf-3684ac8a551d where account_no={FCONTACTUNIT_FNumber}"},
{"field":"owner","label":"负责人","type":"string","value":"_findCollection find user_id from ad096beb-313f-340a-b153-cdf7fdf9b6d7 where name={FSALEERID_FName}","parser":{"name":"StringToArray","params":","},"default":"FSUID_F56CEEA6EDDBFE10681577526DF83326"},
{"field":"expense_type","label":"支出类型","type":"string","value":"2"},
{"field":"expense_amount","label":"支出金额","type":"string","value":"{FAMOUNTFOR}"},
{"field":"fund_account_id","label":"账户--表头没有账户信息,后续需要修改关联语句","type":"string","value":"_function case '{F_PRSH_Assistant_imu}' when '01' then '66b5c4b5537d670001a55d86' end"},
{"field":"remark","label":"备注","type":"string"},
{"field":"field_kingdee_document_number__c","label":"金蝶单号","type":"string","value":"{FBillNo}"}
]
}
]
}
],
"otherRequest": [
{
"field": "currentOpenUserId",
"label": "当前操作人userid",
"type": "string",
"value": "FSUID_F56CEEA6EDDBFE10681577526DF83326"
}
]
}
数据字段解析与转换
-
对象的api_name:
dataObjectApiName
字段指定了目标对象为AccountTransactionFlowObj
。
-
单号:
name
字段直接映射金蝶中的FBillNo
。
-
交易日期:
transaction_date
字段通过SQL函数将时间戳转换为所需格式。使用ROUND((TIMESTAMPDIFF(MICROSECOND, '1970-01-01 00:00:00', STR_TO_DATE('{FDATE}', '%Y-%m-%dT%H:%i:%s')) / 1000),0)
实现。
-
客户ID:
customer_id
字段通过查找集合中的客户编号来获取对应的客户ID,使用了_findCollection find _id from b4342822-5038-3e8f-9bdf-3684ac8a551d where account_no={FCONTACTUNIT_FNumber}
。
-
负责人:
owner
字段通过查找集合中的负责人名称来获取对应的用户ID,并使用了字符串转数组解析器StringToArray
。
-
支出类型:
expense_type
字段固定值为"2"。
-
支出金额:
expense_amount
字段直接映射金蝶中的金额字段{FAMOUNTFOR}
。
-
账户信息:
fund_account_id
字段使用条件判断语句_function case '{F_PRSH_Assistant_imu}' when '01' then '66b5c4b5537d670001a55d86' end
来确定具体账户ID。
-
备注与金蝶单号:
remark
和field_kingdee_document_number__c
分别映射备注和金蝶单号。
数据请求与写入
在完成上述字段映射和转换后,通过POST方法将数据发送到纷享销客API接口 /cgi/crm/v2/data/create
。注意,当前操作人的用户ID也需要包含在请求中,以确保操作权限和记录准确性:
{
"currentOpenUserId": "{FSUID_F56CEEA6EDDBFE10681577526DF83326}",
...
}
实际案例应用
假设我们从金蝶系统获取了一条其他应收单,其关键数据如下:
{
"FBillNo": "20231001001",
"FDATE": "2023-10-01T12:00:00",
...
}
经过ETL处理后,生成的请求体如下:
{
"data":{
...
{
object_data:{
dataObjectApiName:"AccountTransactionFlowObj",
name:"20231001001",
transaction_date:"1696156800000", // 转换后的时间戳
customer_id:"1234567890", // 查找到的客户ID
owner:"0987654321", // 查找到的用户ID
expense_type:"2",
expense_amount:"1000.00", // 示例金额
fund_account_id:"66b5c4b5537d670001a55d86", // 条件判断后的账户ID
remark:"",
field_kingdee_document_number__c:"20231001001"
}
}
...
},
currentOpenUserId:"FSUID_F56CEEA6EDDBFE10681577526DF83326"
}
通过上述配置和处理,我们成功地将源平台的数据经过ETL转换,写入到了目标平台纷享销客中。这一过程不仅确保了数据的一致性和准确性,也大大提高了业务处理效率。