PLM.二开案例.变更对象下载/打开文档功能
【应用场景】
希望在变更单中可以下载或者打开变更中的文档。
【注意事项】
该方案仅演示如何调用PLM客户端进行文档下载操作,未涉及权限管控。请根据必要的业务场景进行权限控制。
下载的方法可以通过参数控制是否本地打开,具体看示例代码注释。
【案例演示】
变更对象新增一个自定义下载文档按钮,点击后可下载文档。
【实现步骤】
<1>编写一个表单插件,你可能需要引用以下组件:
编写代码如下:
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Orm.DataEntity; using Kingdee.K3.PLM.Business.PlugIn; using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Base; using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager; using Kingdee.K3.PLM.Common.BusinessEntity.View; using Kingdee.K3.PLM.Common.Core.DynamicPluginHelper; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; namespace ISV.ECNDownloadFile.Common.BussinessEntity { public class EcnDownloadFileDemo: AbstractPLMBillPlugIn { public override void EntryBarItemClick(BarItemClickEventArgs e) { base.EntryBarItemClick(e); if (e.BarItemKey.ToUpper() == "TBDOWNLOADOBJFILES") { DownloadFiles(); } } private void DownloadFiles() { var targetFileList = GetTargetFileList(); //过滤非文档和未勾选 if (targetFileList.Count < 1) { return; } string title = "选择文件夹"; try { //调起PLM客户端 选择本地文件夹。 //如果固定文件夹也可跳过这一段,直接传固定文件夹路径下载 PageManager.Instance.ShowClient(PLMView, title, title, Kingdee.K3.PLM.Common.Framework.EntityClass.ClientCommandConst.Directory_NoBiz_Selection, "", (fr) => { DownLoadFile((string)fr.ReturnData, targetFileList); }); } catch (Exception ex) { throw new Exception("请选择一个存放文件夹!" + ex.Message); } } private List<DynamicObject> GetTargetFileList() { List<DynamicObject> dynamicObjects = new List<DynamicObject>(); var dyns = GridHelper.GetEntityCollection(this.View, "FChangeObjectEntity"); foreach (var dyn in dyns) { var category = Convert.ToInt64(dyn["ObjectCategory_Id"]); var isCheck = dyn["IsSelect"]; if (!CategoryContract.Instance.IsDocumentCategory(category) || !(bool)isCheck) continue; dynamicObjects.Add(dyn); } return dynamicObjects; } /// <summary> /// 下载文档 /// </summary> /// <param name="frJson"></param> /// <param name="fileObjListd"></param> private void DownLoadFile(string frJson, List<DynamicObject> fileObjListd) { var dir = JsonConvert.DeserializeObject<Dictionary<string, string>>(frJson); string folderPath = string.Empty; List<DynamicObject> documents = new List<DynamicObject>(); List<long> docList = new List<long>(); foreach (var item in fileObjListd) { var docId = Convert.ToInt64(item["BaseObject"]); var document = DomainObjectManager.InstanceByObjectId(PLMContext, docId).Get(PLMContext, docId); if (document != null) { docList.Add(docId); documents.Add(document); } } if (dir.Count() > 0 && dir.ContainsKey("Directory")) { folderPath = dir["Directory"]; } else { throw new Exception("异常:选择路径错误!"); } Dictionary<string, string> dictData = new Dictionary<string, string>(); //下面方法为标准内置的下载方法, 可以通过方法参数IsOpen控制是否打开文档 DocumentOperManager.Instance.DownloadFiles(PLMContext, this.PLMView, documents, docList, folderPath, false, dictData, (r) => { this.View.ShowMessage("下载完成!"); }, isDownlaodDoc: true ); } } }
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展变更单单据,在变更对象单据体中新加菜单按钮,随后注册表单插件,保存元数据。
<4>随后在PLM业务类型初始化中,更新变更单业务类型模型后即可验证功能。
【参考资料】
【汇总】星空PLM二开指南(持续更新...) (kingdee.com)
PLM.二开案例.变更对象下载/打开文档功能
【应用场景】希望在变更单中可以下载或者打开变更中的文档。 【注意事项】该方案仅演示如何调用PLM客户端进行文档下载操作,未涉及权限管...
点击下载文档
本文2024-09-23 03:05:07发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-156613.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章