114 lines
5.7 KiB
C#
Raw Normal View History

2025-04-24 18:38:42 +08:00
using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing;
using Kingdee.BOS.Core.DynamicForm;
2025-04-22 19:26:31 +08:00
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
2025-04-24 18:38:42 +08:00
using Kingdee.BOS.Core.Metadata.EntityElement;
2025-04-22 19:26:31 +08:00
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
2025-04-24 18:38:42 +08:00
using Kingdee.K3.Core.Mobile.Utils;
2025-04-22 19:26:31 +08:00
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
{
2025-04-24 18:38:42 +08:00
[Description("表单插件:生产用料清单变更单,点击批量替换#按钮实现批量复制行替换功能"), HotUpdate]
2025-04-22 19:26:31 +08:00
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值
2025-04-28 18:03:53 +08:00
parameter.FormId = "VRYF_SCYLQDBGPLTH";
2025-04-22 19:26:31 +08:00
parameter.MultiSelect = false;
//获取生产组织的FID值发送到打开的动态表单
parameter.CustomComplexParams.Add("EntryPrimaryKeys", FPrdOrgId);
this.View.ShowForm(parameter, result =>
{
if (result.ReturnData != null)
{
//记录动态窗口的返回值
resultWlFID = result.ReturnData.ToString();
//获取单据体数据包
2025-04-24 18:38:42 +08:00
var entiy = this.View.BillBusinessInfo.GetEntryEntity("FEntity");
2025-04-22 19:26:31 +08:00
var entityObjs = this.View.Model.GetEntityDataObject(entiy);
2025-04-24 18:38:42 +08:00
List<int> FSEQ = new List<int>();
2025-04-22 19:26:31 +08:00
if (entityObjs != null)
{
2025-04-24 18:38:42 +08:00
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;
}
}
}
/*复制行执行操作完毕后,因序号变更,对单据体需要再次循环执行重新赋值操作*/
2025-04-22 19:26:31 +08:00
foreach (var entityObj in entityObjs)
{
/*
0*/
if (Convert.ToString(entityObj["ChangeType"]) == "3")
{
//变更类型为变更后分子赋值为0
2025-04-24 18:38:42 +08:00
this.View.Model.SetValue("FNumerator", 0, Convert.ToInt32(entityObj["Seq"]) - 1);
2025-04-22 19:26:31 +08:00
}
2025-04-24 18:38:42 +08:00
/*变更类型为新增将物料编码替换为动态窗口选择的物料FID*/
if (Convert.ToString(entityObj["ChangeType"]) == "1")
2025-04-22 19:26:31 +08:00
{
2025-04-24 18:38:42 +08:00
//对新增物料进行替换
this.View.Model.SetValue("FMaterialID2", resultWlFID, Convert.ToInt32(entityObj["Seq"]) - 1);
2025-04-22 19:26:31 +08:00
}
}
}
});
}
}
}
}
}