Files
GateDge2023_ljy/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillConvertEventPlugInEx.cs
PastSaid 3d15fd4b7e a
2025-01-01 08:21:58 +08:00

265 lines
9.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 使
/// <summary>
/// 转换后事件
/// </summary>
/// <param name="e"></param>
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
/// <summary>
/// 创建单据视图
/// </summary>
/// <param name="ctx"></param>
/// <param name="metaData"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 创建输入参数
/// </summary>
/// <param name="ctx"></param>
/// <param name="metaData"></param>
/// <returns></returns>
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<AbstractDynamicFormPlugIn> 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);
}
/// <summary>
/// 获取数据源
/// </summary>
/// <param name="e"></param>
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);
}
/// <summary>
/// 选单条件策略
/// </summary>
/// <param name="e"></param>
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);
}
}
}