更新时间:2024-07-02 GMT+08:00
分享

SparkPackERP数据结构转换企业微信数据结构执行动作

  1. 进入函数-依赖包管理-创建依赖包

    按照截图填写好参数,将从依赖包下载好的包上传,点击确定

  2. 同上步骤1
  3. 选择执行动作-创建执行动作,类型选择函数:

    基本信息中执行动作名称为“SAP-微信数据转换”;

    配置输入中选择创建函数如下图;

    给函数命名,输入函数内容如下:

    /**
     *
     * mssiAuthData参数样例
     * {
     *      "header":{}, // 连接器认证header参数
     *      "path": {}, // 连接器认证path参数
     *      "query":{}, // 连接器认证query参数
     *      "body":{}, // 连接器认证body参数
     *      "host":"https://demo.com // API主机地址
     * }
     *
     */
    const cdm = require('./mssi_cdm_convert');
    let defaultCdmModleDef = {
    }
    //对输入数据做转码处理
    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 = (obj) => {
        let arr = Object.keys(obj)
        let res = []
        arr.forEach(item => {
            if (!item.includes('Table')) {
                res.push({
                    id: item,
                    value: {
                        text: obj[item] ? obj[item] + '' : ''
                    }
                })
            } else {
                let children = obj[item]
                children = children.map(item => {
                    let list = []
                    let arr1 = Object.keys(item)
                    arr1.forEach(key => {
                        list.push({
                            id: key,
                            value: {
                                text: item[key] ? item[key] + '' : ''
                            }
                        })
                    })
                    return {
                        list
                    }
                })
                res.push({
                    id: item,
                    value: {
                        children
                    }
                })
            }
        })
        let i = res.findIndex(item => item.id.includes('Table'))
        res.push(res.splice(i, 1)[0])
        return res
    }
    /**
     * 函数是方法的入口
     * @param {*} event  执行事件(event), 包含用户定义的函数参数以及所选择的的连接器认证相关参数
     * @param {*} context  Runtime提供的函数执行上下文
     * @returns
     */
    exports.handler = async function (event, context) {
        const inputData = extractEventData(event, 'body') // 用户定义的函数参数数据
        const mssiAuthData = extractEventData(event, 'mssiAuthData') // 连接器认证数据
        const dataExtendConfig = extractEventData(event, 'dataExtendConfig')  // 流步骤扩展参数
        cdm.processConfigs(dataExtendConfig)
        cdm.initDefaultCdmModel(defaultCdmModleDef)
        let keys = Object.keys(cdm.getCdmModelInParameters())
        let body
        if (keys.length == 0) {
            body = cdm.transferToDefaultMapper(inputData)
        } else {
            body = cdm.transferToMapper(inputData)
        }
        return {
            contents: handlerWxData(body)
        }
    }

    再添加步骤1上传的依赖包

  4. 保存。

相关文档