using System;
using System.Collections.Generic;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.App;
using Kingdee.BOS.Core.Metadata.FieldElement;
using System.ComponentModel;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.SCM.App;
using System.Diagnostics;
using ZD.Cloud.Logger;
using System.Data;
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
namespace Demo.DynamicForm.PRD
{
[Description("[直接调拨单-审核]按钮功能]")]
[HotUpdate]
public class Pro_ZJDBSH : AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e)
{
base.OnPreparePropertys(e);
e.FieldKeys.Add("FSrcBillType");
e.FieldKeys.Add("FSrcBillNo");
e.FieldKeys.Add("FID");
e.FieldKeys.Add("FTreeEntity_FEntryID");
e.FieldKeys.Add("FBillNo");
e.FieldKeys.Add("FBFLowId");
e.FieldKeys.Add("FMaterialId");
e.FieldKeys.Add("FBaseUnitQty");
e.FieldKeys.Add("FBaseJoinQty");
e.FieldKeys.Add("FDayPlanBillNo");
e.FieldKeys.Add("FDayPlanFentryId");
e.FieldKeys.Add("FBaseQty");
}
/////
/////反审核 反更新日计划用料清单调拨数量
/////
/////
//public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
//{
// base.AfterExecuteOperationTransaction(e);
// Stopwatch sw = new Stopwatch();
// sw.Start();//开始计时
// List sqlList = new List();
// string sql = "";
// //审核时更新生产用料清单表明细调拨数量
// Entity entity = this.BusinessInfo.GetEntity("FBillEntry");//获取明细信息
// foreach (var billObj in e.SelectedRows)
// {
// DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
// as DynamicObjectCollection;
// foreach (var entryRow in entryRows)
// {
// //生产用料清单为空时
// if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "")
// continue;
// string fentryId = entryRow["FDayPlanFentryId"].ToString();
// sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set FTranslateQty + = {Convert.ToDecimal(entryRow["FBaseQty"])} where FEntryID = { fentryId} ");
// sqlList.Add(sql);
// }
// }
// DBServiceHelper.ExecuteBatch(Context, sqlList);
// sw.Stop();//结束计时
// LogHelper.Info("生成日计划用料清单运行总时长:" + sw.Elapsed);
//}
///
///反审核 反更新日计划用料清单调拨数量
///
///
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
base.AfterExecuteOperationTransaction(e);
List sqlList = new List();
string sql = "";
Entity entity = this.BusinessInfo.GetEntity("FBillEntry");//获取明细信息
//审核时更新日计划用料清单表明细调拨数量
foreach (var billObj in e.SelectedRows)
{
DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
as DynamicObjectCollection;
foreach (var entryRow in entryRows)
{
string fentryId = entryRow["FDayPlanFentryId"].ToString();
//if (fentryId == "0")
// continue;
sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set FTranslateQty = FTranslateQty+{Convert.ToDecimal(entryRow["BaseQty"])} where FEntryID = { fentryId} ");
sqlList.Add(sql);
}
}
DBServiceHelper.ExecuteBatch(Context, sqlList);
}
private void BatchUpdate()
{
// 定义一个DataTable:存储待更新的数据
DataTable dt = new DataTable();
dt.TableName = "JD_t_Cust_Entry100001";
var idCol = dt.Columns.Add("FID");
idCol.DataType = typeof(long);
var billNoCol = dt.Columns.Add("FBillNo");
billNoCol.DataType = typeof(string);
// 灌入测试数据
dt.BeginLoadData(); // 执行此方法,可以提升灌入数据性能
for (int i = 1; i <= 10; i++)
{
dt.LoadDataRow(new object[] { i, i.ToString() }, true);
}
dt.EndLoadData(); // 灌入数据结束
// 准备批量更新服务参数
// tableName : 待更新的物理表格名
// dt : 待更新的数据
BatchSqlParam batchUpdateParam = new BatchSqlParam("JD_t_Cust_Entry100001", dt);
// 设置匹配字段:即DataTable中的数据,与物理表格以那个字段进行匹配
// 匹配字段可以添加多个
// columnName: DataTable中的列名
// fieldName : 物料表格中匹配的字段名
batchUpdateParam.AddWhereExpression("FID", KDDbType.Int64, "FID");
// 设置待更新的字段
// columnName: DataTable中的列名
// fieldName : 对应的物料表格字段名
batchUpdateParam.AddSetExpression("FBillNo", KDDbType.String, "FBillNo");
// 执行批量更新
DBUtils.BatchUpdate(this.Context, batchUpdateParam);
}
}
}