本文介绍了如何实现将下游单据的附件面板内容反写到上游单据的方法,通过三步操作:获取缓存态附件信息、将文件缓存中的附件上传到正式服务器、维护单据和附件关系。重点探讨了缓存态附件反写的具体实现,包括如何通过页面缓存获取附件信息,并利用已有工具类查询上游单据信息,最后按照既定方式上传附件并补充中间表数据。
如何实现附件面板内容从下游单据反写到上游单据
相信大家都接触过单据转换,在单据转换的过程中如何将附件面板的内容从上游带到下游呢?该问题请关注“一文读懂-如何实现附件面板内容从上游单据下推携带到下游单据”。
下面我们是探讨如何将下游单据的附件信息反写到上有单据。
三步搞定附件反写:
1. 通过pageCache.get("TampAttCache" + pageId)获取缓存态的附件信息;
2. 通过AttachmentServiceHelper.saveTempToFileService将文件缓存中的附件文件上传到正式文件服务器;
3. 通过AttachmentServiceHelper.upload维护单据和附件的关系;
首先我们要知道附件在单据中是有两种存在形态的:
1、上传未保存的缓存态;
2、保存后记录到中间表,文件上传到文件服务器的持久态;
针对于第二种形态,反写到上游单据仍然是采取中间表取数,上游单据上传的方式,详细思路请看“一文读懂-如何实现附件面板内容从上游单据下推携带到下游单据”。但是如果要求缓存态就要反写到上游单据我们应该怎么做呢?
首先新建两张包含附件的简单单据,
在下游单据上传附件但是未点击单据保存时,我们打断点查看到AttachmentPanel.upload方法中(如下图所示)
系统将存有附件信息的cacheJsonString,存入了页面缓存IPageCache中,页面缓存中key的构成为"TampAttCache" + this.getView().getPageId()。知道了这个关键信息后,我们就清楚了,我们只要再从页面缓存中取出对应的附件信息就好了。
现在我们已经拿到了下游单据的附件信息,根据上查的工具类BFTrackerServiceHelper.findSourceBills(tarBillNo, billIds);查询到上游单据的信息。
现在我们有下游单据的附件信息和上游单据的信息,是不是就可以直接对上游单据执行附件添加操作了呢,答案是肯定的。
我们按照“一文读懂-如何实现附件面板内容从上游单据下推携带到下游单据”的方式进行附件的上传与附件中间表的补充。
可以看见附件成功被携带至下游单据!
代码都贴出来了,还不赶快去实践一下❤
以上就是本期的全部内容啦,咱们下期再见!
AttachmentUntil.rar(2.45KB)
推荐阅读