【纷享销客】CRM---根据BI报表内容进行消息推送

引言:因为业务需要根据报表的内容进行消息推送,所以我们根据CRM提供的函数,根据自己的情况自行编写。

备注:引用代码前,需要查出filterId,在CRM系统中是有对应方法的,查出来了,可以根据我的方法去写。本文逻辑是,查客户--查职位--查BI报表--组合数据--按条件推送。

List ids = context.objectIds as List
def ret = Fx.object.findByIds("PersonnelObj", //查询客户对象
             ids,
             FQLAttribute.builder()
             .columns(["_id","name","owner","position","life_status"]) 
                .build(),
             SelectAttribute.builder()
                .build()).result() as List;
     log.info("符合条件的数据:" + ret) 
  
  
ret.each { item ->
Map PDmap = item as Map

String wantowner=PDmap.owner as String //获取当前负责人 
String wantownerjob = PDmap.position as String  //获取当前负责人职位
if (wantownerjob == null || wantownerjob.isEmpty()) {
        log.debug("当前记录的职位信息为空,跳过处理。")
        return; // 跳过当前迭代的剩余部分并继续下一个,职位为空的不继续。
    }
String wantownerno=wantowner.replaceAll(/\[|\]/, '')
//log.debug(wantowner+wantownerjob)
//String role = "经理"

  if( wantownerjob!=null){
  log.debug("当前人员ID:"+wantownerno+",职位为:"+wantownerjob)
 
  String newId =  wantownerno;
  String idd = "[{\"id\":\"" + newId + "\",\"type\":\"p\"}]";
   List filterList  = [["filterId":"BI_669f709c938fxxxxxxxx","value1": idd,"dateRangeId":4]]
 
    def(isError,data,errorMsg) = Fx.BI.queryLwtViewDataByFilter("BI_lwt_1711xxxxxxxx",filterList)
         if(!isError){
  //log.info("分页信息:"+data["page"])
  //log.info("表头信息:"+data["displayFields"])
  //log.debug("数据集:"+data["dataSet"])
         }else{
             log.info("查询失败:"+errorMsg)
         }

 List datta = data["dataSet"] as List
 //log.debug(datta)
  if( data["dataSet"]!=[] ){
 转换方法集
 def want =  datta.first() as List
 def qichucundian = want.get(5) as Map //存量网点数据
 def fqichucundianStr = qichucundian.'value' as String
 def qichucundianValue = fqichucundianStr.substring(fqichucundianStr.indexOf(':') + 1).trim() as String
 BigDecimal qichucundianValueX = new BigDecimal(qichucundianValue)
 BigDecimal qichucundianValueZero = qichucundianValueX.stripTrailingZeros()
 String qichucundianValueZero1 = qichucundianValueZero.toPlainString()
 log.debug("期初存量网点:"+qichucundianValueZero1)//存量网点值剥离
 
 def newsopen = want.get(6) as Map //新开网点数据
 def newsopenStr = newsopen.'value' as String
 def newsopenValue = newsopenStr.substring(newsopenStr.indexOf(':') + 1).trim() as String 
 BigDecimal newsopenValueX = new BigDecimal(newsopenValue)
 BigDecimal newsopenValueZero = newsopenValueX.stripTrailingZeros()
 String newsopenValueZero1 = newsopenValueZero.toPlainString()
 log.debug("本月新开网点:"+newsopenValueZero1)//新开网点值剥离
 
 
 def allopen = want.get(7) as Map //网点数据
 def allopenStr = allopen.'value' as String
 def allopenValue = allopenStr.substring(allopenStr.indexOf(':') + 1).trim() as String
 BigDecimal allopenValueX = new BigDecimal(allopenValue)
 BigDecimal allopenValueZero = allopenValueX.stripTrailingZeros()
 String allopenValueZero1 = allopenValueZero.toPlainString()
 log.debug("累计开发网点:"+allopenValueZero1)//网点数据剥离
 
 def target = want.get(8) as Map //目标数据
 def targetStr = target.'value' as String
 def targetValue = targetStr.substring(targetStr.indexOf(':') + 1).trim() as String 
 BigDecimal targetValueX = new BigDecimal(targetValue)
 BigDecimal targetValueZero = targetValueX.stripTrailingZeros()
 String targetValueZero1 = targetValueZero.toPlainString()
 log.debug("本月目标:"+targetValueZero1)//目标值剥离
 
 def diffrence = want.get(9) as Map // 任务数据
 def diffrenceStr = diffrence.'value' as String
 def diffrenceValue = diffrenceStr.substring(diffrenceStr.indexOf(':') + 1).trim() as String
 BigDecimal diffrenceValueX = new BigDecimal(diffrenceValue)
 BigDecimal diffrenceValueZero = diffrenceValueX.stripTrailingZeros()
 String diffrenceValueZero1 = diffrenceValueZero.toPlainString()
 log.debug("任务差额:"+diffrenceValueZero1)//任务值剥离
  /转换方法集
  
  
  if( diffrenceValueZero>0){
   List receiverIds = [wantownerno]
Notice notice = Notice.defaultNotice()
def (Boolean error3, String data3, String errorMessage3) = Fx.message.sendNotice("本月客户经理网点任务提醒","【${PDmap.name}】\n本月任务为:【${targetValueZero1}】家网点\n当前累计开发:【${allopenValueZero1}】家网点\n当月距离网点目标还有【${diffrenceValueZero1}】家,请加油!",receiverIds, notice)
if (error3) {
log.info("失败:"+errorMessage3)
} else {
log.info("推送成功:"+data3)
}
  }else{
    log.info("当前用户已达到目标,不进行推送");
}//此处判断任务完成情况,到此结束。


   }//if data 判断
  }//if wantownerjob判断
}//ret.each循环

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值