到款认领,根据客户ID给客户负责人&团队成员&关联销售订单创建人,发送CRM消息通知

/**
 * @author QiaoChu
 * @codeName 到款认领CRM消息通知
 * @description 到款认领CRM消息通知
 * @函数需求编号
 */
log.info(context.data)
String id = context.data['_id'] as String;
String status = context.data['status'] as String;
String name = context.data['name'] as String;
String accountId = context.data['account_id'] as String;
//查询六个月以内的销售订单
//开始时间
DateTime dateTime = DateTime.now();
DateTime startTime = dateTime.withMonth(dateTime.month - 6);
//结束时间
DateTime endTime = dateTime;
// 获取客户负责人和团队成员
def ret = Fx.object.findById("AccountObj", accountId,
        FQLAttribute.builder().columns(["_id", "name", "owner"]).build(),
        SelectAttribute.builder().build()).result() as Map
def teamList = Fx.object.getTeamMember("AccountObj", accountId).result() as List
// 合并去重团队成员
List memberList = (teamList.collect { it["teamMemberEmployee"] }.flatten() + ret['owner']).unique()
// 查询销售订单
def searchCondition = QueryTemplate.AND(
        ["account_id": QueryOperator.EQ(accountId)],
        ["create_time": QueryOperator.GTE(startTime)],
        ["create_time": QueryOperator.LTE(endTime)]
)
Fx.log.info("查询条件为: $searchCondition")
// 分页查询销售订单并去重创建人
List dataAllList = []
Range range = Ranges.of(0, 200)
boolean hasData = true
Integer limit = 100
range.each { i ->
    if (!hasData) return
    Integer skip = i * limit
    def (Boolean error, QueryResult result, String errorMessage) = Fx.object.find(
            "SalesOrderObj",
            FQLAttribute.builder()
                    .orderBy(_id: -1)
                    .limit(limit)
                    .skip(skip)
                    .columns(["_id", "created_by"])
                    .queryTemplate(searchCondition)
                    .build(),
            SelectAttribute.builder().build()
    )
    if (error) {
        Fx.log.info("查询失败,当前跳过的数量为 {$skip},错误原因为 {$errorMessage}")
        hasData = false
        return
    }
    dataAllList.addAll(result.dataList)
    if (result.dataList.size() < limit) hasData = false
}
if (dataAllList.isEmpty()) {
    Fx.log.info("查询出来的数据为空")
    return
}
// 获取所有创建人并去重
List memberList2 = dataAllList.collect { it["created_by"] }.flatten().unique()
List memberList3 = (memberList + memberList2).unique()
log.info(memberList3)
if (status == '1') {
    log.info(name + ":未认款")
    Notice objectNotify = Notice.objectNotice("ReceivedPaymentObj", id)
    def (Boolean error, String data, String errorMessage) = Fx.message.sendNotice("到款认领", "请确认到款认领", memberList3, objectNotify)
    if (error) {
        log.info(errorMessage)
    } else {
        log.info(data)
    }
} else {
    log.info(name + ":已认款")
}

参考:
1、Fx.object.findById
Fx.object | 纷享销客 | 帮助中心
2、getTeamMember 获取团队成员
Fx.object | 纷享销客 | 帮助中心
3、Fx.object.find
Fx.object | 纷享销客 | 帮助中心
4、Fx.message.sendNotice
Fx.message | 纷享销客 | 帮助中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值