想要显示“附件下载次数”,看这里
很多小伙伴在后台给小编私信,希望可以通过案例对附件下载次数的开发进行详细的说明。这不,宠粉的小编带着案例走来了。
1 需求背景
在单据中,附件上传并保存到单据的附件面板。用户点下载后,需要在附件面板上显示下载的次数。如下图所示:
下载次数展示
2 实现方案
1、提交单据时,提交的操作插件需要初始化下载次数为0。
由于苍穹平台没有在文件服务器上直接提供文件被下载的次数接口。因此,需要初始化下载次数,将信息保存在备注内容之前,实现代码如下所示:
1//提交的操作插件- 2public class OrderOpPlugin extends AbstractOperationServicePlugIn { 3 @Override 4 public void beginOperationTransaction(BeginOperationTransactionArgs e) { 5 //提交之后,初始化下载次数 6 if (e.getOperationKey().equals("submit")) { 7 DynamicObject[] dataEntities2 = e.getDataEntities(); 8 for (DynamicObject dynamicObject : dataEntities2) { 9 Object pkValue = dynamicObject.getPkValue(); 10 String name = dynamicObject.getDataEntityType().getName(); 11 List<Map<String, Object>> attachments = AttachmentServiceHelper.getAttachments(name, pkValue, "attachmentpanel"); 12 for (Map<String, Object> map : attachments) { 13 String description = (String) map.get("description"); 14 String uid = (String) map.get("uid"); 15 /** 16 * 初始化:添加下载次数为备注的前缀信息 17 * 注意如果有撤销操作,则需要在撤销时重置删掉下载次数的备注前缀 18 */ 19 AttachmentServiceHelper.mark(uid, "|下载次数:0|\t"+ description); 20 } 21 } 22 } 23 super.beginOperationTransaction(e); 24 } 25}
2、附件被下载时需要动态更新下载次数。
附件被下载时,会通过监听附件的下载操作来获取下载次数。动态更新对应附件的下载次数=原下载次数+1。实现代码如下所示:
1//表单插件 2 public class OrderAttamentPlugin extends AbstractBillPlugIn implements AttachmentDownloadListener{ 3//(1)添加下载的监听事件 4 @Override 5 public void registerListener(EventObject e) { 6 AttachmentPanel attachment = this.getView().getControl("attachmentpanel"); 7 // 下载监听 8 attachment.addDownloadListener(this); 9 super.registerListener(e); 10 } 11//(2)下载后事件中更新下载的次数 12 @Override 13 public void attachmentAfterDownload(AttachmentDownLoadEvent evt) { 14 String billstatus = (String) this.getModel().getValue("billstatus"); 15 //提交状态才更新下载次数 16 if (billstatus.equals("B")) { 17 List<Map<String, Object>> targetAttachments = (List<Map<String, Object>>) evt.getTargetAttachments(); 18 for (Map<String, Object> map : targetAttachments) { 19 String uid = (String) map.get("uid"); 20 String description = (String) map.get("description"); 21 int indexOf = description.indexOf("下载次数:"); 22 int preDesIndex = description.indexOf("|", indexOf); 23 //取下载次数 24 String countStr=description.substring(indexOf+5, preDesIndex); 25 int nowCount=Integer.valueOf(countStr)+1; 26 //原备注信息内容部分 27 String preDescription = description.substring(preDesIndex + 1); 28 AttachmentServiceHelper.mark(uid, String.format("|下载次数:%d|", nowCount) + preDescription); 29 } 30 this.getView().updateView("attachmentpanel"); 31 } 32 33 AttachmentDownloadListener.super.attachmentAfterDownload(evt); 34 } 35 36}
注:如果业务需求中需要记录附件上传之后的下载次数,则建议在附件面板上添加自定义按钮。实现方式为:在本单据上用一个单据体保存每个附件对应下载的次数,并把下载次数显示为自定义按钮的名字。
3 实现效果
1)上传单据后,提交所上传单据,会初始化下载次数为0,效果如下所示:
初始化下载次数
2)点击“下载”后,可以看到下载次数已经动态更新到备注内容的下载次数中,效果如下所示:
动态更新下载次数
4 划重点
实现附件下载次数的开发需要注意以下两个方面:
提交单据时,提交的操作插件需要初始化下载次数为0;
附件被下载时需要动态更新下载次数。
想要显示“附件下载次数”,看这里
很多小伙伴在后台给小编私信,希望可以通过案例对附件下载次数的开发进行详细的说明。这不,宠粉的小编带着案例走来了。1 需求背景在单据...
点击下载文档
上一篇:手把手教你“分享附件”
下一篇:必看!列表开发典型场景解决方案
本文2024-09-23 00:20:50发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-138883.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章