调用下推服务后获取目标单数据包的方法
问题描述:
二开在调用下推服务得到返回的下推结果后,无法方便地拿到生成的目标单数据包,也就无法对数据做二开干预。
怎么才能通过下推结果简单的获取到生成的目标单数据包呢?
版本
4.0.012+
解决方法:
因为下推结果中针对自动保存和未保存的目标单数据返回的数据形式不一样,所以我们需要针对这两种数据做不同方式的加载。
下推过程中自动保存的目标单通过id返回
// 从转换结果中获取目标单id
ConvertOperationResult result = this.getConvertResult();
// 此处取第一个目标单id做示例,需要全部目标单数据可以依此遍历处理
Object pk = result.getTargetBillIds().iterator().next();
// 从数据库读取单据数据包
DynamicObject targetObject = result.loadAutoSavedDataObjects(new IDataProvider() {
@Override
public DynamicObject loadReferenceData(DynamicObjectType dynamicObjectType, Object o) {
return BusinessDataServiceHelper.loadSingle(o, dynamicObjectType);
}
@Override
public Map<Object, DynamicObject> loadReferenceDataBatch(DynamicObjectType dynamicObjectType, Object[] objects) {
DynamicObject[] datas = BusinessDataServiceHelper.load(objects, dynamicObjectType);
Map<Object, DynamicObject> result = new HashMap<>(16);
for (DynamicObject obj : datas) {
result.put(obj.getPkValue(), obj);
}
return result;
}
}, getTargetMainType(), pk);
下推未保存的目标单通过序列化后的字符串返回,需要做反序列化加载
// 从转换结果中获取目标单id
ConvertOperationResult result = this.getConvertResult();
// 此处取第一个目标单缓存pageid做示例,需要全部目标单数据可以依此遍历处理
Object cachePageId = result.getCachePageIds().iterator().next();
DynamicObject targetObject = result.loadTargetDataObject(new IRefrencedataProvider() {
@Override
public void fillReferenceData(Object[] objs, IDataEntityType dType) {
BusinessDataReader.loadRefence(objs, dType);
}
}, getTargetMainType(), cachePageId);
调用下推服务后获取目标单数据包的方法
问题描述:二开在调用下推服务得到返回的下推结果后,无法方便地拿到生成的目标单数据包,也就无法对数据做二开干预。怎么才能通过下推结果...
点击下载文档
上一篇:下推界面自动匹配规则使用说明下一篇:单据转换携带多选基础资料的使用说明
本文2024-09-23 00:26:11发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139451.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章