You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未选择律师作为首要收款人时抛出Displayable Exception - ClaimCenter

修复方案

你的代码逻辑错误在于遍历所有律师收款人候选,只要有一个律师不是当前首要收款人就抛出异常——这会导致哪怕你已经选了另一个律师作为首要,代码依然会报错。同时也没考虑“只有当存在律师候选时才需要验证”的场景(如果没有律师可选,就不需要强制要求首要收款人是律师)。

正确的逻辑应该是:

  • 先判断收款人候选中是否存在律师角色的联系人
  • 如果存在律师,再检查首要收款人是否为律师类型
  • 若存在律师但首要收款人不是律师,才抛出异常

修改后的代码如下:

uses gw.api.locale.DisplayKey
uses gw.api.util.DisplayableException
uses typekey.Contact

class CheckUIHelper {

  static function validateAttorneyAsPrimaryPayee(check: Check) {
    var claimContacts = check.Claim.PayeeCandidates
    // 判断是否存在律师类型的收款人候选
    var hasAttorneyCandidate = any(payee in claimContacts where payee.Subtype == Contact.TC_ATTORNEY)
    
    // 如果有律师候选,且首要收款人不是律师,抛出异常
    if (hasAttorneyCandidate && check.FirstPayee.Payee.Subtype != Contact.TC_ATTORNEY) {
      throw new DisplayableException(DisplayKey.get("Check.Contact.Primary.Payee.Message"))
    }
  }
}

关键修改点

  • 使用any()函数判断是否存在律师候选,避免遍历每个律师导致的误判
  • 直接检查首要收款人的类型是否为律师,而不是和某个特定律师对比,解决多律师候选场景下的错误触发问题
  • 只有当存在律师候选时才执行验证逻辑,避免对无律师的场景错误触发提示

内容的提问来源于stack exchange,提问作者Anubhav Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:38:14