using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Format; 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 NPOI.Util; namespace Core.StlMes.Client.PlnSaleOrd.炼钢计划 { public partial class FrmSteelChangeOrderDetail : FrmBase { public FrmSteelChangeOrderDetail() { InitializeComponent(); } public string Furnaceno1 { get; set; } public string Furnaceno2 { get; set; } private void FrmSteelChangeOrderDetail_Load(object sender, EventArgs e) { EntityHelper.ShowGridCaption(ugOrder.DisplayLayout.Bands[0]); BaseHelper.setOtherColumnReadOnly(ugOrder, new[] { "CHC", "ChangeNum", "ChangeWeight" }); EntityHelper.ShowGridCaption(ugOrder.DisplayLayout.Bands[1]); BaseHelper.setOtherColumnReadOnly(ugOrder2, new[] { "CHC", "ChangeNum", "ChangeWeight" }); EntityHelper.ShowGridCaption(ugOrder2.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ugOrder2.DisplayLayout.Bands[1]); //绑定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); //绑定Valuelist 根据实体类值显示 list = SteelManagementHelper.GetValuelistLogic(); SteelManagementHelper.SetGridValuelist(ref ugOrder2, "IfSurplusAlloted", ref list); list = SteelManagementHelper.GetStatus(); SteelManagementHelper.SetGridValuelist(ref ugOrder2, "Status", ref list); list = SteelManagementHelper.GetValuelistLogic(); SteelManagementHelper.SetGridValuelist(ref ugOrder2, "Surplusflag", ref list); list = SteelManagementHelper.GetSurplusType(); SteelManagementHelper.SetGridValuelist(ref ugOrder2, "SurplusType", ref list); list = SteelManagementHelper.GetCastingtype(); SteelManagementHelper.SetGridValuelist(ref ugOrder2, "Castingtype", ref list); list = SteelManagementHelper.GetSurplusflag(); SteelManagementHelper.SetGridValuelist(ref ugOrder2, "GetSurplusflag", ref list); Reresh(); } private void Reresh() { plnSteelforOrdNewEntityBindingSource1.DataSource = GetOrderAndMerge(Furnaceno1); GridHelper.RefreshAndAutoSize(ugOrder); plnSteelforOrdNewEntityBindingSource2.DataSource = GetOrderAndMerge(Furnaceno2); GridHelper.RefreshAndAutoSize(ugOrder2); this.ugOrder.Rows.ExpandAll(true); this.ugOrder2.Rows.ExpandAll(true); } private List GetOrderAndMerge(string Furnaceno) { List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforOrdEntityByfurnaceno", new object[] { Furnaceno }, ob); listSource = listSource.Where(p => p.SurplusType != "2" && p.SurplusType != "3").ToList(); List MergeNo = listSource.Where(p => !string.IsNullOrEmpty(p.MergeNo)).Select(p => p.MergeNo).Distinct().ToList(); if (MergeNo.Any()) { List listSource2 = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.SelectPlnSteelforMergeEntity", new object[] {MergeNo}, ob); foreach (PlnSteelforOrdNewEntityAndMerge data in listSource.Where(p => !string.IsNullOrEmpty(p.MergeNo))) { data.MergeList = listSource2.Where(p => p.MergeNo == data.MergeNo).Select(p => { p.Furnaceno = data.Furnaceno; p.Sequenceno = data.Sequenceno; return p; }).ToList(); } } return listSource; } private void ugOrder_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { try { (sender as UltraGrid).UpdateData(); if (e.Cell.Column.Key.Equals("ChangeNum")) { if (e.Cell.Value == null || string.IsNullOrEmpty(e.Cell.Value.ToString())) e.Cell.Row.Cells["ChangeWeight"].Value = null; else if (long.Parse(e.Cell.Value.ToString()) >=long.Parse(e.Cell.Row.Cells["TotMumM"].Value.ToString())) { e.Cell.Row.Cells["ChangeNum"].Value = e.Cell.Row.Cells["TotMumM"].Value; 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["WeightGpOne"].Value.ToString()) * double.Parse(e.Cell.Row.Cells["CutNumGp"].Value.ToString()); } } if (e.Cell.Column.Key.Equals("ChangeWeight")) { if (e.Cell.Value == null || string.IsNullOrEmpty(e.Cell.Value.ToString())) e.Cell.Row.Cells["ChangeNum"].Value = null; else if (double.Parse(e.Cell.Value.ToString()) - double.Parse(e.Cell.Row.Cells["TotWeightM"].Value.ToString()) <0.001) { e.Cell.Row.Cells["ChangeNum"].Value = e.Cell.Row.Cells["TotMumM"].Value; e.Cell.Row.Cells["ChangeWeight"].Value = e.Cell.Row.Cells["TotWeightM"].Value; } else { e.Cell.Row.Cells["ChangeNum"].Value = Math.Ceiling(double.Parse(e.Cell.Value.ToString()) / (double.Parse(e.Cell.Row.Cells["WeightGpOne"].Value.ToString()) * double.Parse(e.Cell.Row.Cells["CutNumGp"].Value.ToString()))); } } if (e.Cell.Row.HasParent()) { long sum = e.Cell.Row.ParentCollection.Select(p => p.Cells["ChangeNum"].Value == null || string.IsNullOrEmpty(p.Cells["ChangeNum"].Value.ToString()) ? 0 : long.Parse(p.Cells["ChangeNum"].Value.ToString())).Sum(); if (sum <= 0) { e.Cell.Row.ParentRow.Cells["ChangeNum"].Value = null; e.Cell.Row.ParentRow.Cells["ChangeWeight"].Value = null; } else { e.Cell.Row.ParentRow.Cells["ChangeNum"].Value = sum; e.Cell.Row.ParentRow.Cells["ChangeWeight"].Value = sum * double.Parse(e.Cell.Row.Cells["WeightGpOne"].Value.ToString()) * double.Parse(e.Cell.Row.Cells["CutNumGp"].Value.ToString()); } } } catch (Exception) { } try { if (e.Cell.Row.HasParent()) { e.Cell.Row.ParentRow.Cells["CHC"].Value = e.Cell.Row.ParentRow.Cells["ChangeNum"].Value != null && !string.IsNullOrEmpty( e.Cell.Row.ParentRow.Cells["ChangeNum"].Value.ToString ()); } else { e.Cell.Row.Cells["CHC"].Value = e.Cell.Row.Cells["ChangeNum"].Value != null && !string.IsNullOrEmpty( e.Cell.Row.Cells["ChangeNum"].Value.ToString ()); } } catch (Exception) { } } private void ugOrder_InitializeRow(object sender, InitializeRowEventArgs e) { var PlnSteelforOrdNewEntityAndMerge = e.Row.ListObject as PlnSteelforOrdNewEntityAndMerge; if (PlnSteelforOrdNewEntityAndMerge != null && PlnSteelforOrdNewEntityAndMerge.MergeList!=null && PlnSteelforOrdNewEntityAndMerge.MergeList.Any()) { e.Row.Cells["ChangeNum"].Activation = Activation.ActivateOnly; e.Row.Cells["ChangeNum"].IgnoreRowColActivation = true; e.Row.Cells["ChangeNum"].Appearance.ResetBackColor(); e.Row.Cells["ChangeWeight"].Activation = Activation.ActivateOnly; e.Row.Cells["ChangeWeight"].IgnoreRowColActivation = true; e.Row.Cells["ChangeWeight"].Appearance.ResetBackColor(); } } private void btnDown_Click(object sender, EventArgs e) { Change(ugOrder, ugOrder2); } private void btnUp_Click(object sender, EventArgs e) { Change(ugOrder2, ugOrder); } private void Change(UltraGrid ug1, UltraGrid ug2) { var rows = ug1.Rows.Where(p => (bool) p.Cells["CHC"].Value).ToList(); if (rows.Count <= 0) { MessageUtil.ShowWarning("请选择需要转分切订单!"); return; } if (rows.Any(p => p.Cells["ChangeNum"].Value == null || p.Cells["ChangeWeight"].Value == null || int.Parse(p.Cells["ChangeNum"].Value.ToString()) == 0 || double.Parse(p.Cells["ChangeWeight"].Value.ToString()) < 0.0001)) { MessageUtil.ShowWarning("请选择需要转分切订单的支数或者重量!"); return; } BindingSource bs1 = ug1.DataSource as BindingSource; BindingSource bs2 = ug2.DataSource as BindingSource; if (bs1 == null || bs2 == null) { MessageUtil.ShowWarning("数据源异常!"); return; } List OriginSourceEntity = bs1.DataSource as List; List TargetSourceEntity = bs2.DataSource as List; if(OriginSourceEntity==null || TargetSourceEntity==null) { MessageUtil.ShowWarning("数据源异常!"); return; } foreach (UltraGridRow row in rows) { row.Cells["CHC"].Value = false; PlnSteelforOrdNewEntityAndMerge PlnSteelforOrdNewEntityAndMerge = row.ListObject as PlnSteelforOrdNewEntityAndMerge; PlnSteelforOrdNewEntityAndMerge NeedChange = new PlnSteelforOrdNewEntityAndMerge(); if(PlnSteelforOrdNewEntityAndMerge==null) continue; int Num =row.Cells["ChangeNum"].Value==null?0: int.Parse(row.Cells["ChangeNum"].Value.ToString()); int ToltalNum = (int) PlnSteelforOrdNewEntityAndMerge.TotMumM; double ToltalWeight = (double)PlnSteelforOrdNewEntityAndMerge.TotMumM; double Weight = row.Cells["ChangeWeight"].Value == null ? 0 : Num == ToltalNum ? ToltalWeight : (Num * (double)PlnSteelforOrdNewEntityAndMerge.WeightM); row.Cells["ChangeNum"].Value = null; row.Cells["ChangeWeight"].Value = null; if (Num> ToltalNum) { MessageUtil.ShowWarning("输入的转分切支数需要小于总支数!"); return; } else if (Num ==ToltalNum) { NeedChange = PlnSteelforOrdNewEntityAndMerge; OriginSourceEntity.Remove(PlnSteelforOrdNewEntityAndMerge); } else { NeedChange = PlnSteelforOrdNewEntityAndMerge.Clone() as PlnSteelforOrdNewEntityAndMerge; if (row.ChildBands[0].Rows.Any()) { List newMergeList = new List(); List oldMergeList = new List(); foreach (UltraGridRow childRow in row.GetChild(ChildRow.First).ParentCollection) { PlnSteelforMergeEntity PlnSteelforMergeEntity = childRow.ListObject as PlnSteelforMergeEntity; if(PlnSteelforMergeEntity==null) continue; int childNum = childRow.Cells["ChangeNum"].Value == null || string.IsNullOrEmpty(childRow.Cells["ChangeNum"].Value.ToString())? 0 : int.Parse(childRow.Cells["ChangeNum"].Value.ToString()); int childToltalNum = (int)PlnSteelforMergeEntity.TotMumM; double childToltaWeight = (double)PlnSteelforMergeEntity.TotWeightM; double childWeight = childRow.Cells["ChangeWeight"].Value == null || string.IsNullOrEmpty(childRow.Cells["ChangeWeight"].Value.ToString()) ? 0 : childNum == childToltalNum ? childToltaWeight : (childNum * (double)PlnSteelforMergeEntity.WeightGpOne * (double)PlnSteelforMergeEntity.CutNumGp); childRow.Cells["ChangeNum"].Value =null; childRow.Cells["ChangeWeight"].Value = null; PlnSteelforMergeEntity.TotMumM = childToltalNum - childNum; PlnSteelforMergeEntity.TotWeightM = (childToltaWeight - childWeight); PlnSteelforMergeEntity PlnSteelforMergeEntityClone = PlnSteelforMergeEntity.Clone() as PlnSteelforMergeEntity; PlnSteelforMergeEntityClone.TotMumM = childNum; PlnSteelforMergeEntityClone.TotWeightM = childWeight; if(PlnSteelforMergeEntity.TotMumM>0) oldMergeList.Add(PlnSteelforMergeEntity); if(PlnSteelforMergeEntityClone.TotMumM>0) newMergeList.Add(PlnSteelforMergeEntityClone); } NeedChange.MergeList = newMergeList; PlnSteelforOrdNewEntityAndMerge.MergeList = oldMergeList; PlnSteelforOrdNewEntityAndMerge.Update(); NeedChange.Update(); if (PlnSteelforOrdNewEntityAndMerge.MergeList != null && PlnSteelforOrdNewEntityAndMerge.MergeList.Count > 0 && NeedChange.MergeList != null && NeedChange.MergeList.Count > 0) { NeedChange.MergeNo = "NEW"; } } else { NeedChange.TotMumM = Num; NeedChange.TotWeightM = Weight; PlnSteelforOrdNewEntityAndMerge.TotMumM = PlnSteelforOrdNewEntityAndMerge.TotMumM - Num; PlnSteelforOrdNewEntityAndMerge.TotWeightM = PlnSteelforOrdNewEntityAndMerge.TotWeightM - Weight; if (PlnSteelforOrdNewEntityAndMerge.TotMumM==0) OriginSourceEntity.Remove(PlnSteelforOrdNewEntityAndMerge); } } bool bMerge = false; if (NeedChange.Surplusflag == "0") { if (TargetSourceEntity.Any( p => p.LenGpSingle == NeedChange.LenGpSingle && p.LengthM == NeedChange.LengthM && p.GowhereName == NeedChange.GowhereName)) { bMerge = MessageUtil.ShowYesNoAndTips("有同定尺,同去向订单,是否合并") == DialogResult.Yes; } if (bMerge) { List plnSteelforOrdNewEntityAndMergeList = TargetSourceEntity.Where(p => p.LenGpSingle == NeedChange.LenGpSingle && p.LengthM == NeedChange.LengthM && p.GowhereName == NeedChange.GowhereName).ToList(); if (plnSteelforOrdNewEntityAndMergeList.Any()) { var plnSteelforOrdNewEntityAndMerge1 = plnSteelforOrdNewEntityAndMergeList.FirstOrDefault( p => p.ProPlanId == NeedChange.ProPlanId && p.GxPlanNo == NeedChange.GxPlanNo); if (plnSteelforOrdNewEntityAndMerge1 == null) { plnSteelforOrdNewEntityAndMerge1 = plnSteelforOrdNewEntityAndMergeList.FirstOrDefault( p => p.MergeList != null && p.MergeList.Any(q => q.ProPlanId == NeedChange.ProPlanId && q.GxPlanNo == NeedChange.GxPlanNo)); if (plnSteelforOrdNewEntityAndMerge1 == null) { plnSteelforOrdNewEntityAndMerge1 = plnSteelforOrdNewEntityAndMergeList.FirstOrDefault(); } } if (plnSteelforOrdNewEntityAndMerge1 != null) plnSteelforOrdNewEntityAndMerge1.Merge(NeedChange); } } else { TargetSourceEntity.Add(NeedChange); } } else { TargetSourceEntity.Add(NeedChange); } } bs1.ResetBindings(false); bs2.ResetBindings(false); GridHelper.RefreshAndAutoSize(ug1); GridHelper.RefreshAndAutoSize(ug2); ug1.Rows.ExpandAll(true); ug2.Rows.ExpandAll(true); //plnSteelforOrdNewEntityBindingSource1.DataSource = OriginSourceEntity; /* bs1.Clear(); bs1.DataSource = OriginSourceEntity; bs2.DataSource = TargetSourceEntity;*/ } private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "Refresh": // ButtonTool Reresh(); break; case "Close": // ButtonTool DialogResult = DialogResult.Cancel; // Place code here break; case "Query": // ButtonTool if (MessageUtil.ShowYesNoAndQuestion("是否确认转分切!") == DialogResult.No) return; List OriginSourceEntity = plnSteelforOrdNewEntityBindingSource1.DataSource as List; List TargetSourceEntity = plnSteelforOrdNewEntityBindingSource2.DataSource as List; OriginSourceEntity.ForEach(p=>p.UpdateSaveData()); TargetSourceEntity.ForEach(p=>p.UpdateSaveData()); var param = SteelHelper.SetData( "com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelManagement.ChangeOrderPlan", new object[] { Furnaceno1, OriginSourceEntity,Furnaceno2, TargetSourceEntity , UserInfo.GetUserName() }, ob); if (param != null) { DialogResult = DialogResult.OK; } break; } } } }