using Kingdee.BOS.Core.Bill; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.Metadata.FormElement; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.ServiceHelper; using Kingdee.K3.BD.NewCode.Core.Utils; using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn; using Kingdee.BOS.Util; using System.ComponentModel; using Kingdee.BOS; using Kingdee.BOS.Core; using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.Metadata.FieldElement; namespace GZ.LJY000.Biori.PRD_MO { [Description("生产订单装换插件#"), HotUpdate] public class BillConvertEventPlugInEx : AbstractConvertPlugIn { #region 因使用优联系统,暂时停用 /// /// 转换后事件 /// /// public override void AfterConvert(AfterConvertEventArgs e) { base.AfterConvert(e); return; var paraDIC = this.Option.GetVariables(); if (!paraDIC.ContainsKey("ScanEntry")) return; var FInStockEntryItem = paraDIC["ScanEntry"] as DynamicObjectCollection; if (FInStockEntryItem == null) return; var FInStockEntry = e.TargetBusinessInfo.GetEntity("FEntity"); //得到单据数据包扩展集合 var billDynObjExs = e.Result.FindByEntityKey("FBillHead"); var tView = CreateView(e.TargetBusinessInfo.GetForm().Id);//创建目标单据视图 foreach (var billDynObjEx in billDynObjExs) { var billDynObj = billDynObjEx.DataEntity; //#单个单据数据包 tView.Model.DataObject = billDynObj; //#给模型设置数据包 var entryDynObjs = FInStockEntry.DynamicProperty.GetValue(billDynObj) as DynamicObjectCollection; //#得到字段所在实体的数据包 var rowIndex = 0;//#分录行索引 var fStockerIdField = e.TargetBusinessInfo.GetField("FStockerId") as BaseDataField; //#仓管员 var stockerIdObj = FInStockEntryItem.FirstOrDefault(x => x["StockerId"].Long2Int() != 0); if (stockerIdObj != null) { var stockerId = stockerIdObj["StockerId"].Long2Int(); //var stockerIdData = BusinessDataServiceHelper.LoadSingle(this.Context, stockerId, fStockerIdField.RefFormDynamicObjectType); //billDynObj["FStockerId_Id"] = stockerId; //billDynObj["FStockerId"] = stockerIdData; tView.Model.SetValue("FStockerId", stockerId); //tView.Model.SetValue(fStockerIdField, billDynObj, stockerId); } foreach (var rowObj in entryDynObjs) { //#查找对应分录标识 var fRealQtyField = e.TargetBusinessInfo.GetField("FRealQty"); //#数量 var fLotField = e.TargetBusinessInfo.GetField("FLot"); //#数量 var Link = rowObj["FEntity_Link"] as DynamicObjectCollection;// #找出LK关系表找出对应的源单内码数据 var entity = FInStockEntryItem.FirstOrDefault(w => w["ENTRYID"].Long2Int() == Link[0]["SId"].Long2Int()); if (entity != null) { tView.Model.SetValue(fRealQtyField, rowObj, entity["avgQty"]);// #这字段值并且会触发值更新事件 tView.Model.SetValue(fLotField, rowObj, entity["FLot"]);// #这字段值并且会触发值更新事件 tView.InvokeFieldUpdateService(fRealQtyField.Key, rowIndex);// #调用实体服务规则 } rowIndex++; } } } #endregion /// /// 创建单据视图 /// /// /// /// private IDynamicFormView CreateView(string formId) { FormMetadata metadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, formId); var OpenParameter = CreateOpenParameter(this.Context, metadata); var Provider = metadata.BusinessInfo.GetForm().GetFormServiceProvider(true); string importViewClass = "Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web"; Type type = Type.GetType(importViewClass); IDynamicFormView view = (IDynamicFormView)Activator.CreateInstance(type); ((IDynamicFormViewService)view).Initialize(OpenParameter, Provider); return view; } /// /// 创建输入参数 /// /// /// /// private BillOpenParameter CreateOpenParameter(Context ctx, FormMetadata metaData) { Form form = metaData.BusinessInfo.GetForm(); BillOpenParameter openPara = new BillOpenParameter(form.Id, metaData.GetLayoutInfo().Id); openPara = new BillOpenParameter(form.Id, string.Empty); openPara.Context = ctx; openPara.ServiceName = form.FormServiceName; openPara.PageId = Guid.NewGuid().ToString(); // 单据 openPara.FormMetaData = metaData; openPara.LayoutId = metaData.GetLayoutInfo().Id; // 操作相关参数 openPara.Status = OperationStatus.ADDNEW; openPara.PkValue = null; openPara.CreateFrom = CreateFrom.Default; openPara.ParentId = 0; openPara.GroupId = ""; openPara.DefaultBillTypeId = null; openPara.DefaultBusinessFlowId = null; // 修改主业务组织无须用户确认 openPara.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false); // 插件 List plugins = form.CreateFormPlugIns(); openPara.SetCustomParameter(FormConst.PlugIns, plugins); return openPara; } public override void OnInitVariable(InitVariableEventArgs e) { base.OnInitVariable(e); } public override void OnQueryBuilderParemeter(QueryBuilderParemeterEventArgs e) { base.OnQueryBuilderParemeter(e); } /// /// 获取数据源 /// /// public override void OnBeforeGetSourceData(BeforeGetSourceDataEventArgs e) { base.OnBeforeGetSourceData(e); } public override void OnInSelectedRow(InSelectedRowEventArgs e) { base.OnInSelectedRow(e); } public override void OnBeforeFieldMapping(BeforeFieldMappingEventArgs e) { base.OnBeforeFieldMapping(e); } public override void OnFieldMapping(FieldMappingEventArgs e) { base.OnFieldMapping(e); } public override void OnAfterFieldMapping(AfterFieldMappingEventArgs e) { base.OnAfterFieldMapping(e); } public override void OnCreateLink(CreateLinkEventArgs e) { base.OnCreateLink(e); } public override void OnSetLinkAmount(SetLinkAmountEventArgs e) { base.OnSetLinkAmount(e); } public override void OnAfterCreateLink(CreateLinkEventArgs e) { base.OnAfterCreateLink(e); } public override void OnGetSourceData(GetSourceDataEventArgs e) { base.OnGetSourceData(e); } public override void OnCreateTarget(CreateTargetEventArgs e) { base.OnCreateTarget(e); } public override void OnParseFilterOptions(ParseFilterOptionsEventArgs e) { base.OnParseFilterOptions(e); } public override void OnGetDrawSourceData(GetDrawSourceDataEventArgs e) { base.OnGetDrawSourceData(e); } public override void OnCreateDrawTarget(CreateDrawTargetEventArgs e) { base.OnCreateDrawTarget(e); } public override void OnBeforeGroupBy(BeforeGroupByEventArgs e) { base.OnBeforeGroupBy(e); } /// /// 选单条件策略 /// /// public override void OnParseFilter(ParseFilterEventArgs e) { base.OnParseFilter(e); var fromId = e.SourceBusinessInfo.GetForm().Id; e.FilterPolicySQL = e.FilterPolicySQL + $@" NOT EXISTS ( SELECT 1 FROM T_UNW_WMS_BARCODE uwbc WHERE uwbc.FBILLID = t1.FID AND t1.FENTRYID = uwbc.FBILLENTRYID AND uwbc.FBILLFORMID = '{fromId}' ) "; e.PlugFilterDesc = "已生成条码的数据不能重复打印!"; } public override void OnGetConvertBusinessService(ConvertBusinessServiceEventArgs e) { base.OnGetConvertBusinessService(e); } public override void OnAfterConvertBusinessService(AfterConvertBusinessServiceEventArgs e) { base.OnAfterConvertBusinessService(e); } public override void OnBeforeTailDiff(BeforeTailDiffEventArgs e) { base.OnBeforeTailDiff(e); } public override void OnAfterTailDiff(AfterTailDiffEventArgs e) { base.OnAfterTailDiff(e); } } }