将PLM系统中文档的PDF生成下载链接,通过邮件、社交工具发送给客户、供应商等合作伙伴 更好的促进产业链上下游协作

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

将PLM系统中文档的PDF生成下载链接,通过邮件、社交工具发送给客户、供应商等合作伙伴 更好的促进产业链上下游协作

【应用场景】

目前标准产品支持原文档批量生成下载链接,本次demo指导大家如何实现生成下载PDF链接。


【注意事项】

二开完成后,具体的配置方法与标准生成链接相似,请参考:文档外部分享配置 (kingdee.com)


【案例演示】

生成原文档的PDF文件下载链接。


【实现步骤】

<1>编写服务插件,继承DocumentDownloadLinkService,代码如下。

using Kingdee.BOS;
using Kingdee.BOS.Core;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager;
using Kingdee.K3.PLM.Common.Core.BOSBridge;
using Kingdee.K3.PLM.Common.Core.Common;
using Kingdee.K3.PLM.Common.Core.ServiceHelper;
using Kingdee.K3.PLM.Common.Core.Utility;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;

namespace .Document
{
    [Description("二开生成链接服务插件")]
    public class CreateDownLoadLinkService : DocumentDownloadLinkService
    {
        /// <summary>
        /// 返回需要下载的文档
        /// </summary>
        /// <param name="selectedRows"></param>
        /// <returns></returns>
        protected override List<DynamicObject> GetDownloadDocuments(IEnumerable<ExtendedDataEntity> selectedRows)
        {
            var tempDocIds = selectedRows.Select(t => Convert.ToInt64(t.DataEntity["Id"])).Cast<object>().ToArray();
            List<DynamicObject> dynCol = DomainObjectManager.Instance(this.PLMContext, (long)StandardCategoryType.Document).Load(this.PLMContext, tempDocIds).ToList();
            foreach (var dyn in dynCol)
            {
                if ((DynamicObject)dyn["FileId"] != null)
                {
                    var file = GetDocumentInfo(PLMContext, Convert.ToInt64(dyn["Id"]));
                    if (file != null)
                    {
                        var FileNameNoExt = Path.GetFileNameWithoutExtension(file["FileName"].GetString());
                        var ext = Path.GetExtension((file["FFILENAME"] ?? "").ToString()).ToLower();
                        file["FileName"] = FileNameNoExt + ext;
                        dyn["FileId"] = file;
                    }
                }
            }
            return dynCol;
        }
        /// <summary>
        /// 获取生成链接所需的文档信息,包括PDF的物理文件Id,文档名等
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="docId"></param>
        /// <returns></returns>
        private DynamicObject GetDocumentInfo(PLMContext ctx, long docId)
        {
            List<SqlParam> paras = new List<SqlParam>() { new SqlParam("@FID", KDDbType.Int64, docId), new SqlParam("@FLOCALEID", KDDbType.Int32, ctx.LanguageId) };
            string sql = string.Format(@"SELECT D.FRELEVANTOBJECT as Id,P.FFILENAME,B.FNAME as FileName FROM  T_PLM_PDM_BASE A  INNER JOIN  T_PLM_PDM_BASE_L B ON A.FID = B.FID
                INNER JOIN T_PLM_PDM_BASE_D D ON A.FID = D.FID 
                INNER JOIN T_PLM_PDM_PHYSICALFILE P ON D.FRELEVANTOBJECT = P.FFILEID
                WHERE A.FID = @FID AND FLOCALEID=@FLOCALEID");
            return PLMDBUtils.Instance.ExecuteDynamicObject(ctx, sql, paras).FirstOrDefault();
        }
    }
}


 

<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。

<3>操作列表添加操作

<4>

在业务类型配置-》操作配置添加【生成下载PDF链接】操作

业务类型授权增加权限项


【功能验证】

<1>登录业务站点,打开文档库,可以看到【生成下载PDF链接】,此功能针对文档已经生成PDF的文件。注意:如果原文档没有PDF,则不能生成下载链接。


【参考资料】

【汇总】星空PLM二开指南(持续更新)https://vip.kingdee.com/article/329914697153905408?productLineId=1&isKnowledge=2

【合辑】金蝶云.星空 PLM知识合辑(持续更新) https://vip.kingdee.com/article/329662872047302912?productLineId=1&isKnowledge=2

二次开发扩展程序开发之插件模式 https://vip.kingdee.com/article/83591896433330944?productLineId=1

PLM云 -- 基于BOS平台的二次开发扩展 https://vip.kingdee.com/article/10875?productLineId=1

PLM云 -- 基于配置系统的二次开发扩展(对象属性扩展)https://vip.kingdee.com/article/10887?productLineId=1

PLM云 -- 基于标准业务系统的二次开发扩展 https://vip.kingdee.com/article/10901?productLineId=1

金蝶云星空BOS二次开发指南 https://vip.kingdee.com/article/94751030918525696?productLineId=1&isKnowledge=2

金蝶云星空数据字典V7.6 https://open.kingdee.com/K3Cloud/WenKu/DocumentView.aspx?docId=102613


将PLM系统中文档的PDF生成下载链接,通过邮件、社交工具发送给客户、供应商等合作伙伴 更好的促进产业链上下游协作

【应用场景】目前标准产品支持原文档批量生成下载链接,本次demo指导大家如何实现生成下载PDF链接。【注意事项】二开完成后,具体的配置方...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息