如何在附件中增加下载次数显示原创
4人赞赏了该文章
1,037次浏览
编辑于2022年04月14日 17:51:11
关键词:附件面板、下载次数、备注、提交状态
一、需求背景:
在单据中,附件上传保存到单据的附件面板,用户提交单据之后。需要把用户下载的次数显示到附件面板对应附件信息上。如下图:
二、思路与方案
由于苍穹平台没有直接给文件服务器上文件被下载的次数接口,我们可以在提交时,初始化下载次数为0,信息保存在备注内容的前面。并监听附件面板的下载事件,下载时,更新对应附件的下载次数=原下载次数+1。
三、实现过程
1、提交单据时,提交的操作插件初始化下载次数为0
操作提交操作插件- public class OrderOpPlugin extends AbstractOperationServicePlugIn { @Override public void beginOperationTransaction(BeginOperationTransactionArgs e) { //提交之后,初始化下载次数 if (e.getOperationKey().equals("submit")) { DynamicObject[] dataEntities2 = e.getDataEntities(); for (DynamicObject dynamicObject : dataEntities2) { Object pkValue = dynamicObject.getPkValue(); String name = dynamicObject.getDataEntityType().getName(); List<Map<String, Object>> attachments = AttachmentServiceHelper.getAttachments(name, pkValue, "attachmentpanel"); for (Map<String, Object> map : attachments) { String description = (String) map.get("description"); String uid = (String) map.get("uid"); /** * 初始化:添加下载次数为备注的前缀信息 * 注意如果有撤销操作,则需要在撤销时重置删掉下载次数的备注前缀 */ AttachmentServiceHelper.mark(uid, "|下载次数:0|\t"+ description); } } } super.beginOperationTransaction(e); } }
2、更新下载次数
表单插件 public class OrderAttamentPlugin extends AbstractBillPlugIn implements AttachmentDownloadListener{ (1)添加下载的监听事件 @Override public void registerListener(EventObject e) { AttachmentPanel attachment = this.getView().getControl("attachmentpanel"); // 下载监听 attachment.addDownloadListener(this); super.registerListener(e); } (2)下载后事件中更新下载的次数 @Override public void attachmentAfterDownload(AttachmentDownLoadEvent evt) { String billstatus = (String) this.getModel().getValue("billstatus"); //提交状态才更新下载次数 if (billstatus.equals("B")) { List<Map<String, Object>> targetAttachments = (List<Map<String, Object>>) evt.getTargetAttachments(); for (Map<String, Object> map : targetAttachments) { String uid = (String) map.get("uid"); String description = (String) map.get("description"); int indexOf = description.indexOf("下载次数:"); int preDesIndex = description.indexOf("|", indexOf); //取下载次数 String countStr=description.substring(indexOf+5, preDesIndex); int nowCount=Integer.valueOf(countStr)+1; //原备注信息内容部分 String preDescription = description.substring(preDesIndex + 1); AttachmentServiceHelper.mark(uid, String.format("|下载次数:%d|", nowCount) + preDescription); } this.getView().updateView("attachmentpanel"); } AttachmentDownloadListener.super.attachmentAfterDownload(evt); } }
四、实现效果
1、上传单据之后提交单据,会初始化下载次数为0
2、点击下载,可以看到下载次数已经被更新到备注内容的下载次数中
五、开发环境版本
COSMICV4.0.010.0
六、注意事项
如果业务需求中需要记录附件上传之后的下载次数(即不需要提交),则建议在附件面板上添加自定义按钮,在本单据上用一个单据体保存实际上每个附件对应下载的次数。并把下载次数显示为自定义按钮的名字。
七、参考资料
orderAttmentPlugin.zip(2.64KB)
赞 4
4人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读