using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Tool; using Core.StlMes.Client.PlnSaleOrd.BaseMethod; using Core.StlMes.Client.PlnSaleOrd.炼钢计划.entity; using CoreFS.CA06; using Infragistics.Win.UltraWinGrid; using Infragistics.Win.UltraWinToolbars; namespace Core.StlMes.Client.PlnSaleOrd.炼钢计划 { public partial class FrmSteelChangeOrderPlan : FrmBase { private string _weightPerMeterFormula; private bool flag1; private bool flag2; public FrmSteelChangeOrderPlan() { InitializeComponent(); } public string FurnaceNo { get; set; } public List ListSource { get { return plnSteelforOrdNewEntityBindingSource.DataSource as List; } set { flag1 = true; plnSteelforOrdNewEntityBindingSource.DataSource = value; } } public List listSource2 { get { return plnOrderCastSEntityBindingSource.DataSource as List; } set { flag2 = true; plnOrderCastSEntityBindingSource.DataSource = value; } } public List listSource3 { get { return plnOrderCastSEntityBindingSource.DataSource as List; } set { plnSteelforfurnaceNewEntityBindingSource.DataSource = value; } } public string WeightPerMeterFormula { get { if (string.IsNullOrEmpty(_weightPerMeterFormula)) _weightPerMeterFormula = SteelHelper.GetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.GetWeightPerMeterFormula", null, ob).ToString(); return _weightPerMeterFormula; } } public double? GetPerMeter(string Diameter) { double weightPerMeter = 0; var dt = new DataTable(); if ( double.TryParse( dt.Compute(WeightPerMeterFormula.Replace("断面", Diameter.Replace("250", "251")), null).ToString(), out weightPerMeter)) return weightPerMeter; return null; } private void utmMain_ToolClick(object sender, ToolClickEventArgs e) { switch (e.Tool.Key) { case "Forming": // ButtonTool object[] para; var NewJudgeStove = true; List furnaceno = new List() { FurnaceNo }; if (tabMain.SelectedTab.Index == 0) { if (ugStove.ActiveRow == null) { MessageUtil.ShowWarning("请选择炉计划!"); return; } var row = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; using (var FrmSteelChangeOrderDetail = new FrmSteelChangeOrderDetail { Furnaceno1 = FurnaceNo, Furnaceno2 = row.Furnaceno, ob = ob }) { FrmSteelChangeOrderDetail.ShowDialog(); if (FrmSteelChangeOrderDetail.DialogResult != DialogResult.OK) return; DialogResult = DialogResult.OK; FrmSteelChangeOrderDetail.Close(); return; } } if (tabMain.SelectedTab.Index == 3) { if (ugOrder.ActiveRow == null) { MessageUtil.ShowWarning("请需要转入当前炉计划的订单计划!"); return; } ugOrder.UpdateData(); int num, cannum; var row = ugOrder.ActiveRow; if (!int.TryParse(row.Cells["TotMumM"].Value.ToString(), out cannum)) { MessageUtil.ShowWarning("选择的订单计划的计划支数不明,无法转入!"); return; } if (!int.TryParse(row.Cells["ChangeNum"].Value.ToString(), out num)) { MessageUtil.ShowWarning("请输入正确的转分切支数!"); return; } if (num > cannum) { MessageUtil.ShowWarning("输入正确的转分切支数大于当前订单计划的订单数量!"); return; } List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforOrdEntityByfurnaceno", new object[] {FurnaceNo}, ob); if ( listSource.Any( p => (p.GxPlanNo == row.Cells["GxPlanNo"].Value.ToString()) && (p.ProPlanId == row.Cells["ProPlanId"].Value.ToString())) && (MessageUtil.ShowYesNoAndTips("该订单计划与需转入的订单计划有相同订单编号,是否新生成判断炉号") == DialogResult.No)) NewJudgeStove = false; para = new object[] { "0", row.Cells["Furnaceno"].Value.ToString(), row.Cells["Sequenceno"].Value.ToString(), num, FurnaceNo, UserInfo.GetUserName(), NewJudgeStove }; furnaceno.Add(row.Cells["Furnaceno"].Value.ToString()); } else { if (ultraGridCast.ActiveRow == null) { MessageUtil.ShowWarning("请需要转入当前炉计划的订单!"); return; } ultraGridCast.UpdateData(); int num, cannum; double Weight; var row = ultraGridCast.ActiveRow; if (!int.TryParse(row.Cells["CanNum"].Value.ToString(), out cannum)) { MessageUtil.ShowWarning("选择的订单的计划可组浇支数不明,无法转入!"); return; } if (!int.TryParse(row.Cells["ChangeNum"].Value.ToString(), out num)) { MessageUtil.ShowWarning("请输入正确的转分切支数!"); return; } /* if (!double.TryParse(row.Cells["ChangeWeight"].Value.ToString(), out Weight)) { MessageUtil.ShowWarning("转分切重量有误!"); return; }*/ if (num > cannum) { MessageUtil.ShowWarning("输入正确的转分切支数大于当前订单的可组浇支数!"); return; } List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforOrdEntityByfurnaceno", new object[] {FurnaceNo}, ob); if ( listSource.Any( p => (p.GxPlanNo == row.Cells["GxPlanNo"].Value.ToString()) && (p.ProPlanId == row.Cells["ProPlanId"].Value.ToString())) && (MessageUtil.ShowYesNoAndTips("该铸造订单与需转入的订单计划有相同订单编号,是否新生成判断炉号") == DialogResult.No)) NewJudgeStove = false; para = new object[] { "1", row.Cells["ProPlanId"].Value.ToString(), row.Cells["GxPlanNo"].Value.ToString(), num, FurnaceNo, UserInfo.GetUserName(), NewJudgeStove }; } var param = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.ChangeOrderPlan", para, ob); if (param != null) { DialogResult = DialogResult.OK; } break; case "Close": // ButtonTool DialogResult = DialogResult.Cancel; // Place code here break; } } private void FrmSteelChangeOrderPlan_Load(object sender, EventArgs e) { EntityHelper.ShowGridCaption(ugOrder.DisplayLayout.Bands[0]); BaseHelper.setOtherColumnReadOnly(ugOrder, new[] {"ChangeNum", "ChangeWeight"}); //绑定Valuelist 根据实体类值显示 var list = SteelManagementHelper.GetValuelistLogic(); SteelManagementHelper.SetGridValuelist(ref ugOrder, "IfSurplusAlloted", ref list); list = SteelManagementHelper.GetStatus(); SteelManagementHelper.SetGridValuelist(ref ugOrder, "Status", ref list); list = SteelManagementHelper.GetValuelistLogic(); SteelManagementHelper.SetGridValuelist(ref ugOrder, "Surplusflag", ref list); list = SteelManagementHelper.GetSurplusType(); SteelManagementHelper.SetGridValuelist(ref ugOrder, "SurplusType", ref list); list = SteelManagementHelper.GetCastingtype(); SteelManagementHelper.SetGridValuelist(ref ugOrder, "Castingtype", ref list); list = SteelManagementHelper.GetSurplusflag(); SteelManagementHelper.SetGridValuelist(ref ugOrder, "GetSurplusflag", ref list); GridHelper.RefreshAndAutoSize(ugOrder); EntityHelper.ShowGridCaption(ultraGridCast.DisplayLayout.Bands[0]); BaseHelper.setOtherColumnReadOnly(ultraGridCast, new[] {"ChangeNum", "ChangeWeight"}); BaseHelper.InitCellPosition(ultraGridCast, new[] { "GxPlanNo", "OrderSeq", "DeliveryNo", "PlanWtS", "PlanNumS", "PlanUsetime", "GxProSeq", "PlnDivideId", "DiameterLz", "LenGpSingle", "CutNumGp", "CutLoseLen", "LengthLz", "WtCastOne", "CastNumCalc", "FurnaceNumCalc", "FurnaceWt", "PlanedWt", "PlanedNum", "Finishweight", "FinishNum", "CastNum", "FurnaceNum", "AddWtBegin", "AddWtEnd", "AddWtAhead", "AddWtNext", "CanWgt", "CanNum", "GradeSort", "ProcessingCostA", "TotalCostA", "ProcessingCostB", "TotalCostB" }); BaseHelper.GridColumnSum(ultraGridCast, new[] {"PlanWtS", "CanWgt"}); BaseHelper.GridColumnCount(ultraGridCast, new[] {"PlanNumS", "CanNum"}); BaseHelper.setUltraGridColumnMaxInput(ultraGridCast, new[] {"PlanWtS", "CanWgt"}); BaseHelper.ForbidSort(ultraGridCast); GridHelper.RefreshAndAutoSize(ultraGridCast); EntityHelper.ShowGridCaption(ugStove.DisplayLayout.Bands[0]); BaseHelper.setOtherColumnReadOnly(ugStove, new[] {"Check"}); //绑定Valuelist 根据实体类值显示 list = SteelManagementHelper.GetValuelistLogic(); SteelManagementHelper.SetGridValuelist(ref ugStove, "IfMonitorLg", ref list); list = SteelManagementHelper.GetStatus(); SteelManagementHelper.SetGridValuelist(ref ugStove, "Status", ref list); list = SteelManagementHelper.GetValuelistLogic(); SteelManagementHelper.SetGridValuelist(ref ugStove, "IfConfirm", ref list); list = SteelManagementHelper.GetBofType(); SteelManagementHelper.SetGridValuelist(ref ugStove, "BofType", ref list); list = SteelManagementHelper.GetHeatStatus(); SteelManagementHelper.SetGridValuelist(ref ugStove, "HeatState", ref list); //合并Grid列 BaseHelper.MergedCell(ugStove, new[] {"CastNo", "CastSeq", "Furnaceno"}); GridHelper.RefreshAndAutoSize(ugStove); } private void ugOrder_InitializeRow(object sender, InitializeRowEventArgs e) { if (flag1) { e.Row.Cells["ChangeNum"].Value = 0; e.Row.Cells["ChangeWeight"].Value =0; /* try { e.Row.Cells["ChangeWeight"].Value = int.Parse(e.Row.Cells["ChangeNum"].Value.ToString()) * double.Parse(e.Row.Cells["WeightM"].Value.ToString()); } catch (Exception) { }*/ } } private void ultraGridCast_InitializeRow(object sender, InitializeRowEventArgs e) { if (flag2) { e.Row.Cells["ChangeNum"].Value = 0; e.Row.Cells["ChangeWeight"].Value = 0; /* try { var d = (double.Parse(e.Row.Cells["LenGpSingle"].Value.ToString()) * int.Parse(e.Row.Cells["CutNumGp"].Value.ToString()) + (int.Parse(e.Row.Cells["CutNumGp"].Value.ToString()) - 1) * 10) / 1000 * GetPerMeter(e.Row.Cells["DiameterLz"].Value.ToString()); if (d != null) e.Row.Cells["ChangeWeight"].Value = (decimal)Math.Round((double)d, 3); } catch (Exception) { } */ } } private void ugOrder_CellChange(object sender, CellEventArgs e) { flag1 = false; try { ugOrder.UpdateData(); if (e.Cell.Column.Key.Equals("ChangeNum")) if (e.Cell.Value == e.Cell.Row.Cells["TotMumM"]) e.Cell.Row.Cells["ChangeWeight"].Value = e.Cell.Row.Cells["TotWeightM"].Value; else e.Cell.Row.Cells["ChangeWeight"].Value = double.Parse(e.Cell.Value.ToString())* double.Parse( e.Cell.Row.Cells["WeightM"].Value.ToString()); if (e.Cell.Column.Key.Equals("ChangeWeight")) if (e.Cell.Value == e.Cell.Row.Cells["TotWeightM"]) e.Cell.Row.Cells["ChangeNum"].Value = e.Cell.Row.Cells["TotMumM"].Value; else e.Cell.Row.Cells["ChangeNum"].Value = Math.Ceiling(double.Parse(e.Cell.Value.ToString())/ double.Parse( e.Cell.Row.Cells["WeightM"].Value .ToString())); } catch (Exception) { } /* ugOrder.UpdateData(); if (string.IsNullOrEmpty(Convert.ToString(e.Cell.Text))) { ugOrder.PerformAction(UltraGridAction.ExitEditMode); ugOrder.PerformAction(UltraGridAction.EnterEditMode); } if (ugOrder.ActiveRow != null) { try { ugOrder.ActiveRow.Cells["ChangeWeight"].Value = int.Parse(ugOrder.ActiveRow.Cells["ChangeNum"].Value.ToString()) * double.Parse(ugOrder.ActiveRow.Cells["WeightM"].Value.ToString()); } catch (Exception) { } } ugOrder.Refresh();*/ } private void ultraGridCast_CellChange(object sender, CellEventArgs e) { flag2 = false; try { ultraGridCast.UpdateData(); if (e.Cell.Column.Key.Equals("ChangeNum")) if (e.Cell.Value == e.Cell.Row.Cells["CanNum"]) e.Cell.Row.Cells["ChangeWeight"].Value = e.Cell.Row.Cells["CanWgt"].Value; else e.Cell.Row.Cells["ChangeWeight"].Value = double.Parse(e.Cell.Value.ToString())* double.Parse( e.Cell.Row.Cells["WtCastOne"].Value.ToString()); if (e.Cell.Column.Key.Equals("ChangeWeight")) if (e.Cell.Value == e.Cell.Row.Cells["CanWgt"]) e.Cell.Row.Cells["ChangeNum"].Value = e.Cell.Row.Cells["CanNum"].Value; else e.Cell.Row.Cells["ChangeNum"].Value = Math.Ceiling(double.Parse(e.Cell.Value.ToString())/ double.Parse( e.Cell.Row.Cells["WtCastOne"].Value .ToString())); } catch (Exception) { } /* ultraGridCast.UpdateData(); if (string.IsNullOrEmpty(Convert.ToString(e.Cell.Text))) { ultraGridCast.PerformAction(UltraGridAction.ExitEditMode); ultraGridCast.PerformAction(UltraGridAction.EnterEditMode); } if (ultraGridCast.ActiveRow != null) { try { var d = (double.Parse(ultraGridCast.ActiveRow.Cells["LenGpSingle"].Value.ToString()) * int.Parse(ultraGridCast.ActiveRow.Cells["CutNumGp"].Value.ToString()) + (int.Parse(ultraGridCast.ActiveRow.Cells["CutNumGp"].Value.ToString()) - 1) * 10) / 1000 * GetPerMeter(ultraGridCast.ActiveRow.Cells["DiameterLz"].Value.ToString()); if (d != null) ultraGridCast.ActiveRow.Cells["ChangeWeight"].Value = (decimal)Math.Round((double)d, 3); } catch (Exception) { } } ultraGridCast.Refresh();*/ } } }