报错信息:
主对象为新增,明细**以下ids[0]已存在创建成功的异常映射
原因:
K3Cloud某些单据在某些情况下,当明细不存在数据时,会有一条id为0的空数据。在集成平台中认为这是一条有效数据。当多个单据存在这种数据时,第二条以及后面同步的单据会异常。
如单据A存在一个明细id为0,单据B也存在一个明细id为0,单据A同步成功后,单据B同步就会报以上错误。
解决方案:
目前没有统一的处理。需要先通过同步前自定义函数将此类数据过滤掉。
示例中的apiName根据实际情况替换。
感谢@刘建彩 提供
Map objData = syncArg.objectData as Map
if( objData.object_describe_api_name!= "AR_RECEIVEBILL.BillHead" ){
//主对象数据才做过滤
log.info("no filter:"+objData.object_describe_api_name)
return syncArg;
}
Map order_details = syncArg.details as Map;
log.info(order_details)
log.info("<<<<<<<<<<<<<<<<<<<<")
List yspjdetails=order_details["AR_RECEIVEBILL.RECEIVEBILLREC"] as List;
log.info(">>>>>>>>>>>>>>>>")
List yspjdetailsnew=[];
if(yspjdetails)
{
yspjdetails.each{item->
log.info("item"+item)
String id = item["_id"];
log.info("数据"+id)
if(id!="0")
{
log.info("进来")
yspjdetailsnew.add(item)
}
}
}
log.info("新的明细"+yspjdetailsnew)
order_details["AR_RECEIVEBILL.RECEIVEBILLREC"]=yspjdetailsnew;
syncArg.details=order_details;
Map map = ["details":syncArg.details, "objectData":syncArg.objectData,"isCover":true]
return map;