CRM纷享逍客UI事件之数据更新事件:根据银行回款信息自动回填信息

/**
 * @author QiaoChu
 * @codeName 根据银行回款信息自动回填信息
 * @description 根据银行回款信息自动回填信息
 * @函数需求编号
 */
//原始银行回款信息
String repayment_info = context.data["repayment_info__c"] as String
//String repayment_info = "贵公司尾号3333的账户11月23日10时16分货款收入人民币9999.00元,可用余额123456.78元。对方户名:中国钢铁分公司。【建设银行】"
//String repayment_info ="贵账户*6666于2024年11月24日10:18在北京分行 汇款入账 转入资金88888.00元,现余额876543.21元,对方户名:中国建筑有限公司,附言:货款【交通银行】";
//String repayment_info = "【中国农业银行】尊敬的客户:中国物业有限公司于11月25日15:00向贵公司的农行账户(尾号7777)完成转入交易,金额为7777.00,余额为8886666.99。"
//String repayment_info = "贵单位尾号为8888账户26日09:10工商银行收入(跨行)78,566元,当前账户余额为999,888.55元。详情请咨询网点对公客户经理【工商银行】";
// 获取银行回款信息
def resultInfo = extractRepaymentInfo(repayment_info)
// 客户名称
String payer_account_name = resultInfo['payer_account_name']
// 到款金额
String amount_received = resultInfo['amount_received']
// 付款方银行
String payer_bank = resultInfo['payer_bank']
// 收款账户尾号
String account_suffix = resultInfo['account_suffix']
// 交易日期
Date transaction_date;
// 交易日期时间戳
String transDate;
String trans_date = resultInfo['transaction_date'] as String
if (trans_date != "") {
    transaction_date = Date.of(trans_date)
    transDate = transaction_date.toTimestamp() as String
}
// 收款账户
String account_val = "";
switch (account_suffix) {
    case "3333":
        account_val = "1";
        break;
    case "6666":
        account_val = "2";
        break;
    case "7777":
        account_val = "3";
        break;
    case "8888":
        account_val = "4";
        break;
    default:
        break;
}
log.info("客户名称: ${payer_account_name}")
log.info("到款金额: ${amount_received}")
log.info("付款方银行: ${payer_bank}")
log.info("收款账户尾号: ${account_suffix}")
log.info("交易日期: ${transaction_date}")
log.info("交易日期时间戳: ${transDate}")
log.info("收款账户: ${account_val}")

def extractRepaymentInfo(String info) {
    String payer_account_name = ''
    String amount_received = ''
    String payer_bank = ''
    String account_suffix = ''
    String transaction_date = ''

    // 根据银行类型提取不同信息
    if (info =~ /(?s).*【建设银行】.*/) {
        def matchAccountName = (info =~ /(?s).*对方户名:(.+?)。.*/)
        def matchAmount = (info =~ /(?s).*收入人民币(.+?)元.*/)
        def matchAccountSuffix = (info =~ /(?s).*尾号(\d+).*/)
        def matchDate = (info =~ /(?s).*账户(\d+月\d+日).*/)
        if (matchAccountName.find()) {
            payer_account_name = matchAccountName.group(1).trim() // 使用 group(1)
        }
        if (matchAmount.find()) {
            amount_received = matchAmount.group(1).trim() // 使用 group(1)
        }
        if (matchAccountSuffix.find()) {
            account_suffix = matchAccountSuffix.group(1).trim() // 使用 group(1)
        }
        if (matchDate.find()) {
            String rawDate = matchDate.group(1).trim() // 使用 group(1)
            //获取当前年份
            Date nowDate = Date.now()
            def currentYear = nowDate.year as String
            def formattedDate = "${currentYear}-${rawDate}".replaceAll("月", "-").replaceAll("日", "")
            transaction_date = formatDateString(formattedDate)
        }
        payer_bank = "建设银行"
    } else if (info =~ /(?s).*【工商银行】.*/) {
        def matchAccountSuffix = (info =~ /(?s).*尾号为(\d+).*/)
        def matchAmount = (info =~ /(?s).*收入(跨行)([\d,]+)元.*/)
        def matchDate = (info =~ /(?s).*账户(\d+)日.*/)
        payer_account_name = ''
        if (matchAccountSuffix.find()) {
            account_suffix = matchAccountSuffix.group(1).trim()
        }
        if (matchAmount.find()) {
            amount_received = matchAmount.group(1).replace(",", "").trim()
        }
        if (matchDate.find()) {
            def day = matchDate.group(1).trim()
            Date nowDate = Date.now()
            def currentYear = nowDate.year as String
            def currentMonth = nowDate.month as String
            def formattedDate = "${currentYear}-${currentMonth}-${day}"
            transaction_date = formattedDate
        }
        payer_bank = "工商银行"
    } else if (info =~ /(?s).*【中国农业银行】.*/) {
        def matchAccountName = (info =~ /(?s).*尊敬的客户:([^,]+).*于.*/)
        def matchAmount = (info =~ /(?s).*金额为([^,]+).*/)
        def matchAccountSuffix = (info =~ /(?s).*尾号(\d+).*/)
        def matchDate = (info =~ /(?s).*于([^日]+)日.*/)
        if (matchAccountName.find()) {
            payer_account_name = matchAccountName.group(1).trim() // 使用 group(1)
        }
        if (matchAmount.find()) {
            amount_received = matchAmount.group(1).trim() // 使用 group(1)
        }
        if (matchAccountSuffix.find()) {
            account_suffix = matchAccountSuffix.group(1).trim() // 使用 group(1)
        }
        if (matchDate.find()) {
            String rawDate = matchDate.group(1).trim() // 使用 group(1)
            Date nowDate = Date.now()
            def currentYear = nowDate.year as String
            def formattedDate = "${currentYear}-${rawDate}".replaceAll("月", "-").replaceAll("日", "")
            transaction_date = formattedDate
        }
        payer_bank = "中国农业银行"
    } else if (info =~ /(?s).*【交通银行】.*/) {
        def matchAccountName = (info =~ /对方户名:([^,]+)/)
        def matchAmount = (info =~ /(?s).*转入资金?(.+?)元.*/)
        def matchAccountSuffix = (info =~ /(?s).*账户\*(\d+).*/)
        def matchDate = (info =~ /(?s).*于(\d{4}年\d{1,2}月\d{1,2}日).*/)
        if (matchAccountName.find()) {
            payer_account_name = matchAccountName.group(1).trim().replace("【交通银行】", "") // 使用 group(1)
        }
        if (matchAmount.find()) {
            amount_received = matchAmount.group(1).trim().replaceAll("人民币", "") // 使用 group(1)
        }
        if (matchAccountSuffix.find()) {
            account_suffix = matchAccountSuffix.group(1).trim() // 使用 group(1)
        }
        if (matchDate.find()) {
            // 格式化日期
            String originalDate = matchDate.group(1).trim() // 使用 group(1)
            transaction_date = originalDate.replaceAll(/(\d{4})年(\d{1,2})月(\d{1,2})日/, '$1-$2-$3')
        }
        payer_bank = "交通银行"
    } else {
        // 对于不支持的银行类型,返回空字符串
        payer_account_name = ''
        amount_received = ''
        account_suffix = ''
        transaction_date = ''
        payer_bank = ''
    }
    // 使用 Map 返回结果
    return [
            payer_account_name: payer_account_name,
            amount_received   : amount_received,
            payer_bank        : payer_bank,
            account_suffix    : account_suffix,
            transaction_date  : transaction_date
    ]
}

def formatDateString(String dateStr) {
    def parts = dateStr.split("-")
    if (parts.size() == 3) {
        def year = parts[0]
        def month = parts[1].padLeft(2, '0')
        def day = parts[2].padLeft(2, '0')
        return "${year}-${month}-${day}"
    }
    return dateStr
}

UIEvent event = UIEvent.build(context) {
    //主对象修改数据
    editMaster(
            "payer_account_name": payer_account_name,
            "amount_received": amount_received,
            "payer_bank": payer_bank,
            "transaction_date": transDate,
            "account_bank": account_val
    )
}
return event

参考:
1、UI事件-数据更新事件
配置步骤 | 纷享销客 | 帮助中心
2、Groovy代码-数据更新事件
Groovy代码示例 | 纷享销客 | 帮助中心
3、Date数据类型
Date类型 | 纷享销客 | 帮助中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值