using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Windows.Forms; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Format; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using Core.StlMes.Client.PlnSaleOrd.BaseMethod; using Core.StlMes.Client.PlnSaleOrd.Resources; using Core.StlMes.Client.PlnSaleOrd.炼钢计划.entity; using CoreFS.CA06; using Infragistics.Win.UltraWinEditors; using Infragistics.Win.UltraWinGrid; namespace Core.StlMes.Client.PlnSaleOrd.炼钢计划.control { public partial class ucSteelManagement : UserControl { private object[] _currentpara; private string _weightPerMeterFormula = string.Empty; private readonly Dictionary ONHFlag = new Dictionary(); private bool RefreshFlag; private UltraGridRow ugrCast; private UltraGridRow ugrOrder; private UltraGridRow ugrStove; private string ulCastCastText = ""; private List ulCastCastTextData; private string ulFurnaceStoveText = ""; private List ulFurnaceStoveTextData; private string ulFurnaceText = ""; private List ulFurnaceTextData; public ucSteelManagement() { InitializeComponent(); } public OpeBase Ob { get; set; } [DllImport("user32")] private static extern IntPtr LoadCursorFromFile(string fileName); public void IniPline() { SteelHelper.InitPline2(ucePline, "D", Ob); } /// /// 界面3个 UltraExpandableGroupBox 之间展开或者收缩 调整尺寸 /// /// /// private void upb_ExpandedStateChanged(object sender, EventArgs e) { var expandedNum = (ugbCast.Expanded ? 1 : 0) + (ugbStove.Expanded ? 1 : 0) + (ugbOrder.Expanded ? 1 : 0); sc1.SplitterDistance = ugbCast.Expanded ? (upMain.Size.Height - 10 - (3 - expandedNum)*20)/expandedNum : 20; sc2.SplitterDistance = ugbStove.Expanded ? (upMain.Size.Height - 10 - (3 - expandedNum)*20)/expandedNum : 20; //ugbCast.Size = new Size(ugbCast.Size.Width, // ugbCast.Expanded ? ((upMain.Size.Height -10- (3-expandedNum) *21)/expandedNum) : 21); //ugbStove.Size = new Size(ugbStove.Size.Width, // ugbStove.Expanded ? ((upMain.Size.Height -10- (3 - expandedNum) * 21) / expandedNum) : 21); ulCastCast.Visible = ugbCast.Expanded; ulFurnace.Visible = ugbStove.Expanded; ulFurnaceStove.Visible = ugbStove.Expanded; //AcOrder.Visible = ugbOrder.Expanded; if ((sender == ugbStove) && ugbCast.Expanded) ugCast_AfterRowActivate(sender, e); if ((sender == ugbOrder) && ugbOrder.Expanded) if (ugbStove.Expanded) ugStove_AfterRowActivate(sender, e); else if (ugbCast.Expanded) ugCast_AfterRowActivate(sender, e); } /// /// 界面加载事件 /// /// /// private void ucSteelManagement_Load(object sender, EventArgs e) { //默认展开炉次信息表 ugbOrder.Expanded = false; ugbCast.Expanded = false; ugbStove.Expanded = true; //显示实体类属性中文描述 EntityHelper.ShowGridCaption(ugCast.DisplayLayout.Bands[0]); BaseHelper.setOtherColumnReadOnly(ugCast, new[] {"Check"}); EntityHelper.ShowGridCaption(ugStove.DisplayLayout.Bands[0]); BaseHelper.setOtherColumnReadOnly(ugStove, new[] {"Check"}); EntityHelper.ShowGridCaption(ugOrder.DisplayLayout.Bands[0]); BaseHelper.setOtherColumnReadOnly(ugOrder, new[] {"Check"}); //绑定Valuelist 根据实体类值显示 var list = SteelManagementHelper.GetValuelistLogic(); SteelManagementHelper.SetGridValuelist(ref ugCast, "IfConnectGrade", ref list); list = SteelManagementHelper.GetValuelistLogic(); SteelManagementHelper.SetGridValuelist(ref ugStove, "IfMonitorLg", ref list); list = SteelManagementHelper.GetValuelistLogic(); SteelManagementHelper.SetGridValuelist(ref ugOrder, "IfSurplusAlloted", ref list); list = SteelManagementHelper.GetStatus(); SteelManagementHelper.SetGridValuelist(ref ugCast, "Status", ref list); list = SteelManagementHelper.GetStatus(); SteelManagementHelper.SetGridValuelist(ref ugStove, "Status", ref list); list = SteelManagementHelper.GetStatus(); SteelManagementHelper.SetGridValuelist(ref ugOrder, "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); 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); //合并Grid列 BaseHelper.MergedCell(ugStove, new[] {"CastNo", "CastSeq", "Furnaceno"}); BaseHelper.MergedCell(ugOrder, new[] {"CastNo", "CastSeq", "Furnaceno", "FurnacenoSeq"}); //初始化放缩 plnSteelforcastNewEntityBindingSource.DataSource = new List(); plnSteelforfurnaceNewEntityBindingSource.DataSource = new List(); plnSteelforOrdNewEntityBindingSource.DataSource = new List(); GridHelper.RefreshAndAutoSize(ugCast); GridHelper.RefreshAndAutoSize(ugStove); GridHelper.RefreshAndAutoSize(ugOrder); //设置3个Grid不同时选中 ugCast.BeforeSelectChange += (o, args) => { ugStove.Selected.Rows.Clear(); ugOrder.Selected.Rows.Clear(); }; ugStove.BeforeSelectChange += (o, args) => { ugCast.Selected.Rows.Clear(); ugOrder.Selected.Rows.Clear(); }; ugOrder.BeforeSelectChange += (o, args) => { ugCast.Selected.Rows.Clear(); ugStove.Selected.Rows.Clear(); }; } public void Set(bool OnlyView) { if (!OnlyView) { //设置可拖拽 BaseHelper.SetGridDragDropRows(ugCast, AdjustCastSeq, GetMyCursor()); BaseHelper.SetGridDragDropRows(ugStove, AdjustStoveSeq, GetMyCursor()); BaseHelper.SetGridDragDropRows(ugOrder, AdjustCcmSeq, GetMyCursor()); } else { ugCast.ContextMenuStrip = null; ugStove.ContextMenuStrip = null; ugOrder.ContextMenuStrip = null; } } private Cursor GetMyCursor() { var bytes = MyResource.Arrows; var fileStream = new FileStream("tempTest.dat", FileMode.Create); fileStream.Write(bytes, 0, bytes.Length); fileStream.Close(); return new Cursor(LoadCursorFromFile("tempTest.dat")); } #region 导出Excel public void Export() { var ulGridList = new ArrayList(); var sheetNameList = new ArrayList(); if (ugbCast.Expanded) { ulGridList.Add(ugCast); sheetNameList.Add("浇次信息"); } if (ugbStove.Expanded) { ulGridList.Add(ugStove); sheetNameList.Add("炉次信息"); } if (ugbOrder.Expanded) { ulGridList.Add(ugOrder); sheetNameList.Add("铸造信息"); } if (ulGridList.Count <= 0) { MessageUtil.ShowWarning("请展开需要导出的信息!"); return; } GridHelper.ulGridToExcel(ulGridList, sheetNameList, "炼钢调度"); } #endregion private void ugOrder_BeforeCellUpdate(object sender, BeforeCellUpdateEventArgs e) { if (e.NewValue == null) return; if (e.Cell.Column.Key == "ONHFlag") return; if (e.Cell.Column.Key == "GowhereCode") return; if (e.Cell.Column.Key == "WeightGpOne") { double DataValue; if (!double.TryParse(e.NewValue.ToString(), out DataValue)) { MessageUtil.ShowTips("请输入正确的数字"); e.Cell.CancelUpdate(); e.Cancel = true; } } else { int DataValue; if (!int.TryParse(e.NewValue.ToString(), out DataValue)) { MessageUtil.ShowTips("请输入正确的数字"); e.Cell.CancelUpdate(); e.Cancel = true; } } } private void ugOrder_CellChange(object sender, CellEventArgs e) { ugOrder.UpdateData(); if (string.IsNullOrEmpty(Convert.ToString(e.Cell.Text))) { ugOrder.PerformAction(UltraGridAction.ExitEditMode); ugOrder.PerformAction(UltraGridAction.EnterEditMode); } var PlnSteelforOrdNewEntity = e.Cell.Row.ListObject as PlnSteelforOrdNewEntity; if (PlnSteelforOrdNewEntity == null) return; if ((PlnSteelforOrdNewEntity.LenGpSingle != null) && (PlnSteelforOrdNewEntity.CutNumGp != null)) PlnSteelforOrdNewEntity.LengthM = PlnSteelforOrdNewEntity.LenGpSingle* PlnSteelforOrdNewEntity.CutNumGp; /* if (PlnSteelforOrdNewEntity.LenGpSingle != null && PlnSteelforOrdNewEntity.CutNumGp != null) { PlnSteelforOrdNewEntity.LengthM = PlnSteelforOrdNewEntity.LenGpSingle * PlnSteelforOrdNewEntity.CutNumGp +(PlnSteelforOrdNewEntity.Castingtype=="2"? 200:0); }*/ if (PlnSteelforOrdNewEntity.Castingtype != "2") { if (string.IsNullOrEmpty(_weightPerMeterFormula)) _weightPerMeterFormula = SteelHelper.GetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.GetWeightPerMeterFormula", null, Ob).ToString(); double weightPerMeter = 0; var weightPerMeterV = false; if (PlnSteelforOrdNewEntity.Diameter != null) { var dt = new DataTable(); weightPerMeterV = double.TryParse( dt.Compute( _weightPerMeterFormula.Replace("断面", PlnSteelforOrdNewEntity.Diameter.Replace("250", "251")), null).ToString(), out weightPerMeter); } if ((PlnSteelforOrdNewEntity.LenGpSingle != null) && (_weightPerMeterFormula != "") && weightPerMeterV) PlnSteelforOrdNewEntity.WeightGpOne = Math.Round((double) (PlnSteelforOrdNewEntity.LenGpSingle/1000d*weightPerMeter), 3); if ((PlnSteelforOrdNewEntity.LengthM != null) && (_weightPerMeterFormula != "") && weightPerMeterV) PlnSteelforOrdNewEntity.WeightM = Math.Round((double) (PlnSteelforOrdNewEntity.LengthM/1000d*weightPerMeter), 3); } else { PlnSteelforOrdNewEntity.WeightM = PlnSteelforOrdNewEntity.WeightGpOne* PlnSteelforOrdNewEntity.CutNumGp; } if ((PlnSteelforOrdNewEntity.WeightM != null) && (PlnSteelforOrdNewEntity.TotMumM != null)) PlnSteelforOrdNewEntity.TotWeightM = PlnSteelforOrdNewEntity.WeightM* PlnSteelforOrdNewEntity.TotMumM; PlnSteelforOrdNewEntity.Update = true; e.Cell.Appearance.BackColor = Color.Orange; ugOrder.Refresh(); } private void ugOrder_InitializeRow(object sender, InitializeRowEventArgs e) { var PlnSteelforOrdNewEntity = e.Row.ListObject as PlnSteelforOrdNewEntity; if (PlnSteelforOrdNewEntity == null) return; if ((PlnSteelforOrdNewEntity.SurplusType == "2") || (PlnSteelforOrdNewEntity.SurplusType == "3")) e.Row.Cells["GowhereCode"].Value = " "; if ((PlnSteelforOrdNewEntity.Surplusflag == "1") && (PlnSteelforOrdNewEntity.SurplusType != "2") && (PlnSteelforOrdNewEntity.SurplusType != "3") && (PlnSteelforOrdNewEntity.Status == "10") && !PlnSteelforOrdNewEntity.Update) { e.Row.Cells["CutNumGp"].Activation = Activation.AllowEdit; e.Row.Cells["CutNumGp"].IgnoreRowColActivation = true; e.Row.Cells["CutNumGp"].Appearance.BackColor = Color.LightGreen; e.Row.Cells["CutNumGp"].EditorComponent = utSave; e.Row.Cells["LenGpSingle"].Activation = Activation.AllowEdit; e.Row.Cells["LenGpSingle"].IgnoreRowColActivation = true; e.Row.Cells["LenGpSingle"].Appearance.BackColor = Color.LightGreen; e.Row.Cells["LenGpSingle"].EditorComponent = utSave; e.Row.Cells["TotMumM"].Activation = Activation.AllowEdit; e.Row.Cells["TotMumM"].IgnoreRowColActivation = true; e.Row.Cells["TotMumM"].Appearance.BackColor = Color.LightGreen; e.Row.Cells["TotMumM"].EditorComponent = utSave; if (PlnSteelforOrdNewEntity.Castingtype == "2") { e.Row.Cells["WeightGpOne"].Activation = Activation.AllowEdit; e.Row.Cells["WeightGpOne"].IgnoreRowColActivation = true; e.Row.Cells["WeightGpOne"].Appearance.BackColor = Color.LightGreen; e.Row.Cells["WeightGpOne"].EditorComponent = utSave; } // e.Row.Cells["SurplusType"].Activation = Activation.AllowEdit; // e.Row.Cells["SurplusType"].IgnoreRowColActivation = true; e.Row.Cells["SurplusType"].Appearance.BackColor = Color.LightGreen; // e.Row.Cells["SurplusType"].EditorComponent = SurplusChange; e.Row.Cells["GowhereCode"].Activation = Activation.AllowEdit; e.Row.Cells["GowhereCode"].IgnoreRowColActivation = true; e.Row.Cells["GowhereCode"].Appearance.BackColor = Color.LightGreen; } if (PlnSteelforOrdNewEntity.StateLk == "1") e.Row.Cells["SurplusType"].Appearance.BackColor = Color.FromArgb(255, 224, 192); if (string.IsNullOrEmpty(PlnSteelforOrdNewEntity.ProPlanId)) return; if (!string.IsNullOrWhiteSpace(PlnSteelforOrdNewEntity.ColligateJudgeId)) e.Row.Cells["ColligateJudgeId"].Appearance.BackColor = Color.LightGreen; /* var List = PlnSteelforOrdNewEntity.ProPlanId.Split(',') .Where(p => ONHFlag.ContainsKey(p)).ToList(); if (List.Count > 0) { var flagStr = List.Select(p => { var flag = ""; ONHFlag.TryGetValue(p, out flag); return flag; }).Aggregate((a, b) => { if (string.IsNullOrEmpty(b)) return a; if (string.IsNullOrEmpty(a)) return b; return a + "/" + b; }); if (!string.IsNullOrEmpty(flagStr)) { e.Row.Cells["ONHFlag"].Value = flagStr; e.Row.Cells["ONHFlag"].Appearance.BackColor = Color.LightGreen; } }*/ // SetONH(e, PlnSteelforOrdNewEntity); } private void SetONH(string[] ProPlanIds) { if (!ProPlanIds.Any()) return; var dt = ServerHelper.GetData("com.steering.pss.plnsaleord.steelMarkingPlan.StlChemical.GetChemicalStd", new object[] {ProPlanIds, new[] {"2"}}, Ob); foreach (var row in dt.AsEnumerable().GroupBy(p => p["铸造订单"].ToString()).Select(p => { var flagStr = ""; if (p.AsParallel().Any(q => q["化学元素"].ToString() == "O")) flagStr = flagStr + "O"; if (p.AsParallel().Any(q => q["化学元素"].ToString() == "N")) flagStr = flagStr + "N"; if (p.AsParallel().Any(q => q["化学元素"].ToString() == "H")) flagStr = flagStr + "H"; return new {p.Key, flagStr}; })) ONHFlag.Add(row.Key, row.flagStr); } private void ugCast_InitializeRow(object sender, InitializeRowEventArgs e) { var plnSteelforcastEntity = e.Row.ListObject as PlnSteelforcastNewEntity; if (plnSteelforcastEntity != null) switch (plnSteelforcastEntity.Status) { case "40": e.Row.Cells["Status"].Appearance.BackColor = Color.Gray; break; } } private void ugStove_InitializeRow(object sender, InitializeRowEventArgs e) { var PlnSteelforfurnaceNewEntity = e.Row.ListObject as PlnSteelforfurnaceNewEntity; if (PlnSteelforfurnaceNewEntity != null) { switch (PlnSteelforfurnaceNewEntity.Status) { case "40": e.Row.Cells["Status"].Appearance.BackColor = Color.Gray; break; } if (PlnSteelforfurnaceNewEntity.IfConfirm != "1") e.Row.Cells["IfConfirm"].Appearance.BackColor = Color.Red; } } private void craftImg_EditorButtonClick(object sender, EditorButtonEventArgs e) { var row = ugStove.ActiveRow; var craftNo = row.Cells["CraftNo"].Text; if (e.Button.Key.ToLower().Equals("select")) { var strurl = "http://172.54.10.42:8080/webroot/decision/view/report?viewlet=RepLgSmeltingProcess.cpt&op=view" + "&CRAFT_NO=" + craftNo; var down = new FrmRepExcel(Ob, strurl); down.Text = "炼钢工艺卡打印"; down.ShowDialog(); } } private void utSave_EditorButtonClick(object sender, EditorButtonEventArgs e) { var entityList = (from UltraGridRow p in ugOrder.Selected.Rows where p.ListObject is PlnSteelforOrdNewEntity select p.ListObject as PlnSteelforOrdNewEntity).ToList(); if (!entityList.Any() && (ugOrder.ActiveRow != null)) { var PlnSteelforOrdNewEntity = ugOrder.ActiveRow.ListObject as PlnSteelforOrdNewEntity; if (PlnSteelforOrdNewEntity != null) entityList.Add(PlnSteelforOrdNewEntity); } if (!entityList.Any()) { MessageUtil.ShowWarning("请选择需要修改的铸造订单!"); return; } if (entityList.Any(p => p.Status != "10")) { MessageUtil.ShowWarning("只能修改下发的补炉的铸造订单!"); return; } if (entityList.Any(p => !p.Update)) { MessageUtil.ShowWarning("请先修改订单!"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否保存所选中的" + entityList.Count + "个补炉订修改值?,请确认!") == DialogResult.No) return; var param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SaveSupplementOrder", new object[] {entityList.Select(JSONFormat.Format).ToList()}, Ob); if (param != null) { MessageUtil.ShowTips("修改成功"); Query(); } } private void ulCastCast_EditorButtonClick(object sender, EditorButtonEventArgs e) { if (ugCast.Rows.Count > 0) { if ((ulCastCastText != ulCastCast.Text) || (ulCastCastTextData == null)) { ulCastCastTextData = ugCast.Rows.AsEnumerable().Where(p => { var row = p.ListObject as PlnSteelforcastNewEntity; if (row == null) return false; return row.CastNo.IndexOf(ulCastCast.Text, StringComparison.Ordinal) >= 0; }).ToList(); ulCastCastText = ulCastCast.Text; } if (ulCastCastTextData.Any()) { var index = ulCastCastTextData.IndexOf(ugCast.ActiveRow); if ((index >= 0) && (index < ulCastCastTextData.Count - 1)) ugCast.ActiveRow = ulCastCastTextData.Skip(index + 1).FirstOrDefault(); else ugCast.ActiveRow = ulCastCastTextData.FirstOrDefault(); } } } private void ulFurnaceStove_EditorButtonClick(object sender, EditorButtonEventArgs e) { if (ugStove.Rows.Count > 0) { if ((ulFurnaceStoveText != ulFurnaceStove.Text) || (ulFurnaceStoveTextData == null)) { ulFurnaceStoveTextData = ugStove.Rows.AsEnumerable().Where(p => { var row = p.ListObject as PlnSteelforfurnaceNewEntity; if (row == null) return false; return row.StoveNo.IndexOf(ulFurnaceStove.Text, StringComparison.Ordinal) >= 0; }).ToList(); ulFurnaceStoveText = ulFurnaceStove.Text; } if (ulFurnaceStoveTextData.Any()) { var index = ulFurnaceStoveTextData.IndexOf(ugStove.ActiveRow); if ((index >= 0) && (index < ulFurnaceStoveTextData.Count - 1)) ugStove.ActiveRow = ulFurnaceStoveTextData.Skip(index + 1).FirstOrDefault(); else ugStove.ActiveRow = ulFurnaceStoveTextData.FirstOrDefault(); } } } private void ulFurnace_EditorButtonClick(object sender, EditorButtonEventArgs e) { if (ugStove.Rows.Count > 0) { if ((ulFurnaceText != ulFurnace.Text) || (ulFurnaceTextData == null)) { ulFurnaceTextData = ugStove.Rows.AsEnumerable().Where(p => { var row = p.ListObject as PlnSteelforfurnaceNewEntity; if (row == null) return false; return row.Furnaceno.IndexOf(ulFurnace.Text, StringComparison.Ordinal) >= 0; }).ToList(); ulFurnaceText = ulFurnace.Text; } if (ulFurnaceTextData.Any()) { var index = ulFurnaceTextData.IndexOf(ugStove.ActiveRow); if ((index >= 0) && (index < ulFurnaceTextData.Count - 1)) ugStove.ActiveRow = ulFurnaceTextData.Skip(index + 1).FirstOrDefault(); else ugStove.ActiveRow = ulFurnaceTextData.FirstOrDefault(); } } } private void MoveToCast_Click(object sender, EventArgs e) { if (ugStove.ActiveRow == null) return; var targePlnSteelforfurnace = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (targePlnSteelforfurnace == null) { MessageUtil.ShowError("找不到指定的位置"); return; } var list = (from UltraGridRow p in ugStove.Selected.Rows where p.ListObject is PlnSteelforfurnaceNewEntity select p.ListObject as PlnSteelforfurnaceNewEntity).OrderBy(p => p.FurnacenoSeq).ToList(); if (!list.Any()) { MessageUtil.ShowError("无拖动的数据"); return; } if (list.Any(p => p.CastSeq == null)) { MessageUtil.ShowError("拖动的数据无浇次顺序号,无法调整"); return; } if (targePlnSteelforfurnace.CastStoveSeq == null) { MessageUtil.ShowError("无法识别目标位置的浇次内顺序,无法调整"); return; } if (targePlnSteelforfurnace.FurnacenoSeq == null) { MessageUtil.ShowError("无法识别目标位置的浇次顺序,无法调整"); return; } /* if (targePlnSteelforfurnace.Status != "10") { MessageUtil.ShowError("只能调至下发状态的炉计划之前"); return; }*/ if (MessageUtil.ShowYesNoAndQuestion( string.Format("是否将选中炉次调整到炉次{0}之前", targePlnSteelforfurnace.Furnaceno) ) == DialogResult.No) return; var param1 = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustFurnaceSeq", new object[] {list.Select(p => p.Furnaceno).ToList(), targePlnSteelforfurnace.Furnaceno}, Ob); if (param1 != null) { MessageUtil.ShowTips("成功调整"); Query(); } } private void CastMoveOverCast_Click(object sender, EventArgs e) { if (ugStove.ActiveRow == null) return; var targePlnSteelforfurnace = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (targePlnSteelforfurnace == null) { MessageUtil.ShowError("找不到指定的位置"); return; } var list = (from UltraGridRow p in ugStove.Selected.Rows where p.ListObject is PlnSteelforfurnaceNewEntity select p.ListObject as PlnSteelforfurnaceNewEntity).OrderBy(p => p.FurnacenoSeq).ToList(); if (!list.Any()) { MessageUtil.ShowError("无拖动的数据"); return; } if (list.Any(p => p.CastSeq == null)) { MessageUtil.ShowError("拖动的数据无浇次顺序号,无法调整"); return; } if (targePlnSteelforfurnace.CastStoveSeq == null) { MessageUtil.ShowError("无法识别目标位置的浇次内顺序,无法调整"); return; } if (targePlnSteelforfurnace.FurnacenoSeq == null) { MessageUtil.ShowError("无法识别目标位置的浇次顺序,无法调整"); return; } /* if (targePlnSteelforfurnace.Status != "10") { MessageUtil.ShowError("只能调至下发状态的炉计划之前"); return; }*/ if (list.First().CastNo != targePlnSteelforfurnace.CastNo) { if (MessageUtil.ShowYesNoAndQuestion( string.Format("是否将浇次{0}调整到浇次{1}之前", list.First().CastNo, targePlnSteelforfurnace.CastNo) ) == DialogResult.No) return; var param1 = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustCastFurnaceSeq", new object[] {list.First().CastNo, targePlnSteelforfurnace.CastNo, targePlnSteelforfurnace.EfPlineCode, targePlnSteelforfurnace.FurnacenoSeq < list.First().FurnacenoSeq}, Ob); if (param1 != null) { MessageUtil.ShowTips("成功调整"); Query(); } } } private void ugStove_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { var uieOver = ugStove.DisplayLayout.UIElement.ElementFromPoint(new Point(e.X, e.Y)); if (uieOver != null) { var ugrOver = uieOver.GetContext(typeof(UltraGridRow), true) as UltraGridRow; ugStove.ActiveRow = ugrOver; } } } private void StoveInfo_EditorButtonClick(object sender, EditorButtonEventArgs e) { var targePlnSteelforfurnace = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (targePlnSteelforfurnace == null) { MessageUtil.ShowError("找不到指定的位置"); return; } var StoveInfo = new StoveInfo {Stove = targePlnSteelforfurnace.StoveNo, CraftNo = targePlnSteelforfurnace.CraftNo, Ob = Ob}; StoveInfo.Show(); } private void PrdcrNoSee_EditorButtonClick(object sender, EditorButtonEventArgs e) { UltraGridRow row = ugOrder.ActiveRow; var targePlnSteelforfurnace = ugOrder.ActiveRow.ListObject as PlnSteelforOrdNewEntity; if (targePlnSteelforfurnace == null) { MessageUtil.ShowError("找不到指定的位置"); return; } if ("".Equals(targePlnSteelforfurnace.PrdcrNo)) { MessageUtil.ShowError("监制编号为空"); return; } FrmProInformation fp = new FrmProInformation(Ob, row.Cells["PrdcrNo"].Text, "", "A"); fp.ShowDialog(); } private void SurplusChange_EditorButtonClick(object sender, EditorButtonEventArgs e) { var row = ugOrder.ActiveRow; if (row == null) return; var PoPlanId = row.GetValue("ProPlanId"); var gxPlanNo = row.GetValue("GxPlanNo"); var Furnaceno = row.GetValue("Furnaceno"); var Sequenceno = row.GetValue("Sequenceno"); var CastNo = row.GetValue("CastNo"); var CastSeq = row.GetValue("CastSeq"); var toWeightM = row.GetValue("TotWeightM"); var toNumM = row.GetValue("TotMumM"); var gradCode = row.GetValue("Gradecode"); var diammterGp = row.GetValue("Diameter"); var list = new ArrayList(); list.Add(PoPlanId); list.Add(gxPlanNo); list.Add(Furnaceno); list.Add(Sequenceno); list.Add(CastNo); list.Add(toWeightM); list.Add(toNumM); list.Add(gradCode); list.Add(diammterGp); list.Add(row.GetValue("PlineCode")); //list.Add(planRoute); //list.Add(cic); var frmStPlnZ = new FrmSteelPlnZg(Ob, list); frmStPlnZ.ShowDialog(); var flag = frmStPlnZ.Flag; if (flag) Query(); } private void ugOrder_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { var uieOver = ugOrder.DisplayLayout.UIElement.ElementFromPoint(new Point(e.X, e.Y)); if (uieOver != null) { var ugrOver = uieOver.GetContext(typeof(UltraGridRow), true) as UltraGridRow; ugOrder.ActiveRow = ugrOver; } } } private void ugCast_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { var uieOver = ugCast.DisplayLayout.UIElement.ElementFromPoint(new Point(e.X, e.Y)); if (uieOver != null) { var ugrOver = uieOver.GetContext(typeof(UltraGridRow), true) as UltraGridRow; ugCast.ActiveRow = ugrOver; } } } private void MoveOrder_Click(object sender, EventArgs e) { if (ugOrder.ActiveRow == null) { MessageUtil.ShowError("找不到指定的位置"); return; } var PlnSteelforOrdNewEntity = ugOrder.ActiveRow.ListObject as PlnSteelforOrdNewEntity; if (PlnSteelforOrdNewEntity == null) { MessageUtil.ShowError("找不到指定的位置"); return; } var list = (from UltraGridRow p in ugOrder.Selected.Rows where p.ListObject is PlnSteelforOrdNewEntity select p.ListObject as PlnSteelforOrdNewEntity).ToList(); if (!list.Any()) { MessageUtil.ShowError("无拖动的数据"); return; } if (list.Select(p => p.CastNo).Distinct().Count() != 1) { MessageUtil.ShowError("无法跨浇次调整"); return; } var DataSource = plnSteelforOrdNewEntityBindingSource.DataSource as List; var furnacenos = list.Select(p => p.Furnaceno).Distinct().ToList(); if ((furnacenos.Count == 1) && (furnacenos[0] == PlnSteelforOrdNewEntity.Furnaceno)) { } else { list = DataSource.Where(p => furnacenos.Contains(p.Furnaceno)).OrderBy(p => p.CcmSeq).ToList(); var temlist = DataSource.Where(p => PlnSteelforOrdNewEntity.Furnaceno == p.Furnaceno).ToList(); PlnSteelforOrdNewEntity = temlist.FirstOrDefault(); } if (MessageUtil.ShowYesNoAndQuestion("是否调整选中铸造计划" ) == DialogResult.No) return; var param1 = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustCcmSeq", new object[] {list.Select(JSONFormat.Format).ToList(), JSONFormat.Format(PlnSteelforOrdNewEntity)}, Ob); if (param1 != null) { MessageUtil.ShowTips("成功调整"); Query(); } } private void toolStripMenuItem1_Click(object sender, EventArgs e) { if (ugCast.ActiveRow == null) { MessageUtil.ShowError("找不到指定的位置"); return; } var targetPlnSteelforcast = ugCast.ActiveRow.ListObject as PlnSteelforcastNewEntity; if (targetPlnSteelforcast == null) { MessageUtil.ShowError("找不到指定的位置"); return; } var list = (from UltraGridRow p in ugCast.Selected.Rows where p.ListObject is PlnSteelforcastNewEntity select p.ListObject as PlnSteelforcastNewEntity).OrderBy(p => p.CastSeq).ToList(); if (!list.Any()) { MessageUtil.ShowError("无拖动的数据"); return; } if (list.Any(p => p.CastSeq == null)) { MessageUtil.ShowError("无法调整无浇次顺序号的数据"); return; } if (targetPlnSteelforcast.CastSeq == null) { MessageUtil.ShowError("无法识别目标位置的顺序号,无法调整顺序"); return; } var targetCast = (long) targetPlnSteelforcast.CastSeq; if (list.Select(p => p.PlineCode).Distinct().Count() > 1) { MessageUtil.ShowError("不同铸造产线无法调整顺序"); return; } var plnSteelforcastNewEntity = list.FirstOrDefault(); if ((plnSteelforcastNewEntity != null) && (plnSteelforcastNewEntity.PlineCode != targetPlnSteelforcast.PlineCode)) { MessageUtil.ShowError("不同铸造产线无法调整顺序"); return; } if (MessageUtil.ShowYesNoAndQuestion( string.Format("是否将这{0}个浇次按顺序调整到{1}之前", ugCast.Selected.Rows.Count, targetPlnSteelforcast.CastNo) ) == DialogResult.No) return; var param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustCastSeq", new object[] {list.Select(p => p.CastNo).ToList(), targetPlnSteelforcast.CastNo}, Ob); if (param != null) { MessageUtil.ShowTips(string.Format("成功将这{0}个浇次调整到{1}之前", ugCast.Selected.Rows.Count, targetPlnSteelforcast.CastNo)); Query(); } } private void CancelSurplusChange_EditorButtonClick(object sender, EditorButtonEventArgs e) { var row = ugOrder.ActiveRow; if (row == null) return; var PoPlanId = row.GetValue("ProPlanId"); var gxPlanNo = row.GetValue("GxPlanNo"); var Furnaceno = row.GetValue("Furnaceno"); var Sequenceno = row.GetValue("Sequenceno"); var entityList = new ArrayList(); entityList.Add(Furnaceno); entityList.Add(Sequenceno); entityList.Add(PoPlanId); entityList.Add(gxPlanNo); if (MessageUtil.ShowYesNoAndQuestion("是否撤销利轧管计划?") == DialogResult.No) return; PlanComm.WaitFromOpen(Cursor); var ccp = new CoreClientParam(); ccp.ServerName = "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelPlnZg"; if (PoPlanId.Contains("ZG")) ccp.MethodName = "doDeleteLibrary"; else ccp.MethodName = "doDeleteCast"; ccp.ServerParams = new object[] {entityList}; ccp = Ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal); PlanComm.WaitFromColse(Cursor); if (ccp.ReturnCode == -1) return; MessageUtil.ShowTips(ccp.ReturnInfo); if (ccp.ReturnInfo.Equals("撤销利计划成功!")) Query(); } #region Grid 行聚焦事件 // 操作记录 internal void doAddLgLog(ImpFrmdispatchEntity entity) { CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement"; ccp.MethodName = "doAddLgLog"; ccp.ServerParams = new object[] { JSONFormat.Format(entity) }; ccp = Ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal); } /// /// 标识监制信息 /// public void tabNotice(string userName) { UltraGridRow row = this.ugOrder.ActiveRow; if (row == null) { MessageUtil.ShowTips("请选择需要操作的监制信息!"); return; } PlnSteelforOrdNewEntity plnSteelEntity = (PlnSteelforOrdNewEntity)row.ListObject; string plnEntity = JSONFormat.Format(plnSteelEntity); CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement"; ccp.MethodName = "tabNotice"; ccp.ServerParams = new object[] { plnEntity, userName }; ccp = Ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { if (ccp.ReturnInfo.Equals("标识监制成功!")) { Query(); MessageUtil.ShowTips(ccp.ReturnInfo); ImpFrmdispatchEntity entity = new ImpFrmdispatchEntity(); entity.CastNo = plnSteelEntity.CastNo; entity.CastSeq = plnSteelEntity.CastSeq.ToString2(); entity.Heatno = plnSteelEntity.Furnaceno; //entity.HeatState = plnSteelEntity.HeatState; entity.ProMonth = plnSteelEntity.ProMonth; entity.HeatLine = plnSteelEntity.EfPlineName; entity.CmmLine = plnSteelEntity.PlineName; entity.Optpersonnel = userName; entity.Memo = "标识监制"; doAddLgLog(entity); } else { MessageUtil.ShowTips(ccp.ReturnInfo); } } } /// /// 浇次信息表选中事件 /// /// /// private void ugCast_AfterRowActivate(object sender, EventArgs e) { var ugr = ugCast.ActiveRow; if (ugr != null) { if (ugrCast != null) ugrCast.RowSelectorAppearance.Reset(); ugrCast = ugr; ugr.RowSelectorAppearance.BackColor = Color.Chartreuse; if (RefreshFlag) return; if (!ugbCast.Expanded && !ugbOrder.Expanded) return; var plnSteelforcastEntity = ugr.ListObject as PlnSteelforcastNewEntity; if (plnSteelforcastEntity != null) if (ugbStove.Expanded) QueryStove(new object[] {plnSteelforcastEntity.CastNo}); else if (ugbOrder.Expanded) QueryOrder(new object[] {plnSteelforcastEntity.CastNo}); } } /// /// 炉次信息表选中事件 /// /// /// private void ugStove_AfterRowActivate(object sender, EventArgs e) { var ugr = ugStove.ActiveRow; if (ugr != null) { if (ugrStove != null) ugrStove.RowSelectorAppearance.Reset(); ugrStove = ugr; ugr.RowSelectorAppearance.BackColor = Color.Chartreuse; if (RefreshFlag) return; if (!ugbOrder.Expanded) return; var plnSteelforfurnaceEntity = ugr.ListObject as PlnSteelforfurnaceNewEntity; if (plnSteelforfurnaceEntity != null) if ((plnSteelforfurnaceEntity.CastSeq != null) && (plnSteelforfurnaceEntity.CastStoveSeq != null)) QueryOrder2(new object[] { plnSteelforfurnaceEntity.Furnaceno }); } } private void ugOrder_AfterRowActivate(object sender, EventArgs e) { var ugr = ugOrder.ActiveRow; if (ugr != null) { if (ugrOrder != null) ugrOrder.RowSelectorAppearance.Reset(); ugrOrder = ugr; ugr.RowSelectorAppearance.BackColor = Color.Chartreuse; } } #endregion #region 查询 /// /// 查询 /// /// 查询条件 public void Query(object[] para) { try { _currentpara = para; plnSteelforfurnaceNewEntityBindingSource.Clear(); plnSteelforcastNewEntityBindingSource.Clear(); plnSteelforOrdNewEntityBindingSource.Clear(); if (ugbCast.Expanded) QueryCast(para); else if (ugbStove.Expanded) QueryStove(para); else if (ugbOrder.Expanded) QueryOrder(para); } catch (Exception) { // ignored } } /// /// 根据上次查询条件查询 /// public void Query() { PlnSteelforcastNewEntity plnSteelforcastNewEntity = null; PlnSteelforfurnaceNewEntity plnSteelforfurnaceNewEntity = null; if ((ugCast.Rows.Count > 0) && (ugCast.ActiveRow != null)) plnSteelforcastNewEntity = ugCast.ActiveRow.ListObject as PlnSteelforcastNewEntity; if ((ugStove.Rows.Count > 0) && (ugStove.ActiveRow != null)) plnSteelforfurnaceNewEntity = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; RefreshFlag = true; Query(_currentpara); if ((ugCast.Rows.Count > 0) && (plnSteelforcastNewEntity != null)) ugCast.ActiveRow = ugCast.Rows.AsEnumerable().Where(p => { var row = p.ListObject as PlnSteelforcastNewEntity; if (row == null) return false; return row.CastNo == plnSteelforcastNewEntity.CastNo; }).FirstOrDefault(); if ((ugStove.Rows.Count > 0) && (plnSteelforfurnaceNewEntity != null)) ugStove.ActiveRow = ugStove.Rows.AsEnumerable().Where(p => { var row = p.ListObject as PlnSteelforfurnaceNewEntity; if (row == null) return false; return row.Furnaceno == plnSteelforfurnaceNewEntity.Furnaceno; }).FirstOrDefault(); RefreshFlag = false; if (ugbCast.Expanded) ugCast_AfterRowActivate(null, null); else if (ugbStove.Expanded) ugStove_AfterRowActivate(null, null); } /// /// 查询浇次信息表 /// /// public void QueryCast(object[] para) { List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforcastEntity", para, Ob); plnSteelforcastNewEntityBindingSource.DataSource = listSource; GridHelper.RefreshAndAutoSize(ugCast); ulCastCastText = ""; ulCastCastTextData = null; } /// /// 查询炉次信息表 /// /// public void QueryStove(object[] para) { List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforfurnaceEntity", para, Ob); plnSteelforfurnaceNewEntityBindingSource.DataSource = listSource; GridHelper.RefreshAndAutoSize(ugStove); if (listSource.Count <= 0) plnSteelforOrdNewEntityBindingSource.Clear(); foreach (UltraGridRow row in ugStove.Rows) { if ("1".Equals(row.Cells["ifMonitorLg"].Value.ToString())) { row.Cells["ifMonitorLg"].Appearance.BackColor = Color.Green; } } ulFurnaceText = ""; ulFurnaceTextData = null; ulFurnaceStoveText = ""; ulFurnaceStoveTextData = null; } /// /// 查询订单信息表 /// /// public void QueryOrder(object[] para) { List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforOrdEntity", para, Ob); listSource = listSource.Where(p => (p.SurplusType != "2") && (p.SurplusType != "3")).ToList(); // SetONH(listSource.AsParallel().SelectMany(p => p.ProPlanId.Split(',')).Where(p => !string.IsNullOrEmpty(p) && !ONHFlag.ContainsKey(p)) // .Distinct().ToArray()); plnSteelforOrdNewEntityBindingSource.DataSource = listSource; foreach (UltraGridRow ugr in ugOrder.Rows) { if (ugr.Cells["IsNoticeEp"].Text.Equals("已通知")) { ugr.Cells["IsNoticeEp"].Appearance.BackColor = Color.GreenYellow; ugr.Activate(); } } GridHelper.RefreshAndAutoSize(ugOrder); } public void QueryOrder2(object[] para) { List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforOrdEntityByfurnaceno", para, Ob); // SetONH(listSource.AsParallel().SelectMany(p => p.ProPlanId.Split(',')).Where(p => !string.IsNullOrEmpty(p) && !ONHFlag.ContainsKey(p)) // .Distinct().ToArray()); plnSteelforOrdNewEntityBindingSource.DataSource = listSource; foreach (UltraGridRow ugr in ugOrder.Rows) { if (ugr.Cells["IsNoticeEp"].Text.Equals("已通知")) { ugr.Cells["IsNoticeEp"].Appearance.BackColor = Color.GreenYellow; ugr.Activate(); } } GridHelper.RefreshAndAutoSize(ugOrder); } #endregion #region 下发/取消下发 /// /// 炉次信息 下发/取消下发 /// /// /// public void ChangeSatus(bool down, string userName) { if (ugbCast.Expanded && ((ugCast.Selected.Rows.Count > 0) || (ugCast.ActiveRow != null)) && (ugStove.Selected.Rows.Count != 1)) ChangeSatusCast(down, userName); else if (ugbStove.Expanded && ((ugStove.Selected.Rows.Count > 0) || (ugStove.ActiveRow != null))) ChangeSatusStove(down, userName); else MessageUtil.ShowWarning("请选择展开炉次信息或者浇次信息,再点击下发!"); } private void ChangeSatusStove(bool down, string userName) { var entityList = (from UltraGridRow p in ugStove.Selected.Rows where p.ListObject is PlnSteelforfurnaceNewEntity select p.ListObject as PlnSteelforfurnaceNewEntity).ToList(); if (!entityList.Any() && (ugStove.ActiveRow != null)) { var plnSteelforfurnaceNewEntity = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (plnSteelforfurnaceNewEntity != null) entityList.Add(plnSteelforfurnaceNewEntity); } if (!entityList.Any()) { MessageUtil.ShowWarning("请需要下发的炉次!"); return; } if (down && entityList.Any(p => p.Status != "00")) { MessageUtil.ShowWarning("选中的炉次不处于编制状态,无法下发!"); return; } if (!down && entityList.Any(p => p.Status != "10")) { MessageUtil.ShowWarning("选中的炉次不处于下发状态,无法取消下发!"); return; } if (MessageUtil.ShowYesNoAndQuestion((down ? "是否下发?" : "是否取消下发?") + "所选中的" + entityList.Count + "个炉次") == DialogResult.No) return; var param = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.UpdatePlnSteelforfurnaceStatus", new object[] {entityList.Select(p => p.Furnaceno).ToList(), down ? "10" : "00", userName}, Ob); if (param != null) { MessageUtil.ShowTips(down ? "下发成功" : "取消下发成功"); Query(); } } /// /// 浇次信息 下发/取消下发 /// /// /// private void ChangeSatusCast(bool down, string userName) { if (ugCast.ActiveRow == null) { MessageUtil.ShowWarning("请选择需要下发的浇次!"); return; } var entity = ugCast.ActiveRow.ListObject as PlnSteelforcastNewEntity; if (entity == null) { MessageUtil.ShowWarning("请选择需要下发的浇次!"); return; } if (down && (entity.Status != "00")) { MessageUtil.ShowWarning("选中的浇次不处于编制状态,无法下发!"); return; } if (!down && (entity.Status != "10")) { MessageUtil.ShowWarning("选中的浇次不处于下发状态,无法取消下发!"); return; } if (MessageUtil.ShowYesNoAndQuestion((down ? "是否下发所选中的浇次之前的所有编制中的浇次?" : "是否取消下发所选中的浇次?") + "所选中的浇次") == DialogResult.No) return; var param = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.UpdatePlnSteelforcastStatus", new object[] {entity.CastNo, down ? "10" : "00", userName}, Ob); if (param != null) { MessageUtil.ShowTips(down ? "下发成功" : "取消下发成功"); Query(); } } #endregion #region 炉计划重炼/补炉 /// /// 炉计划重炼 /// /// public void Resmelt(string userName) { if (ugbOrder.Expanded && (ugOrder.Selected.Rows.Count > 0)) { var list = (from UltraGridRow p in ugOrder.Selected.Rows where p.ListObject is PlnSteelforOrdNewEntity select p.ListObject as PlnSteelforOrdNewEntity).ToList(); if (list.Any(p => p.Surplusflag == "1")) { MessageUtil.ShowWarning("无法重炼余材!"); return; } if (list.Select(p => p.Furnaceno).Distinct().Count() > 1) { MessageUtil.ShowWarning("只能重炼同炉下的订单!"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否重炼所选中的订单?该订单信息将清空, 系统将在最后一浇次生成新的浇次,包含此炉信息,请确认!") == DialogResult.No) return; var param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.Resmelt", new object[] {list.Select(p => p.Furnaceno).FirstOrDefault(), list.Select(p => (long) p.Sequenceno).ToList(), userName}, Ob); if (param != null) { MessageUtil.ShowTips("重炼订单成功"); Query(); var plnSteelforfurnaceNewEntity = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; ImpFrmdispatchEntity entity = new ImpFrmdispatchEntity(); entity.CastNo = plnSteelforfurnaceNewEntity.CastNo; entity.CastSeq = plnSteelforfurnaceNewEntity.CastSeq.ToString2(); entity.Heatno = plnSteelforfurnaceNewEntity.Furnaceno; entity.HeatState = plnSteelforfurnaceNewEntity.HeatState; entity.ProMonth = plnSteelforfurnaceNewEntity.ProMonth; entity.HeatLine = plnSteelforfurnaceNewEntity.EfPlineName; entity.CmmLine = plnSteelforfurnaceNewEntity.PlineName; entity.Optpersonnel = userName; entity.Memo = "炉计划重炼"; doAddLgLog(entity); } } else { if (ugStove.ActiveRow == null) { MessageUtil.ShowWarning("请选择需要重炼的炉次计划!"); return; } var plnSteelforfurnaceNewEntity = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (plnSteelforfurnaceNewEntity == null) { MessageUtil.ShowWarning("请选择需要重炼的炉次计划!"); return; } // // if (plnSteelforfurnaceNewEntity.Status != "30" && plnSteelforfurnaceNewEntity.Status != "20" ) // { // MessageUtil.ShowWarning("选中的炉次计划不处于已生产状态,无法重炼!"); // return; // } if (MessageUtil.ShowYesNoAndQuestion("是否重炼所选中的炉次?该炉订单信息将清空, 系统将在本日最后一浇次生成新的浇次,包含此炉信息,请确认!") == DialogResult.No) return; var param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.Resmelt", new object[] {plnSteelforfurnaceNewEntity.Furnaceno, userName}, Ob); if (param != null) { MessageUtil.ShowTips("重炼炉次成功"); Query(); ImpFrmdispatchEntity entity = new ImpFrmdispatchEntity(); entity.CastNo = plnSteelforfurnaceNewEntity.CastNo; entity.CastSeq = plnSteelforfurnaceNewEntity.CastSeq.ToString2(); entity.Heatno = plnSteelforfurnaceNewEntity.Furnaceno; entity.HeatState = plnSteelforfurnaceNewEntity.HeatState; entity.ProMonth = plnSteelforfurnaceNewEntity.ProMonth; entity.HeatLine = plnSteelforfurnaceNewEntity.EfPlineName; entity.CmmLine = plnSteelforfurnaceNewEntity.PlineName; entity.Optpersonnel = userName; entity.Memo = "炉计划重炼"; doAddLgLog(entity); } } } public void CastEnd(string userName) { var list = (from UltraGridRow p in ugStove.Selected.Rows where p.ListObject is PlnSteelforfurnaceNewEntity select p.ListObject as PlnSteelforfurnaceNewEntity).OrderBy(p => p.FurnacenoSeq).ToList(); if (!list.Any()) { MessageUtil.ShowError("请选中浇次中断未生产的炉计划"); return; } if (list.Select(p => p.CastNo).Distinct().Count() != 1) { MessageUtil.ShowError("请选中同一浇次的炉计划"); return; } /* if (MessageUtil.ShowYesNoAndQuestion( "浇次中断,选中的炉计划将生产新的浇次移至最后一浇,且新浇次无首尾加量,该操作无法还原,请确认!" ) == DialogResult.No) return; */ /* var param1 = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustFurnaceSeq", new object[] { list.Select(p => p.Furnaceno).ToList(), list.First().Furnaceno,2 }, Ob); */ var ds = plnSteelforfurnaceNewEntityBindingSource.DataSource as List; var InterruptionFurnace = ds.Where(p => (p.CastNo == list.First().CastNo) && !list.Contains(p)) .OrderBy(p => p.CastStoveSeq) .LastOrDefault(); using (var FrmCastInterruption = new FrmCastInterruption(InterruptionFurnace, list, Ob)) { FrmCastInterruption.ShowDialog(); if (FrmCastInterruption.DialogResult != DialogResult.OK) return; FrmCastInterruption.Close(); } MessageUtil.ShowTips("浇次中断成功"); Query(); foreach (var plnSteelforfurnaceNewEntity in list) { ImpFrmdispatchEntity entity = new ImpFrmdispatchEntity(); entity.CastNo = plnSteelforfurnaceNewEntity.CastNo; entity.CastSeq = plnSteelforfurnaceNewEntity.CastSeq.ToString2(); entity.Heatno = plnSteelforfurnaceNewEntity.Furnaceno; entity.HeatState = plnSteelforfurnaceNewEntity.HeatState; entity.ProMonth = plnSteelforfurnaceNewEntity.ProMonth; entity.HeatLine = plnSteelforfurnaceNewEntity.EfPlineName; entity.CmmLine = plnSteelforfurnaceNewEntity.PlineName; entity.Optpersonnel = userName; entity.Memo = "浇次中断"; doAddLgLog(entity); } /* if (param1 != null) { MessageUtil.ShowTips("成功调整"); Query(); }*/ } /// /// 炉计划补炉 /// /// public void SupplementStove(string userName) { if (ugStove.ActiveRow == null) { MessageUtil.ShowWarning("请选择需要补炉的炉次计划!"); return; } var plnSteelforfurnaceNewEntity = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (plnSteelforfurnaceNewEntity == null) { MessageUtil.ShowWarning("请选择需要补炉的炉次计划!"); return; } var text = "是否对所选中的炉次进行补炉或补余材订单?,请确认!"; var furnShow = new FrmBuFurnShow(text); furnShow.ShowDialog(); var flag = furnShow.Falg; string[] param = null; if (flag.Equals("1")) param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SupplementStove", new object[] {plnSteelforfurnaceNewEntity.Furnaceno, userName}, Ob); else if (flag.Equals("2")) param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SteelSupplement", new object[] {plnSteelforfurnaceNewEntity.Furnaceno, userName}, Ob); else return; //if (MessageUtil.ShowYesNoAndQuestion("是否对所选中的炉次进行补炉?,请确认!") == DialogResult.No) // return; if (param != null) { MessageUtil.ShowTips("补炉成功"); Query(); ImpFrmdispatchEntity entity = new ImpFrmdispatchEntity(); entity.CastNo = plnSteelforfurnaceNewEntity.CastNo; entity.CastSeq = plnSteelforfurnaceNewEntity.CastSeq.ToString2(); entity.Heatno = plnSteelforfurnaceNewEntity.Furnaceno; entity.HeatState = plnSteelforfurnaceNewEntity.HeatState; entity.ProMonth = plnSteelforfurnaceNewEntity.ProMonth; entity.HeatLine = plnSteelforfurnaceNewEntity.EfPlineName; entity.CmmLine = plnSteelforfurnaceNewEntity.PlineName; entity.Optpersonnel = userName; entity.Memo = "炉计划补炉"; doAddLgLog(entity); } /* if (plnSteelforfurnaceNewEntity.Status != "30" && plnSteelforfurnaceNewEntity.Status != "20") { MessageUtil.ShowWarning("选中的炉次计划不处于生产状态,无法补炉!"); return; } */ } /// /// 补炼 /// public void SteelSupplement() { if (ugOrder.ActiveRow == null) { MessageUtil.ShowWarning("请选择需要补炼的铸造订单计划!"); return; } var PlnSteelforOrdNewEntity = ugOrder.ActiveRow.ListObject as PlnSteelforOrdNewEntity; if (PlnSteelforOrdNewEntity == null) { MessageUtil.ShowWarning("请选择需要补炼的铸造订单计划!"); return; } if (PlnSteelforOrdNewEntity.Status != "30") { MessageUtil.ShowWarning("选中的铸造订单不处于已生产状态,无法补炼!"); return; } var Weight = PlnSteelforOrdNewEntity.TotWeightM ?? 0; // - (PlnSteelforOrdNewEntity.ActWeightM ?? 0); var Qty = PlnSteelforOrdNewEntity.TotMumM ?? 0; //- (PlnSteelforOrdNewEntity.ActMumM ?? 0); if (Weight <= 0) { MessageUtil.ShowWarning("选中的铸造订单没有差量,不需要补炼!"); return; } if (Qty <= 0) Qty = 1; var NewPlnSteelforOrdNewEntity = PlnSteelforOrdNewEntity.Clone() as PlnSteelforOrdNewEntity; if (NewPlnSteelforOrdNewEntity == null) NewPlnSteelforOrdNewEntity = new PlnSteelforOrdNewEntity(); NewPlnSteelforOrdNewEntity.Surplusflag = "0"; NewPlnSteelforOrdNewEntity.SurplusType = "0"; NewPlnSteelforOrdNewEntity.IfSurplusAlloted = "0"; NewPlnSteelforOrdNewEntity.TotMumM = Qty; NewPlnSteelforOrdNewEntity.TotWeightM = Weight; using (var FrmSteelSupplement = new FrmSteelSupplement { ListSource = new List {NewPlnSteelforOrdNewEntity}, ob = Ob }) { FrmSteelSupplement.ShowDialog(); if (FrmSteelSupplement.DialogResult != DialogResult.OK) return; FrmSteelSupplement.Close(); } MessageUtil.ShowTips("补炼成功"); Query(); } /// /// 炉计划转交 /// /// public void HandOver(string userName) { if (ugStove.ActiveRow == null) { MessageUtil.ShowWarning("请选择需要转交的炉计划!"); return; } var PlnSteelforfurnaceNewEntity = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (PlnSteelforfurnaceNewEntity == null) { MessageUtil.ShowWarning("请选择需要转交的炉计划!"); return; } using (var FrmSteelHandOver = new FrmSteelHandOver(PlnSteelforfurnaceNewEntity, Ob)) { FrmSteelHandOver.ShowDialog(); if (FrmSteelHandOver.DialogResult != DialogResult.OK) return; FrmSteelHandOver.Close(); } MessageUtil.ShowTips("转交成功"); Query(); ImpFrmdispatchEntity entity = new ImpFrmdispatchEntity(); entity.CastNo = PlnSteelforfurnaceNewEntity.CastNo; entity.CastSeq = PlnSteelforfurnaceNewEntity.CastSeq.ToString2(); entity.Heatno = PlnSteelforfurnaceNewEntity.Furnaceno; entity.HeatState = PlnSteelforfurnaceNewEntity.HeatState; entity.ProMonth = PlnSteelforfurnaceNewEntity.ProMonth; entity.HeatLine = PlnSteelforfurnaceNewEntity.EfPlineName; entity.CmmLine = PlnSteelforfurnaceNewEntity.PlineName; entity.Optpersonnel = userName; entity.Memo = "炉计划转交"; doAddLgLog(entity); } /// /// 炉计划转分切 /// /// public void ChangeOrder(string userName) { if (ugStove.ActiveRow == null) { MessageUtil.ShowWarning("请选择需要转分切的炉计划!"); return; } var PlnSteelforfurnaceNewEntity = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (PlnSteelforfurnaceNewEntity == null) { MessageUtil.ShowWarning("请选择需要转分切的炉计划!"); return; } List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforOrdEntity", new object[] {PlnSteelforfurnaceNewEntity.CastNo}, Ob); var Diameter = ""; if ((listSource != null) && (listSource.Count >= 0)) { var plnSteelforOrdNewEntity = listSource.FirstOrDefault(); if (plnSteelforOrdNewEntity != null) Diameter = plnSteelforOrdNewEntity.Diameter; } listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforOrdEntity", new object[] { new List {PlnSteelforfurnaceNewEntity.Furnaceno}, new List {PlnSteelforfurnaceNewEntity.PlineCode}, new List {"10"}, Diameter, PlnSteelforfurnaceNewEntity.Gradecode }, Ob); List listSource2 = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.ControlOrderPlan.getOrderBInfoByContion", new object[] { new string[] {}, new[] {"C001", "C003", "C006"}, PlnSteelforfurnaceNewEntity.Gradecode, "", "1", "1", new[] {"0", "1", "", ""}, new[] {PlnSteelforfurnaceNewEntity.PlineCode}, "0" }, Ob); List listSource3 = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforfurnaceEntity", new object[] { new List {PlnSteelforfurnaceNewEntity.EfPlineCode}, PlnSteelforfurnaceNewEntity.Gradecode, new List {PlnSteelforfurnaceNewEntity.Furnaceno}, new List {"10", "20","30"}, PlnSteelforfurnaceNewEntity.Furnaceno }, Ob); using (var FrmSteelChangeOrderPlan = new FrmSteelChangeOrderPlan { ListSource = listSource.Where(p => (p.SurplusType != "2") && (p.SurplusType != "3") && (p.Surplusflag != "1")).ToList(), listSource2 = listSource2.Where(p => ((Diameter == "") || (p.DiameterLz == Diameter)) && (p.CanWgt > 0)).ToList(), listSource3 = listSource3, FurnaceNo = PlnSteelforfurnaceNewEntity.Furnaceno, ob = Ob }) { FrmSteelChangeOrderPlan.ShowDialog(); if (FrmSteelChangeOrderPlan.DialogResult != DialogResult.OK) return; FrmSteelChangeOrderPlan.Close(); } MessageUtil.ShowTips("转分切成功"); Query(); ImpFrmdispatchEntity entity = new ImpFrmdispatchEntity(); entity.CastNo = PlnSteelforfurnaceNewEntity.CastNo; entity.CastSeq = PlnSteelforfurnaceNewEntity.CastSeq.ToString2(); entity.Heatno = PlnSteelforfurnaceNewEntity.Furnaceno; entity.HeatState = PlnSteelforfurnaceNewEntity.HeatState; entity.ProMonth = PlnSteelforfurnaceNewEntity.ProMonth; entity.HeatLine = PlnSteelforfurnaceNewEntity.EfPlineName; entity.CmmLine = PlnSteelforfurnaceNewEntity.PlineName; entity.Optpersonnel = userName; entity.Memo = "炉计划转分切"; doAddLgLog(entity); } // Completion private void CompletionStove(string userName) { var entityList = (from UltraGridRow p in ugStove.Selected.Rows where p.ListObject is PlnSteelforfurnaceNewEntity select p.ListObject as PlnSteelforfurnaceNewEntity).ToList(); if (!entityList.Any() && (ugStove.ActiveRow != null)) { var plnSteelforfurnaceNewEntity = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (plnSteelforfurnaceNewEntity != null) entityList.Add(plnSteelforfurnaceNewEntity); } if (!entityList.Any()) { MessageUtil.ShowWarning("请需要确认生产的炉次!"); return; } if (MessageUtil.ShowYesNoAndQuestion("改变所选中的" + entityList.Count + "个炉次为已生产") == DialogResult.No) return; var param = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.UpdatePlnSteelforfurnaceStatus", new object[] {entityList.Select(p => p.Furnaceno).ToList(), "30", userName}, Ob); if (param != null) { MessageUtil.ShowTips("更改成功"); Query(); } } public void ChangePline(string userName) { var entityList = (from UltraGridRow p in ugStove.Selected.Rows where p.ListObject is PlnSteelforfurnaceNewEntity select p.ListObject as PlnSteelforfurnaceNewEntity).ToList(); if (!entityList.Any() && (ugStove.ActiveRow != null)) { var plnSteelforfurnaceNewEntity = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (plnSteelforfurnaceNewEntity != null) entityList.Add(plnSteelforfurnaceNewEntity); } if (!entityList.Any()) { MessageUtil.ShowWarning("请选择需要更换铸造产线的炉次计划!"); return; } if (entityList.Any(p => (p.Status != "30") && (p.Status != "20") && (p.Status != "10"))) { MessageUtil.ShowWarning("选中的炉次计划不处于下发或生产中或已生产状态,无法更换铸造产线!"); return; } if (entityList.Any(p => (p.PlineCode != "C007") && (p.PlineCode != "C004"))) { MessageUtil.ShowWarning("选中的炉次计划不是二炼钢铸机或者三炼钢铸机,无法更换铸造产线!"); return; } var data = entityList.GroupBy(p => p.CastNo).Select(p => p.OrderBy(q => q.FurnacenoSeq).Select(q => q.Furnaceno).ToList()).ToList(); if (MessageUtil.ShowYesNoAndQuestion(string.Format("所选{0}个炉次进行更换铸造产线,系统将拆分这{1}个浇次的浇次计划,生成新的浇次计划.请确认!", entityList.Count, data.Count)) == DialogResult.No) return; var param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.ChangePline", new object[] {data, userName}, Ob); if (param != null) { if (param.Length > 1) MessageUtil.ShowTips(param[1]); else MessageUtil.ShowTips("更换铸造产线成功"); Query(); } } #endregion #region 关闭计划 /// /// 关闭计划 /// /// public void ClosePlan(string userName) { if (ugbCast.Expanded && (ugCast.Selected.Rows.Count > 0)) CloseCastPlan(userName); else if (ugbStove.Expanded && (ugStove.Selected.Rows.Count > 0)) CloseStovePlan(userName); else MessageUtil.ShowWarning("请选择需要关闭的浇次计划或者炉计划!"); } private void CloseStovePlan(string userName) { var entityList = (from UltraGridRow p in ugStove.Selected.Rows where p.ListObject is PlnSteelforfurnaceNewEntity select p.ListObject as PlnSteelforfurnaceNewEntity).ToList(); if (!entityList.Any() && (ugStove.ActiveRow != null)) { var plnSteelforfurnaceNewEntity = ugStove.ActiveRow.ListObject as PlnSteelforfurnaceNewEntity; if (plnSteelforfurnaceNewEntity != null) entityList.Add(plnSteelforfurnaceNewEntity); } if (!entityList.Any()) { MessageUtil.ShowWarning("请选择需要关闭的炉次计划!"); return; } if (entityList.Any(p => p.Status != "30")) { MessageUtil.ShowWarning("选中的炉次计划不处于已生产状态,无法关闭!"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否关闭所选中的" + entityList.Count + "个炉次?该操作不可撤销,请确认!") == DialogResult.No) return; var param = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.ClosePlnSteelforfurnace", new object[] {entityList.Select(p => p.Furnaceno).ToList(), userName}, Ob); if (param != null) { MessageUtil.ShowTips("关闭炉次成功"); Query(); } } /// /// 关闭浇次计划 /// /// private void CloseCastPlan(string userName) { var entityList = (from UltraGridRow p in ugCast.Selected.Rows where p.ListObject is PlnSteelforcastNewEntity select p.ListObject as PlnSteelforcastNewEntity).ToList(); if (!entityList.Any() && (ugCast.ActiveRow != null)) { var PlnSteelforcastNewEntity = ugCast.ActiveRow.ListObject as PlnSteelforcastNewEntity; if (PlnSteelforcastNewEntity != null) entityList.Add(PlnSteelforcastNewEntity); } if (!entityList.Any()) { MessageUtil.ShowWarning("请需要关闭的浇次!"); return; } if (entityList.Any(p => p.Status != "30")) { MessageUtil.ShowWarning("选中的浇次不处于已生产状态,无法关闭!"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否关闭所选中的" + entityList.Count + "个浇次计划?该操作不可撤销,请确认! ") == DialogResult.No) return; var param = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.ClosePlnSteelforcast", new object[] {entityList.Select(p => p.CastNo).ToList(), userName}, Ob); if (param != null) { MessageUtil.ShowTips("关闭浇次计划成功"); Query(); } } #endregion #region 调整顺序 private void AdjustCastSeq(SelectedRowsCollection adjustCast, int targetPoint) { var targetPlnSteelforcast = ugCast.Rows[targetPoint].ListObject as PlnSteelforcastNewEntity; if (targetPlnSteelforcast == null) { MessageUtil.ShowError("找不到指定的位置"); return; } var list = (from UltraGridRow p in adjustCast where p.ListObject is PlnSteelforcastNewEntity select p.ListObject as PlnSteelforcastNewEntity).OrderBy(p => p.CastSeq).ToList(); if (!list.Any()) { MessageUtil.ShowError("无拖动的数据"); return; } if (list.Any(p => p.CastSeq == null)) { MessageUtil.ShowError("无法调整无浇次顺序号的数据"); return; } if (targetPlnSteelforcast.CastSeq == null) { MessageUtil.ShowError("无法识别目标位置的顺序号,无法调整顺序"); return; } var targetCast = (long) targetPlnSteelforcast.CastSeq; if (list.Select(p => p.PlineCode).Distinct().Count() > 1) { MessageUtil.ShowError("不同铸造产线无法调整顺序"); return; } var plnSteelforcastNewEntity = list.FirstOrDefault(); if ((plnSteelforcastNewEntity != null) && (plnSteelforcastNewEntity.PlineCode != targetPlnSteelforcast.PlineCode)) { MessageUtil.ShowError("不同铸造产线无法调整顺序"); return; } if (MessageUtil.ShowYesNoAndQuestion( string.Format("是否将这{0}个浇次按顺序调整到{1}之前", adjustCast.Count, targetPlnSteelforcast.CastNo) ) == DialogResult.No) return; /* //将选择的数据 按castseq 从小到大排序 防止界面调整过顺序 var listCast = list.OrderBy(p => p.CastSeq).Select(p => p.CastNo).ToList(); var listSeq = list.Where(p => p.CastSeq != null).Select(p => (long) p.CastSeq).ToList(); var maxSeq = listSeq.Max() >= targetCast ? listSeq.Max() : targetCast -1; var minSeq = listSeq.Min() <= targetCast ? listSeq.Min() : targetCast ; // 按照浇次seq范围把所需要调整的Cast全查出来, List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforcastEntity", new object[] {new List(){targetPlnSteelforcast.PlineCode}, minSeq, maxSeq}, Ob); if (listSource == null) { MessageUtil.ShowError("无拖动的数据"); return; } //排除掉选择的浇次号 var castElse = listSource.Select(p => p.CastNo).Where(p => !listCast.Contains(p)).ToList(); //无意义的排序 选择的浇次拖到自己本身 if (!castElse.Any()) return; //按照调整后的顺序排序 var List = castElse.Take((int) (targetCast - minSeq)) .Concat(listCast) .Concat(castElse.Skip((int) (targetCast - minSeq))).ToList();*/ var param = SteelHelper.SetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustCastSeq", new object[] {list.Select(p => p.CastNo).ToList(), targetPlnSteelforcast.CastNo}, Ob); if (param != null) { MessageUtil.ShowTips(string.Format("成功将这{0}个浇次调整到{1}之前", adjustCast.Count, targetPlnSteelforcast.CastNo)); Query(); } } private void AdjustStoveSeq(SelectedRowsCollection adjustStove, int targetPoint) { var targePlnSteelforfurnace = ugStove.Rows[targetPoint].ListObject as PlnSteelforfurnaceNewEntity; if (targePlnSteelforfurnace == null) { MessageUtil.ShowError("找不到指定的位置"); return; } var list = (from UltraGridRow p in adjustStove where p.ListObject is PlnSteelforfurnaceNewEntity select p.ListObject as PlnSteelforfurnaceNewEntity).OrderBy(p => p.FurnacenoSeq).ToList(); if (!list.Any()) { MessageUtil.ShowError("无拖动的数据"); return; } if (list.Any(p => p.CastSeq == null)) { MessageUtil.ShowError("拖动的数据无浇次顺序号,无法调整"); return; } if (targePlnSteelforfurnace.CastStoveSeq == null) { MessageUtil.ShowError("无法识别目标位置的浇次内顺序,无法调整"); return; } if (targePlnSteelforfurnace.FurnacenoSeq == null) { MessageUtil.ShowError("无法识别目标位置的浇次顺序,无法调整"); return; } /* if (targePlnSteelforfurnace.Status != "10") { MessageUtil.ShowError("只能调至下发状态的炉计划之前"); return; }*/ if (MessageUtil.ShowYesNoAndQuestion( string.Format("是否将选中炉次调整到炉次{0}之前", targePlnSteelforfurnace.Furnaceno) ) == DialogResult.No) return; var param1 = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustFurnaceSeq", new object[] {list.Select(p => p.Furnaceno).ToList(), targePlnSteelforfurnace.Furnaceno}, Ob); if (param1 != null) { MessageUtil.ShowTips("成功调整"); Query(); } /* if (list.Count == 1 && list.First().CastNo != targePlnSteelforfurnace.CastNo) { if (MessageUtil.ShowYesNoAndQuestion( string.Format("是否将浇次{0}调整到浇次{1}之前", list.First().CastNo, targePlnSteelforfurnace.CastNo) ) == DialogResult.No) return; var param1 = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustCastFurnaceSeq", new object[] { list.First().CastNo, targePlnSteelforfurnace.CastNo, targePlnSteelforfurnace.EfPlineCode, targePlnSteelforfurnace.FurnacenoSeq< list.First().FurnacenoSeq }, Ob); if (param1 != null) { MessageUtil.ShowTips("成功调整"); Query(); } return; } var castStoveSeq = (long) targePlnSteelforfurnace.CastStoveSeq; var furnacenoSeq = (long) targePlnSteelforfurnace.FurnacenoSeq; if (list.Select(p => p.CastNo).Distinct().Count() > 1) { MessageUtil.ShowError("只能调整同浇次的浇次内顺序"); return; } string[] param = null; //将选择的数据 按castseq 从小到大排序 防止界面调整过顺序 var listFurnaceno = list.OrderBy(p => p.CastStoveSeq).Select(p => p.Furnaceno).ToList(); var lines = list.Select(p => p.EfPlineCode).Distinct().ToList(); if (lines.Count() == 1 && lines.FirstOrDefault() != targePlnSteelforfurnace.EfPlineCode ) { #region 调整产线 if (lines.FirstOrDefault() != "C003" && lines.FirstOrDefault() != "C006") { MessageUtil.ShowError("只有二炼钢电炉和三炼钢电炉才能调整产线"); return; } if (MessageUtil.ShowYesNoAndQuestion( string.Format("是否将这{0}个炉次调整至{1},调整到炉次号{2}之前", adjustStove.Count,targePlnSteelforfurnace.EfPlineCode, targePlnSteelforfurnace.Furnaceno) ) == DialogResult.No) return; param = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustEFLine", new object[] { listFurnaceno, targePlnSteelforfurnace.Furnaceno}, Ob); #endregion } else { #region 调整同浇次的浇次内顺序 var plnSteelforfurnaceNewEntity = list.FirstOrDefault(); if (plnSteelforfurnaceNewEntity != null && plnSteelforfurnaceNewEntity.CastNo != targePlnSteelforfurnace.CastNo) { MessageUtil.ShowError("只能调整同浇次的浇次内顺序"); return; } if (list.Any(p => p.Status != "10")) { MessageUtil.ShowError("只能调整下发的炉计划顺序"); return; } if (MessageUtil.ShowYesNoAndQuestion( string.Format("是否将这{0}个炉次按顺序调整到浇次{1}之前", adjustStove.Count, targePlnSteelforfurnace.Furnaceno) ) == DialogResult.No) return; var listSeq = list.Where(p => p.CastStoveSeq != null).Select(p => (long)p.CastStoveSeq).ToList(); var maxSeq = listSeq.Max() >= castStoveSeq ? listSeq.Max() : castStoveSeq -1; long minSeq; if (listSeq.Min() <= castStoveSeq) { minSeq = listSeq.Min(); } else { minSeq = castStoveSeq; } // 按照浇次seq范围把所需要调整的炉次全查出来, List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforfurnaceEntity", new object[] { targePlnSteelforfurnace.CastNo, minSeq, maxSeq }, Ob); if (listSource == null) { MessageUtil.ShowError("无拖动的数据"); return; } //排除掉选择的炉次号 var furnacenoElse = listSource.Select(p => p.Furnaceno).Where(p => !listFurnaceno.Contains(p)).ToList(); //无意义的排序 选择的炉次拖到自己本身 if (!furnacenoElse.Any()) return; //按照调整后的顺序排序 var List = furnacenoElse.Take((int)(castStoveSeq - minSeq)) .Concat(listFurnaceno) .Concat(furnacenoElse.Skip((int)(castStoveSeq - minSeq))).ToList(); param = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustCastStoveSeq", new object[] { List, targePlnSteelforfurnace.CastNo, minSeq }, Ob); #endregion } if (param != null) { MessageUtil.ShowTips("成功调整"); Query(); }*/ } private void AdjustCcmSeq(SelectedRowsCollection adjustOrder, int targetPoint) { var PlnSteelforOrdNewEntity = ugOrder.Rows[targetPoint].ListObject as PlnSteelforOrdNewEntity; if (PlnSteelforOrdNewEntity == null) { MessageUtil.ShowError("找不到指定的位置"); return; } var list = (from UltraGridRow p in adjustOrder where p.ListObject is PlnSteelforOrdNewEntity select p.ListObject as PlnSteelforOrdNewEntity).ToList(); if (!list.Any()) { MessageUtil.ShowError("无拖动的数据"); return; } if (list.Select(p => p.CastNo).Distinct().Count() != 1) { MessageUtil.ShowError("无法跨浇次调整"); return; } var DataSource = plnSteelforOrdNewEntityBindingSource.DataSource as List; var furnacenos = list.Select(p => p.Furnaceno).Distinct().ToList(); if ((furnacenos.Count == 1) && (furnacenos[0] == PlnSteelforOrdNewEntity.Furnaceno)) { } else { list = DataSource.Where(p => furnacenos.Contains(p.Furnaceno)).OrderBy(p => p.CcmSeq).ToList(); var temlist = DataSource.Where(p => PlnSteelforOrdNewEntity.Furnaceno == p.Furnaceno).ToList(); PlnSteelforOrdNewEntity = temlist.FirstOrDefault(); } if (MessageUtil.ShowYesNoAndQuestion("是否调整选中铸造计划" ) == DialogResult.No) return; var param1 = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.AdjustCcmSeq", new object[] {list.Select(JSONFormat.Format).ToList(), JSONFormat.Format(PlnSteelforOrdNewEntity)}, Ob); if (param1 != null) { MessageUtil.ShowTips("成功调整"); Query(); } } #endregion } }