纷享销客销售订单配件回访CRM业务流程待办提醒

1、设置——>流程管理——>业务流程管理。

Groovy代码如下:

//开始时间
DateTime startTime = '2020-01-01 00:00';
//结束时间
DateTime endTime = '2020-12-31 23:59';
//是否新老客户
List customList = ["option1", "cgpt378qs"];
//配件销售订单数量
def num = 0;
//test发金额
def sendAmount = 3999;

def searchCondition = QueryTemplate.AND(
        ["field_QlmK7__c": QueryOperator.IN(customList)],
        ["field_Gy2i7__c": QueryOperator.EQ(num)],
        ["field_qnWxZ__c": QueryOperator.GT(sendAmount)],
        ["create_time": QueryOperator.GTE(startTime)],
        ["create_time": QueryOperator.LTE(endTime)]
)

Fx.log.info("查询条件为 :" + searchCondition)
//查询条件 要以id 进行排序,find默认的排序是最后修改时间,如果排序字段存在重复,数据库是不能保证每次查询出来顺序是一致的
//分页的时候可能会出现重复数据,导致执行遗漏。
Map orderBy = ["_id": -1]

boolean hasData = true
Integer limit = 100
//循环聚合所有数据
Map updateData = [:]
Range range = Ranges.of(0, 200)
range.each { i ->
    if (hasData == false) {
        return
    }

    Integer skip = i * limit
    def (Boolean error, QueryResult result, String errorMessage) = Fx.object.find("AccountObj",
            FQLAttribute.builder()
                    .orderBy(orderBy)
                    .limit(limit)
                    .skip(skip)
                    .columns(["_id", "name", "create_time", "owner", "remark", "tel"])
                    .queryTemplate(searchCondition)
                    .build(),
            SelectAttribute.builder().build())

    if (error) {
        hasData = false
        Fx.log.info("查询失败" + "当前跳过的数量为 " + skip + "错误原因为" + errorMessage)
        return
    }
    log.info(result)
    //获取所有更新的数据,如果是预设对象,就在循环里面直接更新。
    List dataList = result.dataList
    if (dataList.size() < limit) {
        hasData = false
    }

    //如果不需要合并数据,在这里就可以100条
    dataList.each { item ->
        Map objectData = item as Map
        log.info(objectData)
        updateData.put(objectData._id, ["owner": objectData.owner, "name": objectData.name])
    }
}

//极端情况,所有查询都失败了
if (!updateData) {
    Fx.log.info("循环查询出来数据为空")
    return
}
//如果是自定义对象,直接调用批量更新即可,更新单次500条限制,所以我们拆分数据
List idList = updateData.keys() as List
//log.info(updateData)
//log.info(idList)
//业务流定义id【详细信息——>API名称】
def bpmId ="678e123q62da500001af2e3e"
List partitionList = Fx.utils.listPartition(idList, 500)
partitionList.each { item ->
    //根据id分批组装数据
    List ids = item as List
    ids.each { id ->
        String stringId = id as String
        log.info(stringId);
        log.info(customName);
        log.info(receiverIds);
        def (Boolean error, String data, String errorMessage) = Fx.bpm.startInstance(bpmId, stringId, "AccountObj");
        if (error) {
            log.info(errorMessage)
        } else {
            log.info(data)
        }
    }
}
Fx.log.info("实际更新的数据为" + idList.size())

 备注:2021年、2022年、2023年数据,只需要修改开始时间和结束时间即可。
//开始时间
DateTime startTime = '2021-01-01 00:00';
//结束时间
DateTime endTime = '2021-12-31 23:59';

参考:
1、Fx.object.find
Fx.object | 纷享销客 | 帮助中心
2、Fx.bpm.startInstance
Fx.bpm | 纷享销客 | 帮助中心

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值