PLM.二开案例.插件如何调用BOM下推功能

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

PLM.二开案例.插件如何调用BOM下推功能

【应用场景】

如果通过插件代码调用标准的BOM下推功能


【注意事项】

  1. 本文不涉及下推过程的干预,只演示如何调用标准的下推功能。

  2. BOM下推在多组织和单组织下处理方式稍有不同,请按实际情况开发。


【案例演示】

在BOM批量修改功能中,调用下推功能下推批改的所有BOM。


【实现步骤】

<1>编写表单插件和服务插件,代码如下。 

using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.PLM.Business.PlugIn;
using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager;
using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Metadata;
using Kingdee.K3.PLM.Common.BusinessEntity;
using Kingdee.K3.PLM.Common.BusinessEntity.Operation;
using Kingdee.K3.PLM.Common.Core.Utility;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;

namespace ISV.BomPushDown.PlugIn
{
    [Description("调用标准下推示例")]
    public class BomPushDownDemo: AbstractPLMDynamicFormPlugIn
    {
        public override void EntryBarItemClick(BarItemClickEventArgs e)
        {
            if (e.BarItemKey.ToUpper() == "TBPUSHDOWN")
            {
                var entity = Model.DataObject["BomBulkEditEntity"] as DynamicObjectCollection;

                //多组织用 --标准下推界面交互
                var allBomIds = entity.Select(x => x["BomObject_Id"]).Distinct().ToArray();
                DynamicFormShowParameter parameter = new DynamicFormShowParameter();
                parameter.FormId = "PLM_CFG_PUSHDOWN";
                parameter.PageId = PLMGuid.NewGuidString().ToString();
                parameter.ParentPageId = this.View.PageId;
                parameter.CustomComplexParams.Add("FObjectListId", allBomIds);
                parameter.CustomComplexParams.Add("OperationCode", "ERPSychronzation");
                parameter.OpenStyle.ShowType = ShowType.NonModal;
                this.View.ShowForm(parameter);

                //单组织用 -- 直接调下推操作
                //理论上多组织可以用(直接默认下推),但是缺少组织维护信息,可能部分业务场景不适用
                //var allBomIds = entity.Select(x => Convert.ToInt64(x["BomObject_Id"])).Distinct().ToArray();
                //var allBomData = DomainObjectManager.AutoLoad(PLMContext, allBomIds);
                //var allBomsByCategory = allBomData.GroupBy(x => Convert.ToInt64(x["CategoryId_Id"])).ToDictionary(k => k.Key, V => V.ToArray());
                //List<IOperationResult> results = new List<IOperationResult>();
                ////不同业务类型不同模型,需要区分开
                //foreach (var category in allBomsByCategory.Keys)
                //{
                //    var categoryMeta = CategoryMetadataVersionManager.Instance.GetFormMetadata(PLMContext, category, false);
                //    OperateOption option = OperateOption.Create();
                //    PLMOperationParam param = new PLMOperationParam();
                //    param.Type = PLMOperationType.Cross;
                //    param.CustomerParams["plm_param_IsCallFormOperation"] = true;
                //    param.CustomerParams["plm_param_PLMContext"] = PLMContext;
                //    option.SetVariableValue("plm_param", param);
                //    results.Add(BusinessDataServiceHelper.DoNothingWithDataEntity(PLMContext.BOSContext,
                //        categoryMeta.BusinessInfo,
                //        allBomsByCategory[category],
                //        "ERPSychronzation",
                //        option));
                //}
                //this.View.ShowOperateResult(OperationResultHelper.MergeResult(results));
            }
        }
    }
}


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

<3>BOSIDE扩展BOM批量修改明细,添加相关按钮,注册表单插件,保存元数据,开发完毕。



【功能验证】



【参考资料】

【汇总】星空PLM二开指南(持续更新) (kingdee.com)


【金蝶云星空BOS二次开发案例演示】

https://vip.kingdee.com/article/94751030918525696



PLM.二开案例.插件如何调用BOM下推功能

【应用场景】如果通过插件代码调用标准的BOM下推功能【注意事项】本文不涉及下推过程的干预,只演示如何调用标准的下推功能。BOM下推在多组...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息