金蝶云星空数据集成到轻易云集成平台技术案例:金蝶付款单转钉钉群消息
在企业财务管理中,无论是报销单据处理还是付款记录的追踪,及时准确的数据传递至关重要。本次我们将分享一个具体的系统对接集成案例,展示如何通过轻易云数据集成平台,将金蝶云星空中的付款单信息实时推送到钉钉群,实现自动化消息通知。
确保数据不漏单与分页限流处理
首先,我们需要确保从金蝶云星空获取数据时,不会有任何未捕获的付款记录。因此,在调用executeBillQuery接口时,我们实现了定时抓取机制,并结合分页查询来确保每一条数据都被完整采集。此外,为了应对可能存在的接口访问频率限制,我们设计了一套限流策略,通过控制API请求速率来保障稳定性。
// 示例代码:调用executeBillQuery并处理分页、限流
String executeBillQueryUrl = "https://api.kingdee.com/executeBillQuery";
Map<String, Object> params = new HashMap<>();
params.put("pageNum", pageNum);
params.put("pageSize", pageSize);
HttpResponse response = HttpClient.call(executeBillQueryUrl, params);
if (response.getStatusCode() == 429) {
// 限流逻辑处理
Thread.sleep(RETRY_DELAY_MILLIS);
continue;
}
// 解析返回结果并存储或进一步处理...
数据格式转换与映射
当获取到原始的数据后,需要进行一定程度的格式转换。为了让这些数据能够无缝匹配轻易云DingTalkRobotDetail接口所需的数据结构,我们利用自定义映射规则,对字段名称和类型进行了适配。同时,对于日期时间等特定格式,也采取了相应的转换措施。
// Example JSON payload for DingTalkRobotDetail API
{
"msgtype": "text",
"text": {
"content": "[支付提醒] 已支付: ${amount} 元, 收款人: ${receiver}"
},
"at": {
"isAtAll": false
}
}
异常处理中继与错误重试机制
在整个流程运行过程中,不可避免地会遇到各种异常情况,如网络波动或者第三方服务故障。在这种情况下,我们实现了一套健壮的异常处理中继与错误重试机制。当某一环节发生错误时,可自动记录日志,并尝试重新执行失败操作,以最大程度保证系统整体可靠性。
try {
// 调用发送消息API DingTalkRobotDetail 并捕捉可能异常。
HttpResponse response = Http
![数据集成平台API接口配置](https://pic.qeasy.cloud/D21.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是关键的第一步。本文将深入探讨如何使用轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取付款单数据,并进行初步加工。
#### 接口配置与调用
首先,我们需要配置和调用金蝶云星空的`executeBillQuery`接口。根据提供的元数据配置,以下是具体的请求参数和方法:
- **API**: `executeBillQuery`
- **Method**: `POST`
- **Effect**: `QUERY`
- **FormId**: `AP_PAYBILL`
请求体中的字段主要包括付款单相关的信息,如单据编号、状态、创建人、审批人等。以下是部分关键字段及其描述:
```json
[
{"field":"FPAYBILLENTRY_FEntryID","label":"FPAYBILLENTRY_FEntryID","type":"string","describe":"111","value":"FPAYBILLENTRY_FEntryID"},
{"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"},
{"field":"FCreatorId","label":"FCreatorId","type":"string","describe":"111","value":"FCreatorId"},
{"field":"FAPPROVERID","label":"FAPPROVERID","type":"string","describe":"111","value":"FAPPROVERID"}
]
此外,还需要配置分页参数和过滤条件,以确保查询结果符合业务需求。例如:
[
{"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": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FDOCUMENTSTATUS='C'"}
]
数据清洗与转换
在成功获取到付款单数据后,下一步是对数据进行清洗和转换。这一步骤至关重要,因为它决定了后续数据处理和分析的准确性。
- 字段映射与重命名:根据业务需求,对原始字段进行映射和重命名。例如,将
FBillNo
映射为付款单号
,将FDOCUMENTSTATUS
映射为单据状态
等。 - 数据类型转换:确保所有字段的数据类型符合预期。例如,将日期字符串转换为标准日期格式,将金额字段转换为数值类型等。
- 过滤无效数据:移除不符合业务规则的数据记录。例如,过滤掉未审批通过或已作废的付款单。
以下是一个简单的数据清洗示例:
def clean_data(raw_data):
cleaned_data = []
for record in raw_data:
if record['FDOCUMENTSTATUS'] == 'C': # 仅保留已审批通过的记录
cleaned_record = {
'付款单号': record['FBillNo'],
'单据状态': record['FDOCUMENTSTATUS'],
'创建人': record['FCreatorId'],
'审批人': record['FAPPROVERID'],
'创建日期': parse_date(record['FCreateDate']),
'总金额': float(record['FPAYTOTALAMOUNTFOR_H'])
}
cleaned_data.append(cleaned_record)
return cleaned_data
数据写入与通知
经过清洗和转换后的数据,可以进一步写入目标系统或触发相应的业务流程。在本案例中,我们将处理后的付款单信息发送到钉钉群,以便相关人员及时了解付款情况。
- 构建消息内容:根据清洗后的数据构建消息内容。例如:
def build_message(cleaned_data):
messages = []
for record in cleaned_data:
message = f"付款单号: {record['付款单号']}\n" \
f"单据状态: {record['单据状态']}\n" \
f"创建人: {record['创建人']}\n" \
f"审批人: {record['审批人']}\n" \
f"总金额: {record['总金额']}元\n"
messages.append(message)
return messages
- 发送消息到钉钉群:利用钉钉API将消息发送到指定群组。
import requests
def send_to_dingtalk(messages, webhook_url):
headers = {'Content-Type': 'application/json'}
for message in messages:
payload = {
'msgtype': 'text',
'text': {
'content': message
}
}
response = requests.post(webhook_url, json=payload, headers=headers)
if response.status_code != 200:
print(f"Failed to send message: {response.text}")
# 示例调用
webhook_url = 'https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN'
messages = build_message(cleaned_data)
send_to_dingtalk(messages, webhook_url)
通过上述步骤,我们实现了从金蝶云星空获取付款单数据、进行清洗和转换,并最终将处理后的信息发送到钉钉群。这个过程不仅提高了数据处理效率,还确保了信息传递的及时性和准确性。
轻易云数据集成平台ETL转换及API接口配置技术案例
在本案例中,我们将详细探讨如何使用轻易云数据集成平台,将金蝶付款单的数据进行ETL转换,并通过API接口写入钉钉群消息。我们将深入解析元数据配置,展示如何通过配置实现数据的无缝对接。
数据请求与清洗
首先,我们需要从金蝶系统中获取付款单的数据。这一步骤包括数据的请求与清洗,确保数据在进入ETL过程之前是干净且结构化的。假设我们已经完成了这一步,接下来我们重点关注数据的转换与写入。
数据转换与写入
在数据转换阶段,我们需要将金蝶系统中的付款单数据转换为钉钉群消息API能够接收的格式。以下是具体的元数据配置:
{
"api": "DingTalkRobotDetail",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field": "access_token", "label": "access_token", "type": "string", "describe": "111", "value": "56768984b88f512e47aaa10ad65861639fa047a670198f08607bc898390e2e77"},
{"field": "name", "label": "name", "type": "string", "describe": "111", "value": "付款单审核通知"},
{"field": "lessee_name", "label": "lessee_name", "type": "string", "describe": "111"},
{"field": "number", "label": "number", "type": "string", "describe": "111",
“value”: “{FBillNo}”},
{"field": “response_at”, “label”: “response_at”, “type”: “string”, “describe”: “111”,
“value”: “_function UNIX_TIMESTAMP('{{FDATE|datetime}}')”},
{"field":"problem","label":"problem","type":"string","describe":"111","value":"{FBillNo}{FCONTACTUNIT_name} 已付款{FPAYTOTALAMOUNTFOR_H}"},
{"field":"solution","label":"solution","type":"string","describe":"111","value":"{solution}"},
{"field":"id","label":"id","type":"string","describe":"111"}
]
}
元数据配置解析
-
API Endpoint:
DingTalkRobotDetail
- 这是目标平台钉钉群消息的API接口名称。
-
HTTP Method:
POST
- 我们使用POST方法将数据发送到钉钉群消息接口。
-
ID Check:
true
- 确保每次请求都有唯一标识,以避免重复发送。
-
Request Fields:
access_token
: 用于认证和授权,确保请求合法。name
: 消息名称,这里固定为“付款单审核通知”。lessee_name
: 租户名称,从源系统中获取。number
: 付款单号,对应金蝶系统中的FBillNo
字段。response_at
: 响应时间,通过函数UNIX_TIMESTAMP
将日期时间格式化。problem
: 问题描述,结合多个字段生成详细信息,如“{FBillNo}{FCONTACTUNIT_name} 已付款{FPAYTOTALAMOUNTFOR_H}”。solution
: 解决方案,从源系统中获取或预定义。id
: 唯一标识符,用于跟踪和管理消息。
数据映射与转换
在轻易云平台中,我们可以利用内置的函数和模板语言进行字段映射和转换。例如:
- 日期时间格式化: 使用
UNIX_TIMESTAMP('{{FDATE|datetime}}')
将日期时间字段转换为Unix时间戳格式,便于目标系统处理。 - 字符串拼接: 在
problem
字段中,通过拼接多个源字段(如FBillNo
,FCONTACTUNIT_name
,FPAYTOTALAMOUNTFOR_H
)生成完整的问题描述。
数据写入
完成上述配置后,轻易云平台会自动将处理好的数据通过POST请求发送到钉钉群消息接口。每个字段的数据都经过精确映射和转换,确保目标平台能够正确接收和处理这些信息。
通过以上步骤,我们成功地实现了从金蝶付款单到钉钉群消息的数据集成。轻易云数据集成平台提供了强大的ETL功能和灵活的元数据配置,使得复杂的数据集成任务变得简单高效。