纷享销客报表数据每日推送

1、设置——>定制开发平台——>计划任务——>新建计划任务。

Groovy代码如下:

/**
 * @author QiaoChu
 * @codeName 销售数据每日播报
 * @description 销售数据每日企业推送
 * @createTime 2024-06-13
 */
//报表ID
def baoId = "BI_e10adc3949ba59abbe56e057";
def (isError, data, errorMsg) = Fx.BI.loadViewData(baoId)
def content = '';
if (!isError) {
    //获取总金额
    def totalMap = data["displayFields"] as Map
    //获取列表金额
    def dataSet = data["dataSet"] as List<Map>
    def matches = [:].withDefault { 0 }
    //log.info(data["displayFields"])
    def totalAmount = totalMap[1]["total"];
    dataSet.each { map ->
        def department = map[0]["formattedValue"]
        def formattedAmount = map[1]["formattedValue"]
        matches[department] = formattedAmount
        def amount = map[1]["value"] as double
    }
    // content = "| 负责人主属部门 | 本月已发货金额 |\n"
    // content += "| --------------- | --------------- |\n"
    // // 定义列宽
    // def departmentColumnWidth = 16
    // def amountColumnWidth = 17
    // def totalColumnWidth = 18
    // def totalName = "总计"
    // matches.each { department, amount ->
    //     // 计算需要追加的空格数量
    //     def departmentSpaces = departmentColumnWidth - department.toString().size()
    //     def amountSpaces = amountColumnWidth - amount.toString().size()
    //     // 生成对齐后的部门和金额字符串
    //     def paddedDepartment = department.toString() + " " * departmentSpaces
    //     def paddedAmount = " " * amountSpaces + amount.toString()
    //     content += "| ${paddedDepartment} | ${paddedAmount} |\n"
    // }
    // // 计算总计行金额部分的空格数量
    // def totalAmountSpaces = amountColumnWidth - totalAmount.toString().size()
    // // 生成对齐后的总计
    // def paddedTotalName = totalName.toString() + " " * (totalColumnWidth - totalName.toString().size())
    // // 生成对齐后的总计行
    // def paddedTotalAmount = " " * totalAmountSpaces + totalAmount.toString()
    // content += "| ${paddedTotalName} | ${paddedTotalAmount} |\n"
    content = "本月已发货金额播报🎉🎉🎉\n"
    def totalName = "总计"
    def index = 1
    matches.each { department, amount ->
        def emoji = index == 1 ? "🥇" : index == 2 ? "🥈" : index == 3 ? "🥉" : "💪"
        content += "${emoji}. ${department}: ${amount} \n"
        index++
    }
    content += "🎯. ${totalName}:${totalAmount}"
    log.info(content)
    //企业微信群机器人唯一标识
    def KEY = "fe851c8c-a880-af2e-fcb1-eb73226384cd"
    String webhookUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${KEY}"
    //开启Wx调试模式
    //String webhookUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${KEY}&debug=1"
    Request request = Request.builder()
            .method("POST")
            .url(webhookUrl)
            .timeout(7000)
            .retryCount(0)
            .header("Content-Type", "application/json")
            .body(StringBody.builder().content(["msgtype": "text", "text": ["content": content]]).build())
            .build()
    def (Boolean error, HttpResult result, String message) = Fx.http.execute(request)
    if (error || result.statusCode != 200) {
        log.info("error :" + message)
    } else {
        log.info(result)
    }
}

参考:
1、Fx.BI.loadViewData

BI查询接入函数使用说明 | 纷享销客 | 帮助中心
2、Fx.http.execute
Fx.http | 纷享销客 | 帮助中心

<think>嗯,用户的问题是关于如何将单据审批后的数据同步到钉钉。首先,我需要理解用户的需求。他们可能是在使用进行售管理,审批流程结束后,希望数据能自动同步到钉钉,以便在钉钉上进一步处理或通知相关人员。这可能涉及到两个系统的集成,需要中间工具或者API接口来实现数据传输。 首先,我应该考虑现有的解决方案。根据之前的引用,用户提到过使用集简云或者金蝶云星空与钉钉的集成。但用户现在的情况是到钉钉,可能需要类似的中间平台。比如,集简云是否支持和钉钉的连接?或者是否有其他iPaaS(集成平台即服务)工具可以实现这一点。接下来,可能需要检查和钉钉各自的开放接口。是否有提供Webhook或者API,当审批完成后触发一个事件?钉钉方面是否有接口可以接收数据并创建审批流程或消息通知?比如,钉钉的开放平台有审批回调接口,可以配置机器人来发送消息。另外,用户可能没有技术团队,所以需要低代码或无代码的解决方案。比如,使用集简云这样的平台,配置两个系统的连接器,设置触发条件和动作。当审批完成时,集简云捕获这个事件,然后将数据推送到钉钉的指定接口,比如群机器人或者审批结果同步。还需要考虑数据格式的转换。的审批数据可能需要映射到钉钉所需的字段,比如审批类型、金额、申请人等。这时候可能需要配置数据映射规则,确保信息准确传递。 此外,用户可能关心数据的安全性和实时性。所以解决方案需要支持HTTPS,保证数据传输加密,并且尽可能实时同步,减少延迟。比如,使用Webhook实时触发,而不是定时轮询。另外,参考之前的引用,用户提到过审批流程的协同,比如在钉钉发起审批后同步到金蝶,反之亦然。类似地,审批完成后,可以通过相同机制同步到钉钉,可能需要在配置outgoingwebhook,或者在钉钉配置incoming webhook。还要考虑错误处理和日志记录,确保在同步失败时有重试机制或通知管理员。这对于企业流程的稳定性很重要。 总结可能的步骤:1.在配置审批完成的触发器;2.使用集成平台(如集简云)接收触发事件;3.将数据转换为钉钉所需的格式;4.调用钉钉的API推送数据;5.测试流程确保数据正确同步;6.设置监控和错误处理。可能还需要查看和钉钉的官方文档,确认API的具体参数和权限要求。例如,钉钉可能需要创建自定义机器人,获取access_token,而可能需要配置API密钥或OAuth认证。 用户可能没有提到是否已经有一定的技术基础,比如是否有开发人员可以编写脚本,或者是否倾向于使用第三方集成工具。因此,答案需要涵盖两种可能性:使用现有平台快速配置,或者通过API自行开发集成。 最后,确保回答结构清晰,分步骤说明,并提供相关问题,帮助用户进一步探索优化或扩展集成功能。</think>### 分步解决方案:将单据审批数据同步至钉钉 #### 方法1:通过集成平台(无代码方案) 1. **选择集成工具** 使用支持和钉钉双向连接的iPaaS平台(如集简云、Zapier等)。例如集简云已实现与钉钉的深度集成,可配置触发器和响应动作[^2]。 2. **配置触发器** - 在集成平台中,选择作为数据源,设置触发条件为“单据审批完成”。 - 绑定账户并授权访问审批数据。 3. **映射数据字段** - 定义需要同步的字段(如审批单号、金额、审批人、状态等),将其与钉钉接口参数匹配。 4. **配置钉钉响应动作** - 选择钉钉作为目标系统,设置动作为“发送审批结果到钉钉群”或“写入钉钉待办任务”。 - 调用钉钉消息推送API(如`chat.send`)或审批回调接口[^3]。 #### 方法2:通过API开发(需技术团队) 1. **获取审批事件通知** - 在开放平台注册应用,订阅“审批完成”事件,配置Webhook接收回调数据。 - 示例API端点:`POST /api/approval/callback`。 2. **处理并转换数据** - 解析JSON回调数据,提取关键字段(如审批状态、单据详情)。 - 转换为钉钉要求的格式(如Markdown消息或审批流模板)。 3. **调用钉钉开放接口** - 使用钉钉机器人API发送通知到指定群组: ```python import requests def send_dingtalk_message(content, webhook_url): headers = {"Content-Type": "application/json"} data = {"msgtype": "markdown", "markdown": {"title": "审批通知", "text": content}} response = requests.post(webhook_url, json=data, headers=headers) return response.status_code ``` - 或通过钉钉审批同步接口写入审批记录[^1]。 #### 关键配置验证 - **权限检查**:确保应用有“审批数据读取”权限,钉钉机器人具备群消息推送权限。 - **数据一致性**:测试异常场景(如网络中断),确保集成工具或代码有重试机制。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值