文档首页/
华为云SparkPack解决方案/
最佳实践/
SparkPack 企业ERP企业微信集成指南/
开发指南/
SparkPackERP和OA的接口封装到集成工作台/
企业微信数据结构转换SparkPackERP数据结构执行动作
更新时间:2023-11-02 GMT+08:00
企业微信数据结构转换SparkPackERP数据结构执行动作
- 同上步骤1
- 选择执行动作-创建执行动作,类型选择函数:
基本信息中执行动作名称为“微信-SAP数据转换”;
配置输入中选择创建函数如下图;
给函数命名,配置入参出参如下:
输入函数内容如下:
/** * * mssiAuthData参数样例 * { * "header":{}, // 连接器认证header参数 * "path": {}, // 连接器认证path参数 * "query":{}, // 连接器认证query参数 * "body":{}, // 连接器认证body参数 * "host":"https://demo.com // API主机地址 * } * */ //对输入数据做转码处理 function extractEventData(event, name) { let data = event[name] if (event.isBase64Encoded && data) { data = new Buffer(data, 'base64').toString() } return data ? JSON.parse(data) : {} } let handlerWxData = (o, a) => { let obj = { ...o } let arr = [...a] arr.forEach(item => { if (item['control'] != 'Table') { obj[item['title'][0]['text']] = item['title'][0]['text'] == "草稿单号" ? parseInt(item['value']['text']) : item['value']['text'] } else { obj['itemList'] = item['value']['children'].map(good => { let res = {} good['list'].forEach(key => { res[key['title'][0]['text']] = key['value']['text'] }) return res }) } }) let pass = [] let fail = [] let marks = [] let maxTime = 0 obj['sp_record'].forEach(item => { item['details'].forEach(sp => { if (sp['sp_status'] == 2) { pass.push(sp['approver']['userid']) } else if (sp['sp_status'] == 3) { fail.push(sp['approver']['userid']) } if (sp['speech'].length > 0) marks.push(`${sp['approver']['userid']}:${sp['speech']}`) maxTime = Math.max(maxTime, sp['sptime']) }) }) obj['pass'] = pass.join(' ') obj['fail'] = fail.join(' ') obj['marks'] = marks.join(' ') obj['spTime'] = new Date(maxTime * 1000).toLocaleString() return obj } /** * 函数是方法的入口 * @param {*} event 执行事件(event), 包含用户定义的函数参数以及所选择的的连接器认证相关参数 * @param {*} context Runtime提供的函数执行上下文 * @returns */ exports.handler = async function (event, context) { const inputData = extractEventData(event, 'body') // 用户定义的函数参数数据 return handlerWxData(inputData.info, inputData.info.apply_data.contents) }
- 保存。