二开实现设计bom库选择多个bom展示bom报表;

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

二开实现设计bom库选择多个bom展示bom报表;

【应用场景】

设计bom库选择多个bom展示bom报表。


【注意事项】

该实现方案涉及到性能和页签的展示,(树状bom报表需要加载时间,页签有控制打开个数),非最佳实践,不推荐使用,仅限于特殊场景下的特殊应用。


【案例演示】

需先设置bom为模块,再bomide中扩展bom模板添加按钮 多个树状报表展示,再绑定二开插件;


【实现步骤】

前置操作参考帖子:

https://vip.kingdee.com/article/83591896433330944?productLineId=1

https://vip.kingdee.com/article/181757918948438784?productLineId=1

<1>BOSIDE扩展操作:


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

引用参考:

列表插件重写BarItemClick方法:

public override void BarItemClick(BarItemClickEventArgs e)
        {
            if (OperationRefused(e)) return;
            switch (e.BarItemKey.ToUpper())
            {
                case "TBBOMSREPORT":
                    var lsts = this.ListView.SelectedRowsInfo;
                    var dicObject = DomainObjectManager.AutoLoad(PLMContext, lsts.Select(m => Convert.ToInt64(m.PrimaryKeyValue)).ToArray()).ToDictionary(m => m["id"].ToString());
                    foreach (var dic in dicObject)
                    {
                        var parameters = new Dictionary<string, object>();
                        string formId = PLMFormIdConst.PLM_CFG_BOMREPORT;
                        var fid = Convert.ToInt64(dic.Key);
                        var bomObj = BaseObjectManager.Instance(PLMContext).Get(PLMContext, fid);
                        var categoryID = Convert.ToInt64(bomObj["CategoryID_Id"]);
                        parameters.Add(FormParameterConst.MaterialPlatform_BomId, fid);
                        parameters.Add(FormParameterConst.plm_param_MaxLayerStr, 30);
                        parameters.Add(FormParameterConst.plm_param_BomReportCategoryId, categoryID);//BOM 允许扩展子业务类型,bom报表也需要支持
                        parameters.Add(FormParameterConst.plm_param_BomReportType, BomReportType.Tree);
                        var treeField = PLMMetadataHelper.GetForm(PLMContext, PLMFormIdConst.PLM_CFG_BOMREPORT).BusinessInfo.GetField("FISTREEVIEW");
                        bool autoTreeReport = treeField != null && treeField.DefValue != null && treeField.DefValue.Value != null && Convert.ToBoolean(treeField.DefValue.Value);
                        if (autoTreeReport)
                        {
                            formId = PLMFormIdConst.PLM_CFG_BOMTREEREPORT;
                            parameters.Add(FormParameterConst.plm_param_BomReportIsTreeView, autoTreeReport);
                        }
                        PageManager.Instance.ShowDynamicForm(PLMView, formId, ResManager.LoadKDString("BOM报表", "120006000014518", SubSystemType.PLM), parameters, ShowType.MainNewTabPage);
                    }
                    break;
            }
        }


其他bom报表参考参数修改:

switch (operation)
                {
                    case "BOMFILIATIONREPORTOP":
                        parameters.Add(FormParameterConst.plm_param_BomReportType, BomReportType.Filiation);
                        break;

                    case "BOMGATHERREPORTOP":
                        parameters.Add(FormParameterConst.plm_param_BomReportType, BomReportType.Gather);
                        break;

                    case "BOMREPORTOP":
                        parameters.Add(FormParameterConst.plm_param_BomReportType, BomReportType.Tree);
                        var treeField = PLMMetadataHelper.GetForm(plugin.PLMContext, PLMFormIdConst.PLM_CFG_BOMREPORT).BusinessInfo.GetField("FISTREEVIEW");
                        bool autoTreeReport = treeField != null && treeField.DefValue != null && treeField.DefValue.Value != null && Convert.ToBoolean(treeField.DefValue.Value);
                        if (autoTreeReport)
                        {
                            formId = PLMFormIdConst.PLM_CFG_BOMTREEREPORT;
                            parameters.Add(FormParameterConst.plm_param_BomReportIsTreeView, autoTreeReport);
                        }
                        break;
                    default:
                        plugin.PLMView.CurrentView.ShowWarnningMessage(ResManager.LoadKDString("操作名称不对", "120006000014517", SubSystemType.PLM));
                        return;
                }

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

<3>BOSIDE扩展BOM模板,注册表单插件,保存元数据,开发完毕。


【功能验证】

<1>登录业务站点,打开设计bom库界面,点击保存菜单,即可通过VS调试或者日志文件观察到最新的服务插件执行顺序。


二开实现设计bom库选择多个bom展示bom报表;

【应用场景】设计bom库选择多个bom展示bom报表。【注意事项】该实现方案涉及到性能和页签的展示,(树状bom报表需要加载时间,页签有控制打...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息