265 lines
9.7 KiB
C#
265 lines
9.7 KiB
C#
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);
|
||
}
|
||
}
|
||
}
|