
# 1、 问题描述
在执行集成方案时报错,具体方案名称及报错截图如下:
预置_供应商银行信息(EAS-苍穹) -KD_SupplierBankInfo(EAS-IERP)
预置_供应商新增修改(EAS-苍穹) -KD_SupplierAddUpdate(EAS-IERP)


# 2、 原因分析
截图1:在EAS端,该供应商银行账户带有空格,不满足星瀚的供应商银行信息格式;同时,供应商银行账户对应的财务组织是封存状态的,但是标准集成方案在获取EAS端数据时,并未考虑组织封存情况,那么这部分的账户数据也相应的同步到星瀚来了。
截图2:用官方帖的方案,进行银行账号去重存在逻辑漏洞。漏洞如下:如果所有银行账号都是同一个账号,用group函数去重后的数据,其seq值并非是1,导致在进行规则转换后,得出来的isdefault_bank字段值为false。在星瀚系统中,供应商数据的银行信息只有一条时,必须为默认银行账户,也就是说,此时的isdefault_bank必须为true。
# 3、解决方案
1. 银行账号去重;
2. 如果只有一条银行信息,需要设置默认;
3. eas端关联查询,判断银行账号对应的财务组织是否是封存状态,如果是,则要过滤掉。
综合以上步骤,脚本详情如下:
```
//step1: remove duplicate accounts
var list = tar.entry_bank;
if(typeof(list) == 'java.util.ArrayList'){
var result = list.group(bankaccount).entries()=>{
"bankaccount":value[0].bankaccount,
"accountname":value[0].accountname,
"currency":value[0].currency,
"id":value[0].id,
"isdefault_bank":value[0].isdefault_bank,
"bank":value[0].bank,
"seq":value[0].seq
};
tar.entry_bank = result;
}
// step2: only one account exist,then should set it default
if(tar.entry_bank.size=1){tar