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

如何实现在物料反查的结果加入BOM关系属性字段

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

如何实现在物料反查的结果加入BOM关系属性字段

【应用场景】

根据业务需要,物料反查需要显示对应BOM关系属性字段,如BOM用量。


【注意事项】

1.扩展【物料BOM关系反查】单据,单据体上新增自定义字段来表示关系属性,演示内容以FBomNumber(BOM用量)为例,其他关系属性逻辑类似。

2.关系属性表:T_PLM_CFG_RELATION。


【案例演示】

物料反查显示出对应BOM的用量。


【实现步骤】

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

using Kingdee.BOS;
using Kingdee.BOS.App.Core.Utils;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.K3.PLM.Business.PlugIn;
using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Base;
using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Entity;
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.Linq;
using System.Text;
namespace Kingdee.K3.PLM.STD.Business.PlugIn
{
    [HotUpdate]
    [Description("物料反查BOM用量插件")]
    public class MatReverseNumberForm : AbstractPLMDynamicFormPlugIn
    {
        /// <summary>
        /// 当前物料id
        /// </summary>
        long _currentId = 0;
        /// <summary>
        /// 当前物料业务类型
        /// </summary>
        long _categoryId = 0;
        /// <summary>
        /// BOM业务类型
        /// </summary>
        List<long> bomcategory = new List<long>();
        
        /// <summary>
        /// 是否初始化
        /// </summary>
        bool _init = false;
        public override void PreOpenForm(PreOpenFormEventArgs e)
        {
            _currentId = Convert.ToInt64(e.OpenParameter.GetCustomParameter("plm_param_SourceObjectId"));
            base.PreOpenForm(e);
        }
        public override void OnLoad(EventArgs e)
        {
            var d = DomainObjectManager.Instance(PLMContext, (long)StandardCategoryType.Material).Get(PLMContext, _currentId);
            if (d != null)
            {
                _categoryId = Convert.ToInt64(d["CategoryId_Id"]);
            }
            if (CategoryContract.Instance.IsMaterialCategory(_categoryId))
            {
                bomcategory.Add((long)StandardCategoryType.BOM);//支持反查bom所有业务类型
                bomcategory.Add((long)StandardCategoryType.DBOM);
            }
            else if (CategoryContract.Instance.IsVirtualMaterialCategory(_categoryId))
            {
                bomcategory.Add((long)StandardCategoryType.DBOM);
            }
            _init = true;
        }
        public override void CustomEvents(CustomEventsArgs e)
        {
            if (_init)
            {
                Dictionary<string, decimal> dicRelationBomNumbers = GetRelationBomNumberBySlaveId(PLMContext, bomcategory, _currentId);
                if (dicRelationBomNumbers.Count > 0)
                {
                    var dicKeys = dicRelationBomNumbers.Keys;
                    var relationDatas = this.View.Model.DataObject["RelationsOperationLogs"].GetAsType<DynamicObjectCollection>();
                    int rowIndex = 0;
                    foreach (var relation in relationDatas)
                    {
                        var bomCode = relation.GetDynamicObjectItemValue<string>("RelationObjectCode");
                        if (!string.IsNullOrWhiteSpace(bomCode) && dicKeys.Contains(bomCode))
                        {
                            relation["BomNumber"] = dicRelationBomNumbers[bomCode];//BOM用量
                        }
                        this.View.UpdateView("FBomNumber", rowIndex);
                        rowIndex++;
                    }
                }
            }
            _init = false;
            base.CustomEvents(e);
        }
        /// <summary>
        /// 根据物料或者对应的BOM编码、用量
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="categoryId">BOM业务类型</param>
        /// <param name="slaveId">物料id</param>
        /// <returns></returns>
        public Dictionary<string, decimal> GetRelationBomNumberBySlaveId(PLMContext ctx, List<long> categoryId, long slaveId)
        {
            string filter = stri

如何实现在物料反查的结果加入BOM关系属性字段

【应用场景】根据业务需要,物料反查需要显示对应BOM关系属性字段,如BOM用量。【注意事项】1.扩展【物料BOM关系反查】单据,单据体上新增...
点击下载文档文档为doc格式

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

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