电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

PLM物料启动流程使用物料图号字段和相关对象文档的物理文件名字段进行控制

来源:金蝶云社区作者:金蝶2024-09-236

PLM物料启动流程使用物料图号字段和相关对象文档的物理文件名字段进行控制

【应用场景】

物料存在相关对象文档,且文档物理文件名包含物料图号,满足条件则物料可以启动流程。


【注意事项】

1、先在测试环境测试无误再考虑使用。

2、二开插件继承了原本启动流程插件,因此启用二开插件后需要取消启动原本的插件。


【实现步骤】

<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.CFG.Common.BusinessEntity.Manager.Relation;
using Kingdee.K3.PLM.Common.Core.BOSBridge;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;

二开实现参考:

[Description("物料启动流程二开插件")]
    public class StartFlowServiceSD: StartFlowService
    {

        public override void DoViewOperation(IPLMBusinessFormPlugIn plugin, BeforeExecuteOperationTransaction operationTranaction, ViewInvokeEventArgs e)
        {
            string errMes = "";
            var selectrows = operationTranaction.SelectedRows.ToList();
            if(selectrows.Count > 0)
            {
                var selectObjs = selectrows.ToDictionary(w => w["Id"], w => long.Parse(w["CategoryID_Id"].ToString()));
                var domainObjectList = new List<DynamicObject>();
                foreach (var objs in selectObjs.GroupBy(w => w.Value))
                {
                    if (!CategoryContract.Instance.IsMaterialCategory(objs.FirstOrDefault().Value)) continue;
                    var pdmobj = DomainObjectManager.Instance(PLMContext, objs.Key).Load(PLMContext, objs.Select(w => w.Key).ToArray());
                    domainObjectList = domainObjectList.Concat(pdmobj).ToList();
                }

                foreach (var dObj in domainObjectList)
                {
                    if (!dObj.DynamicObjectType.Properties.ContainsKey("DrawNumber")) continue;
                    string drawNumber = Convert.ToString(dObj["DrawNumber"]);
                    var reObjs = RelatedObjectManager.Instance.GetAllRelatedDyns(PLMContext, dObj);
                    bool haveDoc = false;
                    foreach (var reObj in reObjs)
                    {
                        var globalObj = (DynamicObject)reObj["RelatedObject"];
                        long categoryId = Convert.ToInt64(globalObj["CategoryId_ID"]);
                        if (CategoryContract.Instance.IsDocumentCategory(categoryId))
                        {
                            var physicalObj = (DynamicObject)globalObj["FILEID"];
                            if (physicalObj == null) continue;
                            string physicalName = Conve

PLM物料启动流程使用物料图号字段和相关对象文档的物理文件名字段进行控制

【应用场景】物料存在相关对象文档,且文档物理文件名包含物料图号,满足条件则物料可以启动流程。【注意事项】1、先在测试环境测试无误再...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信