吉客云数据集成到金蝶云星空:生产领料业务的系统对接实现
本文分享了吉客云与金蝶云星空在“其他出库-生产领料”场景下的数据集成方案。通过此次案例,展示如何有效地利用API接口进行数据获取、转换以及批量写入操作。
为实现吉客云erp.storage.goodsdocout.v2
接口数据的定时可靠抓取,我们首先设计了一套自动化任务调度机制,用于定期调用吉客云API并实时监控其执行状态。同时,对获取的数据进行分页处理和限流控制,以确保大规模数据传输过程中的性能稳定性。
为了应对吉客云与金蝶云星空之间的数据格式差异问题,自定义了专属的数据转换逻辑,将原始数据统一映射至符合金蝶云星空规范的结构。在此基础上,通过可视化数据流设计工具,使整个流程从配置到管理都更加直观简便,并且支持高吞吐量的数据写入能力,实现大量出库业务记录快速导入。
在向金蝶云星空写入过程中采用其batchSave
API,为保证每一批次保存操作的高效性与准确性,引入了集中式监控和告警系统。这不仅能够实时跟踪每个任务节点,还能及时发现并处理异常情况。此外,该方案还特别关注错误重试机制,确保即使出现故障,也能做到持续恢复和准确回写。
通过这套完整、高效且兼具灵活性的解决方案,不仅保障了生产领料业务中各项关键环节无缝衔接,同时极大提升了企业内部数据信息的一致性和准时性交付水平。
调用吉客云接口获取并加工数据的技术实现
在轻易云数据集成平台的生命周期中,调用源系统接口是关键的第一步。本文将详细探讨如何通过调用吉客云接口 erp.storage.goodsdocout.v2
获取并加工数据,以实现其他出库-生产领料的集成方案。
接口配置与请求参数
首先,我们需要配置调用吉客云接口所需的元数据。以下是该接口的详细配置:
{
"api": "erp.storage.goodsdocout.v2",
"effect": "QUERY",
"method": "POST",
"number": "goodsdocNo",
"id": "goodsdocNo",
"idCheck": true,
"request": [
{"field": "pageIndex", "label": "分页页码", "type": "string"},
{"field": "pageSize", "label": "分页页数", "type": "string", "value": "50"},
{"field": "goodsDocNo", "label": "出库单号", "type": "string"},
{"field": "startDate", "label": "创建时间的起始时间", "type": "string",
"value":"{{LAST_SYNC_TIME|datetime}}"},
{"field": "endDate",
"label":"创建时间的结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"},
{"field":"inouttype","label":"类型","type":"string","describe":
"201-销售出库 202调拨出库 203 = 盘亏出库 204-其他出库 205采购退货
206生产领料 207组装拆卸出库 208翻新出库 209报废出库
210残次品出库 211倒冲出库 212 包材出库
215维修还厂 231成本调整出库","value":"206"},
{"field":"sourceBillNo","label":"来源单号","type":"string"},
{"field":"warehouseCode","label":"仓库编号","type":"string"},
{"field":"vendCode","label":"供应商编号(往来单位)","type":"string"},
{"field":"billNo","label":"上游单据号(关联单号)","type":"string"},
{"field":"userName","label":"创建人名称","type":"string"},
{"field":"outBillNo","label":"外部单号(全模糊匹配)","type":"string"},
{"field":"gmtModifiedStart","label":"主表更新时间起始","type":"string"},
{"field":"gmtModifiedEnd","label":"主表更新时间截至","type":"string"},
{"field":"selelctFields",
"label":"返回参数",
"type":
"string",
"value":
"goodsdocNo,inOutDate,gmtCreate,inouttype,vendCustomerCode,warehouseCode,warehouseName,inOutReason,redStatus,financeBillStatus,goodsDocDetailList.goodsNo,goodsDocDetailList.goodsName,goodsDocDetailList.quantity,goodsDocDetailList"}
],
...
}
请求参数解析
- 分页参数:
pageIndex
和pageSize
用于控制分页请求,确保每次请求的数据量适中。 - 时间范围:
startDate
和endDate
分别表示数据同步的起始和结束时间,使用模板变量{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
动态生成。 - 业务类型:
inouttype
固定为206
,表示生产领料。 - 返回字段:通过
selelctFields
指定需要返回的数据字段,包括主表和明细表字段。
数据请求与清洗
在完成接口配置后,我们可以发起数据请求。假设我们需要获取最近一次同步后的所有生产领料记录,可以构造如下请求:
{
"pageIndex": "1",
"pageSize": "50",
...
}
平台会根据配置自动填充 startDate
和 endDate
等动态参数,并发送 POST 请求至吉客云接口。
数据清洗与转换
收到响应后,需要对数据进行清洗和转换。以下是一个典型的响应示例:
{
...
{
goodsdocNo: 'GD12345',
inOutDate: '2023-10-01',
gmtCreate: '2023-10-01T12:00:00Z',
inouttype: '206',
vendCustomerCode: 'V001',
warehouseCode: 'WH001',
warehouseName: 'Main Warehouse',
inOutReason: 'Production Material',
redStatus: '0',
financeBillStatus: '1',
goodsDocDetailList: [
{
goodsNo: 'G001',
goodsName: 'Material A',
quantity: '100'
},
...
]
}
...
}
根据元数据配置中的条件过滤器,我们仅保留 quantity > 0
的记录。同时,通过自动填充响应功能,将嵌套结构展平,便于后续处理。
异常处理与补偿机制
为了确保数据完整性,平台提供了异常处理与补偿机制。例如,通过定时任务(crontab)定期检查并补偿遗漏的数据:
{
...
omissionRemedy: {
crontab: '1 2 * * *', // 每天凌晨2点执行
takeOverRequest:[
{
field:"startDate",
value:"_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )"
}
]
}
}
该机制确保即使在网络波动或系统故障情况下,也能及时补偿缺失的数据。
通过以上步骤,我们成功实现了调用吉客云接口获取并加工生产领料数据,为后续的数据转换与写入奠定了基础。这一过程展示了轻易云平台在异构系统集成中的强大能力和灵活性。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例
在数据集成过程中,将源平台的数据转换为目标平台所能接收的格式是关键步骤之一。本文将深入探讨如何利用轻易云数据集成平台,将源平台的数据进行ETL(Extract, Transform, Load)转换,并最终通过金蝶云星空API接口写入目标平台。
数据请求与清洗
在数据请求阶段,我们从源平台获取原始数据,并对其进行初步清洗和过滤。假设我们已经完成了这一阶段,接下来我们将重点放在如何将这些清洗后的数据转换为金蝶云星空API能够接收的格式。
数据转换与写入
为了实现这一目标,我们需要配置元数据,以确保数据能够正确地映射到金蝶云星空API所需的字段中。以下是具体的元数据配置示例:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "merge",
"field": "goodsDocDetailList_ownerName,inOutMonth",
"bodyName": "items",
"bodySum": ["goodsDocDetailList_quantity"],
"header": ["inOutMonth", "goodsDocDetailList_ownerName"],
"body": ["goodsDocDetailList_goodsNo", "goodsDocDetailList_quantity", "warehouseCode"]
},
"request": [
{
"field": "FJKYNo",
"label": "吉客云单号",
"type": "string",
"describe": "单据编号",
"value": "{goodsdocNo}"
},
{
...
}
],
...
}
配置解析
-
API调用配置:
api
: 指定要调用的金蝶云星空API接口,这里使用batchSave
。effect
: 设置为EXECUTE
,表示执行操作。method
: 使用POST
方法提交请求。
-
操作参数:
rowsKey
: 指定数组键名,这里设置为array
。rows
: 指定处理行数,这里设置为1。method
: 合并方法,设置为merge
。field
: 指定合并字段,这里是goodsDocDetailList_ownerName,inOutMonth
。bodyName
: 设置请求体名称为items
。bodySum
: 指定需要汇总的字段,这里是goodsDocDetailList_quantity
。
-
请求参数映射:
- 每个字段都有详细的配置,包括字段名、标签、类型、描述和值。例如:
{ ... { "field": "FStockOrgId", ... "value": "{goodsDocDetailList_ownerName}", ... } ... }
- 使用占位符如
{goodsdocNo}
和{inOutMonth}
来动态填充实际值。
- 每个字段都有详细的配置,包括字段名、标签、类型、描述和值。例如:
-
明细信息:
- 配置子字段,如物料编码、库存状态、发货仓库和实发数量等。例如:
{ ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... {"field":"FMATERIALID","label":"物料编码","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{items.goodsDocDetailList_goodsNo}}","parent":"FEntity"}, {"field":"FStockStatusId","label":"库存状态","type":"string","value":"KCZT01_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FSTOCKID","label":"发货仓库","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{items.warehouseCode}}","parent":"FEntity"}, {"field":"FQty","label":"实发数量","type":"string","value":"{{items.goodsDocDetailList_quantity}}"} } } } } } } } } } } } }
- 配置子字段,如物料编码、库存状态、发货仓库和实发数量等。例如:
-
其他请求参数:
- 配置业务对象表单ID、是否自动提交并审核等。例如:
{ ... {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"STK_MisDelivery"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"}, {"field":"Operation","label":"执行的操作","type":"string","value":"Save"}, {"field":"InterationFlags","label":"","负库存"type:"string","value":"STK_InvCheckResult"}
- 配置业务对象表单ID、是否自动提交并审核等。例如:
实际应用
通过上述配置,我们可以确保从源平台获取的数据经过ETL转换后,能够准确地映射到金蝶云星空API所需的格式。这样一来,不同系统间的数据无缝对接得以实现,大大提升了业务流程的效率和透明度。
在实际应用中,可以根据具体需求调整元数据配置,以适应不同的数据结构和业务逻辑。这种灵活性使得轻易云数据集成平台成为一个强大的工具,能够满足各种复杂的数据集成需求。