李狗蛋 dff2f5f9fe 1
2025-04-28 18:03:53 +08:00

114 lines
5.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 DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.K3.Core.Mobile.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Dynamic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.PRD_PPBOMCHANGE
{
[Description("表单插件:生产用料清单变更单,点击批量替换#按钮实现批量复制行替换功能"), HotUpdate]
public class PLTH : AbstractDynamicFormPlugIn
{
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
//按钮点击事件
if (e.BarItemKey.Equals("GZTH_PLTH", StringComparison.OrdinalIgnoreCase))
{
string resultWlFID = "";
//获取单据的生产组织的FID值
var FPrdOrg = (Kingdee.BOS.Orm.DataEntity.DynamicObject)this.View.Model.GetValue("FPrdOrgId");
if (FPrdOrg != null)
{
//获取生产组织ID值
var FPrdOrgId = Convert.ToString(FPrdOrg["Id"]);
//打开动态表单,并对动态表单传值
DynamicFormShowParameter parameter = new DynamicFormShowParameter();
//动态表单ID值
parameter.FormId = "VRYF_SCYLQDBGPLTH";
parameter.MultiSelect = false;
//获取生产组织的FID值发送到打开的动态表单
parameter.CustomComplexParams.Add("EntryPrimaryKeys", FPrdOrgId);
this.View.ShowForm(parameter, result =>
{
if (result.ReturnData != null)
{
//记录动态窗口的返回值
resultWlFID = result.ReturnData.ToString();
//获取单据体数据包
var entiy = this.View.BillBusinessInfo.GetEntryEntity("FEntity");
var entityObjs = this.View.Model.GetEntityDataObject(entiy);
List<int> FSEQ = new List<int>();
if (entityObjs != null)
{
foreach (var entityObj in entityObjs)
{
//当变更类型为变更前
if (Convert.ToString(entityObj["ChangeType"]) == "2")
{
//记录序号。通过list记录
var i = Convert.ToInt32(entityObj["Seq"]);
FSEQ.Add(i - 1);
}
}
}
//循环遍历,并且选中行,执行复制行操作
for (int i = 0; i < FSEQ.Count; i++)
{
if (i == 0)
{
this.View.Model.CopyEntryRow("FEntity", FSEQ[i], FSEQ[i] + 2, true);
if (i + 1 != FSEQ.Count)
{
FSEQ[i + 1] = FSEQ[i] + 2;
}
}
else
{
this.View.Model.CopyEntryRow("FEntity", FSEQ[i] + 1, FSEQ[i] + 3, true);
if (i + 1 == FSEQ.Count)
{
FSEQ[i] = FSEQ[i] + 3;
}
else
{
FSEQ[i + 1] = FSEQ[i] + 3;
}
}
}
/*复制行执行操作完毕后,因序号变更,对单据体需要再次循环执行重新赋值操作*/
foreach (var entityObj in entityObjs)
{
/*遍历单据体,变更类型为变更前复制这一列并更改物料编码;
变更类型为变更后将分子赋值为0*/
if (Convert.ToString(entityObj["ChangeType"]) == "3")
{
//变更类型为变更后分子赋值为0
this.View.Model.SetValue("FNumerator", 0, Convert.ToInt32(entityObj["Seq"]) - 1);
}
/*变更类型为新增将物料编码替换为动态窗口选择的物料FID*/
if (Convert.ToString(entityObj["ChangeType"]) == "1")
{
//对新增物料进行替换
this.View.Model.SetValue("FMaterialID2", resultWlFID, Convert.ToInt32(entityObj["Seq"]) - 1);
}
}
}
});
}
}
}
}
}