二开-操作服务插件通过构建View层给单据体进行赋值操作

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

二开-操作服务插件通过构建View层给单据体进行赋值操作

public class BeginSaveCreateEngCLEntity:AbstractOperationServicePlugIn
    {
        public override void BeginOperationTransaction(BeginOperationTransactionArgs e)
        {
            base.BeginOperationTransaction(e);
            if (this.FormOperation.Operation != "Save") return;
            //获取工艺参数元数据
            FormMetadata paraMeta = MetaDataServiceHelper.GetFormMetaData(this.Context, "QPUB_BL_Parameter");
            for (int i = 0; i < e.DataEntitys.Count();i++ )
            {
                var status = e.DataEntitys[i]["DocumentStatus"];
                //单据为暂存状态-返回不进行操作
                if (status.ToString().Equals("Z")) return;
                //查询所有工艺参数对应的参数信息
                String parasql = string.Format(@"/*dialect*/select FID from T_BL_ProcessParameter where F_BL_ROUTEID ={0}", e.DataEntitys[i]["Id"]);
                var resut = DBServiceHelper.ExecuteDynamicObject(this.Context, parasql);
                if (resut.Count == 0) return;
                var paraData = BusinessDataServiceHelper.Load(this.Context, resut.Select(o => o["FID"]).ToArray(), paraMeta.BusinessInfo.GetDynamicObjectType());
                if (paraData.Count() > 0)
                {
                    //创建材料汇总表
                    e.DataEntitys[i] = this.CreateCLEntity(paraData, e.DataEntitys[i]);
                    //创建工具汇总表
                    e.DataEntitys[i] = this.CreateGJEntity(paraData, e.DataEntitys[i]);
                }
            }
        }   
    public IBillView CreateBillView(Context ctx, String formId,object BillId)
        {
            //读取物料BOM的元数据
            FormMetadata meta = MetaDataServiceHelper.Load(ctx, formId) as FormMetadata;
            Form form = meta.BusinessInfo.GetForm();
            // 创建用于引入数据的单据view
            Type type = Type.GetType("Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web");
            var billView = (IDynamicFormViewService)Activator.CreateInstance(type);
            // 开始初始化billView:
            // 创建视图加载参数对象,指定各种参数,如FormId, 视图(LayoutId)等
            BillOpenParameter openParam = CreateOpenParameter(meta, ctx,BillId);
            // 动态领域模型服务提供类,通过此类,构建MVC实例
            var provider = form.GetFormServiceProvider();
            billView.Initialize(openParam, provider);
            billView.LoadData();//加载单据数据
            return billView as IBillView;
        }
        //创建视图加载参数对象,指定各种初始化视图时,需要指定的属性
        public BillOpenParameter CreateOpenParameter(FormMetadata meta, Context ctx,object billId)
        {
            Form form = meta.BusinessInfo.GetForm();
            // 指定FormId, LayoutId
            BillOpenParameter openParam = new BillOpenParameter(form.Id, meta.GetLayoutInfo().Id);
            openParam.Context = ctx;
            // 本单据模型使用的MVC框架
            openParam.ServiceName = form.FormServiceName;
            // 随机产生一个不重复的PageId,作为视图的标识
            openParam.PageId = Guid.NewGuid().ToString();
            // 元数据
            openParam.FormMetaData = meta;
            // 界面状态:新增 (修改、查看)
            if (billId.IsNullOrEmptyOrWhiteSpace() || billId.ToString().Equals("0"))
            {
                openParam.Status = OperationStatus.ADDNEW;  //创建新单据
            }
            else
            {
                openParam.Status = OperationStatus.EDIT;    //修改单据
            }
            //若指定PKValue的值 即为调用指定单据的视图数据包,若为Null,则为新增状态
            openParam.PkValue = billId;
            // 界面创建目的:普通无特殊目的 (为工作流、为下推、为复制等)
            openParam.CreateFrom = CreateFrom.Default;
            // 基础资料分组维度:基础资料允许添加多个分组字段,每个分组字段会有一个分组维度
            // 具体分组维度Id,请参阅 form.FormGroups 属性
            openParam.GroupId = "";
            // 基础资料分组:如果需要为新建的基础资料指定所在分组,请设置此属性
            openParam.ParentId = 0;
            // 单据类型
            openParam.DefaultBillTypeId = "";
            // 业务流程
            openParam.DefaultBusinessFlowId = "";
            // 主业务组织改变时,不用弹出提示界面
            openParam.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false);
            // 插件
            var plugs = form.CreateFormPlugIns();
            openParam.SetCustomParameter(FormConst.PlugIns, plugs);
            PreOpenFormEventArgs args = new PreOpenFormEventArgs(ctx, openParam);
            foreach (var plug in plugs)
            {
                // 触发插件PreOpenForm事件,供插件确认是否允许打开界面
                plug.PreOpenForm(args);
            }
            return openParam;
        }
}

二开-操作服务插件通过构建View层给单据体进行赋值操作

public class BeginSaveCreateEngCLEntity:AbstractOperationServicePlugIn { public override void BeginOperationTransaction(...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息