| | |
| | | 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 |
| | |
| | | e.FieldKeys.Add("FBaseJoinQty"); |
| | | e.FieldKeys.Add("FDayPlanBillNo"); |
| | | e.FieldKeys.Add("FDayPlanFentryId"); |
| | | e.FieldKeys.Add("FBaseQty"); |
| | | } |
| | | ///// <summary> |
| | | /////反审核 反更新日计划用料清单调拨数量 |
| | | ///// </summary> |
| | | ///// <param name="e"></param> |
| | | //public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) |
| | | //{ |
| | | // base.AfterExecuteOperationTransaction(e); |
| | | // Stopwatch sw = new Stopwatch(); |
| | | // sw.Start();//开始计时 |
| | | // List<string> sqlList = new List<string>(); |
| | | // 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); |
| | | //} |
| | | /// <summary> |
| | | ///反审核 反更新日计划用料清单调拨数量 |
| | | ///反审核 反更新日计划用料清单调拨数量 |
| | | /// </summary> |
| | | /// <param name="e"></param> |
| | | public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) |
| | |
| | | base.AfterExecuteOperationTransaction(e); |
| | | List<string> sqlList = new List<string>(); |
| | | 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 = (select sum(FBaseQty) from T_STK_STKTRANSFERINENTRY where FDayPlanFentryId = { fentryId})where FEntryID = { fentryId} "); |
| | | //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); |
| | | } |
| | | } |
| | | } |