using Kingdee.BOS; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.K3.Core.MFG; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.NetCalc { /// /// MRP运算将产生的计划订单或组织间需求单数据提交保存前更新数据策略 /// [MrpProgressItem("P0033", "30")] public class UpdateData : AbstractNetCalcPolicy { /// /// 后置策略:单条执行模式 /// public override Enu_NetCalcPolicyCallStyle CallStyle { get { return Enu_NetCalcPolicyCallStyle.KdLastSingleExecutionMode; } } /// /// 策略执行前事件 /// /// protected override bool BeforeExecuteDataPolicy() { foreach (var demandGroupRow in this.MrpDemandDimContext.MrpNetDemandContextGroupRows) { if (demandGroupRow.PlanOrderItem != null) { ///TODO:本分支可对计划订单数据在提交保存前进行干预 #region 更新确认投放时间 string MaterialId_Id = Convert.ToString(demandGroupRow.PlanOrderItem["MaterialId_Id"]); FormMetadata FMaterial = MetaDataServiceHelper.Load(this.Context, "BD_MATERIAL", true) as FormMetadata; DynamicObject FMaterialId = BusinessDataServiceHelper.LoadSingle(this.Context, MaterialId_Id, FMaterial.BusinessInfo.GetDynamicObjectType(), null); DynamicObjectCollection MaterialPlan = FMaterialId["MaterialPlan"] as DynamicObjectCollection; string FixLeadTime = Convert.ToString(MaterialPlan[0]["FixLeadTime"]); string FPlanFinishDate = Convert.ToString(demandGroupRow.PlanOrderItem["PlanFinishDate"]); demandGroupRow.PlanOrderItem["F_UKUB_LeadDate"] = Convert.ToDateTime(FPlanFinishDate).AddDays(-1 * Convert.ToDouble(FixLeadTime)); #endregion #region 更新销售订单/行号 string FSaleOrderNo = Convert.ToString(demandGroupRow.PlanOrderItem["SaleOrderNo"]); //声明SQL语句,获取预测单信息 string sql = string.Format(@"/*dialect*/ select FSaleNoRow from T_PLN_FORECAST a INNER JOIN T_PLN_FORECASTENTRY B ON A.FID = B.FID where FBILLNO = @FBILLNO"); //定义SQL参数 SqlParam[] param = new SqlParam[1]; //添加需求单号参数 param[0] = new SqlParam("@FBILLNO", KDDbType.String, FSaleOrderNo); //执行SQL语句 DynamicObjectCollection dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sql.ToString(), null, null, CommandType.Text, param); if (dr.Count > 0) { demandGroupRow.PlanOrderItem["FSaleNoRow"] = dr[0]["FSaleNoRow"]; } #endregion //string FSaleOrderNo = Convert.ToString(demandGroupRow.PlanOrderItem["SaleOrderNo"]); ////声明SQL语句,获取预测单信息 //string sql = string.Format(@"/*dialect*/ select FBILLTYPEID from T_PLN_FORECAST a //INNER JOIN T_PLN_FORECASTENTRY B ON A.FID = B.FID where FBILLNO = @FBILLNO"); ////定义SQL参数 //SqlParam[] param = new SqlParam[1]; ////添加需求单号参数 //param[0] = new SqlParam("@FBILLNO", KDDbType.String, FSaleOrderNo); ////执行SQL语句 //DynamicObjectCollection dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sql.ToString(), null, null, CommandType.Text, param); //if (dr.Count > 0) //{ // if (Convert.ToString(dr[0]["FBILLTYPEID"]) == "637c89c0168c79") // { // demandGroupRow.PlanOrderItem["ReleaseType"] = 3; // demandGroupRow.PlanOrderItem["ReleaseBillType"] = "CGSQD05_SYS"; // } //} //demandGroupRow.PlanOrderItem["ReleaseType"] = 3; //DynamicObjectCollection PLSubHead = demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection; //FormMetadata BOS_BillType = MetaDataServiceHelper.Load(this.Context, "BOS_BillType", true) as FormMetadata; //DynamicObject BillType = BusinessDataServiceHelper.LoadSingle(this.Context, "03c6c047c65c4a17a792f85dcf3cabec", BOS_BillType.BusinessInfo.GetDynamicObjectType(), null); //(demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType_Id"] = "03c6c047c65c4a17a792f85dcf3cabec"; //(demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType"] = BillType; } if (demandGroupRow.RequirementOrderItem != null) { ///TODO:本分支可对组织间需求单数据在提交保存前进行干预 } } return base.BeforeExecuteDataPolicy(); } //protected override void AfterExecuteDataPolicy() //{ // base.AfterExecuteDataPolicy(); // foreach (var demandGroupRow in this.MrpDemandDimContext.MrpNetDemandContextGroupRows) // { // if (demandGroupRow.PlanOrderItem != null) // { // demandGroupRow.PlanOrderItem["ReleaseType"] = 3; // DynamicObjectCollection PLSubHead = demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection; // FormMetadata BOS_BillType = MetaDataServiceHelper.Load(this.Context, "BOS_BillType", true) as FormMetadata; // DynamicObject BillType = BusinessDataServiceHelper.LoadSingle(this.Context, "03c6c047c65c4a17a792f85dcf3cabec", BOS_BillType.BusinessInfo.GetDynamicObjectType(), null); // (demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType_Id"] = "03c6c047c65c4a17a792f85dcf3cabec"; // (demandGroupRow.PlanOrderItem["PLSubHead"] as DynamicObjectCollection)[0]["ReleaseBillType"] = BillType; // } // if (demandGroupRow.RequirementOrderItem != null) // { // ///TODO:本分支可对组织间需求单数据在提交保存前进行干预 // } // } //} } }