金蝶云星空数据集成到钉钉:付款申请单==>金蝶—钉钉
在本文中,我们将分享如何通过轻易云数据集成平台实现金蝶云星空和钉钉之间的数据对接。具体的案例是将金蝶云星空中的付款申请单无缝传输并写入到钉钉,确保业务流程的高效运转。
首先,通过调用金蝶云星空提供的executeBillQuery接口,可以定时可靠地抓取所有需要处理的付款申请单数据。在这个过程中,我们会遇到分页和限流的问题,需要特别注意解决这些技术挑战,以确保不漏单。
随后,对抓取的数据进行格式转换,使其符合钉钉API topapi/processinstance/create 所需的数据结构。这一环节要求我们深入理解两者之间的数据格式差异,并设计相应的映射逻辑。此外,还需要对接异常处理与错误重试机制进行详细设置,以提升系统整体运行的稳定性。
最后,在批量写入数据到钉钉之前,还需考虑大量数据快速写入的方法,以避免性能瓶颈。同时,为了保证整个过程透明可视,实时监控与日志记录功能也必不可少,这样可以及时发现和解决潜在问题。
调用金蝶云星空接口executeBillQuery获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过金蝶云星空接口executeBillQuery
获取付款申请单数据,并进行必要的数据加工。
接口配置与调用
首先,我们需要配置并调用金蝶云星空的executeBillQuery
接口。该接口采用POST方法,主要用于查询付款申请单的相关信息。以下是元数据配置中的关键字段及其作用:
{
"api": "executeBillQuery",
"effect": "QUERY",
"method": "POST",
"number": "FBillNo",
"id": "{FPAYAPPLYENTRY_FEntryID}-{FMODIFYDATE}",
"idCheck": true,
...
}
api
: 指定要调用的API名称。effect
: 定义操作类型,这里为查询(QUERY)。method
: HTTP请求方法,这里为POST。number
: 用于标识记录的字段,这里使用付款申请单号(FBillNo)。id
: 用于唯一标识记录的组合字段,由条目ID和修改日期组成。
请求参数配置
请求参数是接口调用成功与否的关键。以下是元数据中定义的请求参数:
"request": [
{"field":"FID","label":"FID","type":"string","describe":"111","value":"FID"},
{"field":"FBillNo","label":"FBillNo","type":"string","describe":"111","value":"FBillNo"},
{"field":"FDOCUMENTSTATUS","label":"FDOCUMENTSTATUS","type":"string","describe":"111","value":"FDOCUMENTSTATUS"},
...
],
"otherRequest": [
{"field":"Limit","label":"Limit","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"StartRow","label":"StartRow","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"},
{"field":"FilterString","label":"FilterString","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FMODIFYDATE>='{{LAST_SYNC_TIME|date}}' and F_VDPK_CheckBox_83g='1' and FDOCUMENTSTATUS='B'"},
...
]
request
: 包含了需要从源系统获取的字段,如FID
,FBillNo
,FDOCUMENTSTATUS
等。otherRequest
: 包含了其他辅助请求参数,如分页参数Limit
,StartRow
以及过滤条件FilterString
等。
其中,FilterString
用于定义查询条件,例如:
FMODIFYDATE >= '{{LAST_SYNC_TIME|date}}' and F_VDPK_CheckBox_83g = '1' and FDOCUMENTSTATUS = 'B'
这段SQL语句表示只查询修改日期在上次同步时间之后且状态为“已审核”的记录。
数据加工与处理
在获取到原始数据后,需要对其进行清洗和加工,以便后续的数据转换和写入操作。以下是一些常见的数据加工步骤:
- 字段映射:将源系统字段映射到目标系统字段。例如,将金蝶云星空中的
FCREATORID_FName
映射到钉钉中的创建人姓名字段。 - 数据格式转换:例如,将日期格式从YYYY-MM-DD转换为目标系统所需的格式。
- 数据过滤:根据业务需求过滤掉不需要的数据。例如,只保留状态为“已审核”的记录。
实际案例
假设我们需要将金蝶云星空中的付款申请单同步到钉钉系统,具体步骤如下:
- 配置接口:如上文所述,配置好
executeBillQuery
接口及其请求参数。 - 调用接口:通过轻易云平台发起HTTP POST请求,获取付款申请单数据。
- 清洗数据:对返回的数据进行清洗和加工,包括字段映射、格式转换和数据过滤。
- 写入目标系统:将处理后的数据写入钉钉系统。
通过上述步骤,我们可以实现从金蝶云星空到钉钉系统的数据无缝对接。这不仅提高了数据处理效率,还确保了业务流程的连续性和准确性。
以上就是利用轻易云数据集成平台,通过调用金蝶云星空接口获取并加工付款申请单数据的详细技术方案。在实际应用中,可以根据具体业务需求灵活调整配置和处理逻辑,以达到最佳效果。
使用轻易云数据集成平台进行ETL转换并写入钉钉API接口
在数据集成过程中,ETL(Extract, Transform, Load)是一个关键步骤。本文将详细探讨如何使用轻易云数据集成平台将源平台的付款申请单数据转换为钉钉API接口所能接收的格式,并最终写入钉钉平台。
1. 数据请求与清洗
首先,我们需要从源系统(金蝶)中提取付款申请单的数据。假设我们已经完成了这一步,并且已经获得了所需的数据。接下来,我们将重点放在如何将这些数据转换为符合钉钉API接口要求的格式。
2. 数据转换与写入
为了将数据写入钉钉,我们需要按照钉钉API接口的要求进行格式转换。以下是元数据配置示例:
{
"api": "topapi/processinstance/create",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "process_code",
"label": "钉钉表单id",
"type": "string",
"describe": "process_code在审批流程编辑页面的URL网址中获取。",
"value": "PROC-E6E94C81-6F82-4100-8BB4-04D1F1322D7F"
},
{
"field": "originator_user_id",
"label": "发起人userid",
"type": "string",
"describe": "审批实例发起人的userid。",
"value": "_findCollection find userid from 870c742b-fee8-36d3-88ba-250ecee13a08 where name={FCREATORID_FName}"
},
{
"field": "dept_id",
"label": "发起人所属部门id",
"type": "string",
"describe": "发起人所在的部门,如果发起人属于根部门,传-1。",
"value": "_findCollection find dept_id_list.0 from 870c742b-fee8-36d3-88ba-250ecee13a08 where name={FCREATORID_FName}"
},
{
"field": "form_component_values",
"label": "表单控件",
"type": "object",
...
针对主要字段的处理
-
process_code:这是钉钉表单的唯一标识符,可以在审批流程编辑页面的URL中获取。在我们的配置中,它被硬编码为
PROC-E6E94C81-6F82-4100-8BB4-04D1F1322D7F
。 -
originator_user_id:这个字段表示审批实例发起人的userid。我们通过
_findCollection
函数从金蝶系统中查找对应的userid。 -
dept_id:表示发起人所属部门的id。如果发起人属于根部门,则传递
-1
。同样地,我们使用_findCollection
函数来查找该信息。 -
form_component_values:这是一个复杂对象,包含多个子字段,用于表示表单中的具体内容。例如:
- 单据编号(FBillNo)
- 单据类型(FBILLTYPEID_FName)
- 付款用途(FPAYPURPOSEID_FName)
- 往来单位类型(通过CASE语句进行转换)
- 总金额(FAPPLYAMOUNTFOR_H)
表格明细处理
对于表格明细部分,我们需要处理数组类型的数据。例如:
{
...
{
field: '表格',
label: '明细表格',
type: 'array',
describe: '表格',
value: 'list',
children: [
{ field: '费用项目', label: '费用项目', type: 'string', describe: '控件1', value: '{FCOSTID_FName}' },
{ field: '应付金额', label: '应付金额', type: 'string', describe: '控件2', value: '{FAPPLYAMOUNTFOR}' },
{ field: '备注', label: '备注', type: 'string', describe: '控件3', value: '{FDescription}' },
{ field: '结算方式', label: '结算方式', type: 'string', value: '{FSETTLETYPEID_FName}' }
]
}
}
在这个配置中,每个子字段都映射到金蝶系统中的相应字段,通过占位符如{FCOSTID_FName}
来引用具体值。
数据写入
一旦所有字段都经过转换并映射到目标格式,我们就可以通过POST请求将数据发送到钉钉API接口:
{
method: POST,
url: https://oapi.dingtalk.com/topapi/processinstance/create,
headers:{
Content-Type:"application/json"
},
body:{
process_code:"PROC-E6E94C81-6F82-4100-8BB4-04D1F1322D7F",
originator_user_id:"1234567890",
dept_id:"1001",
form_component_values:[
{name:"单据编号",value:"FBillNo"},
...
]
}
}
通过以上配置和操作步骤,我们能够确保源平台的数据被准确地转换并成功写入目标平台——钉钉,从而实现不同系统间的数据无缝对接。这不仅提高了业务流程的效率,也确保了数据的一致性和准确性。