源系统id值为非长整型场景集成异常之解决方案(For input string:)

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

源系统id值为非长整型场景集成异常之解决方案(For input string:)

问题描述

  • 集成服务云在2021年9月(V4.0.008)补丁中,对涉及主键等长整型字段做了类型校验,即传入的必须是长整型,否则会抛出异常。

  • 问题异常提示截图

执行日志失败提示:字段(id)赋值(lfkAAAZI/B8/0Wlk)出错,原因:For input string: "lfkAAAZI/B8/0Wlk",

Caused by: java.lang.NumberFormatException: For input string: "lfkAAAZI/B8/0Wlk"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Long.parseLong(Long.java:589)

at java.lang.Long.parseLong(Long.java:631)

at kd.isc.iscb.util.dt.D.l(D.java:53)

at kd.isc.iscb.util.dt.D.l(D.java:45)

at kd.isc.iscb.platform.core.util.setter.LongPropSetter.setObjValue(LongPropSetter.java:21)

at kd.isc.iscb.platform.core.util.setter.Setter.setObjValue(Setter.java:32)

at kd.isc.iscb.platform.core.connector.self.DoBizAction.setDynamicObjectValues(DoBizAction.java:630)

... 52 more

       



  • 问题出现版本

   2021年9月(V4.0.008)


原因分析

2021年9月集成云项目组发现:动态对象(DynamicObject)给long类型字段赋值字符串时,不会做校验,且保存过程中无报错。此时,如果用户的集成方案对long类型字段错误地映射了字符串的id,且设为了候选键(唯一标识),则单据每次同步都会新增,分录每次同步都会清空后再新增。

因此,2021年9月(V4.0.008),对涉及主键等长整型字段做了类型校验,即传入的必须是长整型,否则会抛出异常。


此次改动分析如下:

1、增加的字段值校验可以避免数据重复和分录清空的风险,增强数据的健壮性;

2、存在的影响:原有不合规范的字段映射需要调整好后才能继续执行。

解决方案

修改数据集成方案的配置

方法一:选择其他合适的字段如编码、序号作为候选键,一般不推荐id做候选键,建议移除。(候选键是两边系统具有业务语义的唯一标识,用于判定新增还是修改,由于两边业务系统id不同,所以首次同步都会新增,不适合作为候选键);

方法二:通过聚合运算,to_long_id函数生成新的id,以上面的为例,修改前和修改后的数据集成方案截图如下:


修改前:


修改后:


注意事项

方案修改过程如果有任何疑问,可以通过集成服务云对外交流群跟我们咨询。

源系统id值为非长整型场景集成异常之解决方案(For input string:)

问题描述集成服务云在2021年9月(V4.0.008)补丁中,对涉及主键等长整型字段做了类型校验,即传入的必须是长整型,否则会抛出异常。问题异...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息