柔性生产中,HMI端扫码汇报,报不良选择了多个缺陷类型,可否在汇报单的缺陷类型显示多个的二开方案

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

柔性生产中,HMI端扫码汇报,报不良选择了多个缺陷类型,可否在汇报单的缺陷类型显示多个的二开方案

【应用场景】

柔性生产中,HMI端扫码汇报,报不良选择了多个缺陷类型,可否在汇报单的缺陷类型显示多个



【实现步骤】

<1>需要在工序汇报的元数据上面增加一个子单据体,拖入基础资料 ,用来记载缺陷类型的

<2>需要自定义一个插件,代码如下:

using Kingdee.BOS;
using Kingdee.BOS.App;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.K3.Core.MFG;
using Kingdee.K3.Core.MFG.BizException;
using System;
using System.Collections.Generic;
using System.Linq;
using Kingdee.K3.Core.MFG.SFC.Defect;
using Kingdee.K3.MFG.SFC.App.Core.SFSMessageHandle.ScheduleService.Executor.ParamValue;
using Kingdee.K3.MFG.SFC.App.Core.SFSMessageHandle.ScheduleService.Executor.PlugIn;


namespace Kingdee.K3.MFG.SFS.App.Core.Executor
{
    public class OptRptMsgPlugIn : AbstractMsgPlugIn
    {
        [MsgExecutorParam]
        public ExecuteByCacheInfoParam MsgParam { get; set; }

        public override void EndDoTransactionOfAll(
            Kingdee.K3.MFG.SFC.App.Core.SFSMessageHandle.ScheduleService.Executor.PlugIn.Args.EndDoTransactionOfAllEventArgs e)
        {
            base.EndDoTransactionOfAll(e);
            if (this.MsgParam.GenOptRptObjs == null) return;
            // 赋值工序汇报子单据体字段
            UpdateSubEntryExtendValue(e.Context);
        }

        private void UpdateSubEntryExtendValue(Context ctx)
        {

            FormMetadata metadata =
                ServiceHelper.GetService<IMetaDataService>().Load(ctx, "SFC_OperationReport") as FormMetadata;
            DynamicObjectType edt = metadata.BusinessInfo.GetEntity("FSubEntity").DynamicObjectType;
            DynamicObjectCollection rptEntries =
                (this.MsgParam.GenOptRptObjs[0]["OptRptEntry"] as DynamicObjectCollection);
            foreach (var rptEntry in rptEntries)
            {
            }
          
            List<DefectInfo> a = this.MsgParam.DefectDic.Values.ToList();
            List<DefectDetailInfo> ddinfos = a[0].DefectDetails;
            foreach (var item in ddinfos)
            {
                long defectTypeId = item.DefectTypeId;//缺陷类型
            }
            //可以拿到所有的缺陷类型
        }
    }
}

上述的插件可以拿到汇报单以及缺陷类型的ID,只需要依次把缺陷类型ID依次赋值到工序汇报二开的新增里面的子单据体。


<3>在“消息处理器定义”中,针对生成不良消息处理器CreateBadRpt,增加插件实现类:


【功能验证】



【参考资料】

【二开案例.基础资料.联动查询(GetValue)】

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



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

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



柔性生产中,HMI端扫码汇报,报不良选择了多个缺陷类型,可否在汇报单的缺陷类型显示多个的二开方案

【应用场景】柔性生产中,HMI端扫码汇报,报不良选择了多个缺陷类型,可否在汇报单的缺陷类型显示多个【实现步骤】<1>需要在工序汇报的元数...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息