变更记录
版本 | 更新内容 | 变更日期 |
---|
V6.0.1 | 初始版本 | 2023年10月28日 |
1 业务场景
背景介绍:botp下推和上下查,都是基于当前单据作为源单或者目标单进行操作,不能实现在当前单据实现其他单据的下推和上下查。
2 实现方案
针对下推和上下查,提供一个时机,能替换操作参数,然后可根据需要实现非本单据的下推和上下查。代码逻辑写在beforeDoOperation事件,表单插件、列表插件、操作插件都支持该事件。
3 插件代码示例
@Override
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
super.beforeDoOperation(args);
AbstractOperate operation = (AbstractOperate) args.getSource();
if (StringUtils.equals(operation.getOperateKey(), "push")) {//下推
ThirdPushArgs thirdPushArgs = new ThirdPushArgs();
//支持多个第三方下推,如果需要多个,只需要实例化PushArgs,设置相应参数,然后放到参数列表
List<PushArgs> pushArgsList = new ArrayList<>();
List<ListSelectedRow> rows = new ArrayList<>();
ListSelectedRow row = new ListSelectedRow();
//单据id
row.setPrimaryKeyValue(1647202601030138880L);
rows.add(row);
ListSelectedRow row1 = new ListSelectedRow();
//单据id
row1.setPrimaryKeyValue(1637592590557666304L);
rows.add(row1);
PushArgs pushArgs = new PushArgs();
//源单单据标识
pushArgs.setSourceEntityNumber("a");
//目标单据标识
pushArgs.setTargetEntityNumber("c");
pushArgs.setSelectedRows(rows);
List<ListSelectedRow> rows2 = new ArrayList<>();
ListSelectedRow row2 = new ListSelectedRow();
//单据id
row2.setPrimaryKeyValue(1647202601030138880L);
rows2.add(row2);
ListSelectedRow row3 = new ListSelectedRow();
//单据id
row3.setPrimaryKeyValue(1637592590557666304L);
rows2.add(row3);
PushArgs pushArgs2 = new PushArgs();
//源单编码
pushArgs2.setSourceEntityNumber("purorder_qcc");
//目标单据标识
pushArgs2.setTargetEntityNumber("kingdee_0113_version0926");
pushArgs2.setSelectedRows(rows2);
//输出转换报告
pushArgs2.setBuildConvReport(true);
pushArgsList.add(pushArgs);
pushArgsList.add(pushArgs2);
thirdPushArgs.setPushArgsList(pushArgsList);
String pushArgsStr = SerializationUtils.toJsonString(thirdPushArgs);
//设置第三方下推的参数
operation.getOption().setVariableValue(ThirdPushConst.THIRD_PUSH_ARGS, pushArgsStr);
} else if (StringUtils.equals(operation.getOperateKey(), "trackup")) {//上查
ThirdLookTrackerArgs thirdLookTrackerArgs = new ThirdLookTrackerArgs();
//待上查单据标识
thirdLookTrackerArgs.setEntityNumber("c");
HashSet<Long> billIds = new HashSet<>();
billIds.add(1650084396050658304L);
billIds.add(1650091302173520896L);
//待上查单据数据
thirdLookTrackerArgs.setBillIds(billIds);
String trackUpArgsStr = SerializationUtils.toJsonString(thirdLookTrackerArgs);
//设置第三方上查参数
operation.getOption().setVariableValue(ThirdPushConst.THIRD_LOOK_TRACK_ARGS, trackUpArgsStr);
} else if (StringUtils.equals(operation.getOperateKey(), "trackdown")) {//下查
ThirdLookTrackerArgs thirdLookTrackerArgs = new ThirdLookTrackerArgs();
//待下查单据标识
thirdLookTrackerArgs.setEntityNumber("a");
HashSet<Long> billIds = new HashSet<>();
billIds.add(1647202601030138880L);
billIds.add(1637592590557666304L);
//待下查单据数据
thirdLookTrackerArgs.setBillIds(billIds);
String trackUpArgsStr = SerializationUtils.toJsonString(thirdLookTrackerArgs);
//设置第三方下查参数
operation.getOption().setVariableValue(ThirdPushConst.THIRD_LOOK_TRACK_ARGS, trackUpArgsStr);
}
}