调用下推服务后,如何拿到目标单数据包?

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

调用下推服务后,如何拿到目标单数据包?

问题描述

默认的下推操作会将上游数据保存到目标单的数据库表里,请问要怎么控制这个规则,先不存进数据库,在拿到这些数据并处理完毕后才存进数据库呢?

解决方法

下推操作,默认不保存数据。

参考如下语句在下推后获取目标单数据包

Java  

  PushArgs pushArgs = new PushArgs();

  pushArgs.setSourceEntityNumber(this.sourceBill);

  pushArgs.setTargetEntityNumber(this.targetBill);

  pushArgs.setRuleId(this.ruleId);

  pushArgs.setBuildConvReport(true);

  // 下推参数,设置所选数据项

  List<ListSelectedRow> rows = new ArrayList<>();

  for(DynamicObject obj : objs){

   ListSelectedRow row = new ListSelectedRow(obj.getPkValue(), true);

   rows.add(row);

  }

  pushArgs.setSelectedRows(rows);

  // 执行下推服务

  ConvertOperationResult pushResult = ConvertServiceHelper.push(pushArgs);

  // 提取下推生成的目标单

  MainEntityType targetMainType = EntityMetadataCache.getDataEntityType(this.getTargetBill());

  List<DynamicObject> targetBillObjList = pushResult.loadTargetDataObjects(buildRefLoader(), targetMainType, true);

  DynamicObject[] targetBillObjs = targetBillObjList.toArray(new DynamicObject[targetBillObjList.size()]);

  OperateOption saveOption = this.getOption().copy();

  // 强制操作校验结果,以实现整体成功、失败

  saveOption.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(true));

  // 执行保存操作

  OperationResult saveResult = this.doOperation("save", targetBillObjs, saveOption);

Java  

 private IRefrencedataProvider buildRefLoader(){

  IRefrencedataProvider refLoader = new IRefrencedataProvider() {

   @Override

   public void fillReferenceData(Object[] objs, IDataEntityType dType) {

    BusinessDataReader.loadRefence(objs, dType);

   }

  }

  return refLoader;

 }


调用下推服务后,如何拿到目标单数据包?

问题描述默认的下推操作会将上游数据保存到目标单的数据库表里,请问要怎么控制这个规则,先不存进数据库,在拿到这些数据并处理完毕后才存...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息