目标单附件反写到源单
标签:
附件面板、botp、反写
需求背景:
BOTP中,转换规则和反写规则的配置都是没有办法去配置附件面板的携带或反写的。
本文场景:目标单审核时反写附件到源单
分析过程:
反写规则配置虽然无法配置附件面板的反写,但是我们可以根据一些接口方法去反写插件或者操作服务插件去实现
实现方案:
关键接口方法
BFTrackerServiceHelper 查询上下游关系
AttachmentServiceHelper 获取和绑定附件
代码示例:(以审核操作插件为例)
public class auditop extends AbstractOperationServicePlugIn {
@Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
// TODO Auto-generated method stub
super.afterExecuteOperationTransaction(e);
Long billpk =(Long) e.getDataEntities()[0].getPkValue();
//通过BFTrackerServiceHelper,根据要上查的源单的formid和当前单据的pk查找它的源单
Map<String, HashSet<Long>> source = BFTrackerServiceHelper.findSourceBills("kded_botp_2", new Long[] {billpk});
Object[] bills = source.get("kded_botp_1").toArray();
//取其中一条(有多条下推一条的情况,此处仅以一条为示例)
Object sourcebillpk = bills[0];
//获取目标单上已有的附件
List<Map<String, Object>> targetattachment= AttachmentServiceHelper.getAttachments("kded_botp_2", billpk, "attachmentpanel");
for (Map<String, Object> map : targetattachment) {
//将附件信息中的修改时间置空
map.put("lastModified", null);
}
//绑定目标单的附件到源单
AttachmentServiceHelper.upload("kded_botp_1", sourcebillpk, "attachmentpanel", targetattachment);
// 反审核时如需删去附件,可在反审核操作插件中根据要删去的附件的uid 调用remove方法,如下示例
// AttachmentServiceHelper.remove("kded_botp_1", sourcebillpk,fileUid);fileUid为附件的uid
}
}
实现效果:
目标单:
上查源单:
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *