This commit is contained in:
PastSaid
2024-12-05 15:39:19 +08:00
parent 5472714e30
commit 9725ab5376
128 changed files with 46381 additions and 69 deletions

View File

@@ -0,0 +1,239 @@
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
{
public override void AfterConvert(AfterConvertEventArgs e)
{
base.AfterConvert(e);
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++;
}
}
}
/// <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);
}
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);
}
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);
}
}
}

View File

@@ -0,0 +1,57 @@
import clr
clr.AddReference("System")
clr.AddReference("System.Xml")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.DataEntity")
clr.AddReference("Kingdee.BOS.App")
clr.AddReference("Kingdee.BOS.Contracts")
clr.AddReference("Kingdee.BOS.ServiceHelper")
from Kingdee.BOS import *
from Kingdee.BOS.Contracts import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.List import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
from Kingdee.BOS.Core.Metadata.EntityElement import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.Util import *
from Kingdee.BOS.Core.Util import *
from System import *
from System.Xml import *
from System.ComponentModel import *
from System.Collections.Generic import *
from System.Text import*
from Kingdee.BOS.ServiceHelper import *
def BarItemClick(e):
#如果是变动插入则改变状态
if e.BarItemKey.Equals("tbBarCodePrintEx"):
# dynamicFormShowParameter = DynamicFormShowParameter();
# dynamicFormShowParameter.FormId = "sfsf_SCJHZQLKUAIZHANTIE";#动态表单标识
# this.View.ShowForm(dynamicFormShowParameter,lambda x: SetModel(x));
billObj = this.View.Model.DataObject;
billId = billObj["Id"]
FFormId = billObj["FFormId"]
allRowCollection = ListSelectedRowCollection()
allRowCollection.Add(ListSelectedRow(str(billId),None ,0 ,"PRD_MO"))
# raise Exception(JsonUtil.Serialize(allRowCollection))
billShowParameter = BillShowParameter();
billShowParameter.FormId = "UHIK_BAR_BarCodePrint";
billShowParameter.ParentPageId =this.View.PageId;
# billShowParameter.OpenStyle.ShowType = ShowType.Modal;
billShowParameter.CustomParams.Add("isFromBill", "1");
billShowParameter.CustomParams.Add("SourceFormId", FFormId);
billShowParameter.CustomParams.Add("SourceId", str(billId));
billShowParameter.CustomParams.Add("RuleId", str(1003602));
billShowParameter.CustomParams.Add("SelectedRows", JsonUtil.Serialize(allRowCollection))
#单据内码
# billShowParameter.PKey = str(this.View.Model.DataObject["Id"])
billShowParameter.Status = OperationStatus.ADDNEW
# billShowParameter.Status = OperationStatus.VIEW;
this.View.ShowForm(billShowParameter);
return;

View File

@@ -0,0 +1,38 @@
#引入clr运行库
import clr
#添加对cloud插件开发的常用组件引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.App.Core')
clr.AddReference('Kingdee.BOS.Contracts')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference('Kingdee.BOS.ServiceHelper')
#dairycloud基础库中的常用实体对象分命名空间导入不会递归导入
from Kingdee.BOS.Core import *
from Kingdee.BOS.Util import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.List import *
from Kingdee.BOS.Core.Bill.PlugIn import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from Kingdee.BOS.App import *
from Kingdee.BOS.Orm import *
from Kingdee.BOS.Contracts import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.App.Core import *
# def AfterDoOperation(e):
# # 保存8提交9审核1反审核26
# # if e.Operation.Operation == "DoBarCodePrintEx":
# # return;