【场景案例-附件信息携带(二)】目标单附件反写到源单原创
金蝶云社区-Man_what_can_isay
Man_what_can_isay
6人赞赏了该文章 2130次浏览 未经作者许可,禁止转载编辑于2021年07月28日 13:56:57

目标单附件反写到源单

标签:

附件面板、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

         }

 

}


 

 

实现效果:


目标单:

image.png

上查源单:

image.png




赞 6