using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Windows.Forms; using Core.StlMes.Client.LgResMgt.Mcms.entity; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using NPOI.SS.Formula.Functions; namespace Core.StlMes.Client.LgResMgt.Mcms { public partial class MatInfo : UserControl { private OpeBase ob; private static readonly string _path = Environment.CurrentDirectory + "\\data\\SerialPort.xml"; private bool isLoading = true; public MatInfo() { InitializeComponent(); cmmWeightRecordEntityFullBindingSource.DataSource = new List { new CmmWeightRecordEntityFull() }; cmmWeightMatEntityBindingSource.DataSource = new List { new CmmWeightMatEntity() }; } private string _matName; public string MatName { get { var list = cmmWeightRecordEntityFullBindingSource.DataSource as List; if (list == null || !list.Any()) list = new List() { new CmmWeightRecordEntityFull() }; _matName = list[0].MatName; return _matName; } set { _matName = value; cmmWeightRecordEntityFullBindingSource.DataSource = new List() { new CmmWeightRecordEntityFull() { MatName = value } }; } } public string Key { get; set; } public bool AddNew { get { return matGrid.DisplayLayout.Override.AllowAddNew == AllowAddNew.TemplateOnBottom; } set { matGrid.DisplayLayout.Override.AllowAddNew = value ? AllowAddNew.TemplateOnBottom : AllowAddNew.Default; foreach (var ultraGridColumn in matGrid.DisplayLayout.Bands[0].Columns) { ultraGridColumn.CellActivation = value ? Activation.AllowEdit : Activation.ActivateOnly; } /* foreach (var ultraGridColumn in ugData.DisplayLayout.Bands[0].Columns) { /* if (ultraGridColumn.Key == "MatName" || ultraGridColumn.Key == "Memo") {#1# ultraGridColumn.CellActivation = Activation.AllowEdit; /* } else { ultraGridColumn.CellActivation = value ? Activation.AllowEdit : Activation.ActivateOnly; if (!value) ultraGridColumn.EditorComponent = null; }#1# }*/ } } public bool EnableUpdateInfo { get { return ugData.DisplayLayout.Bands[0].Columns[0].CellActivation == Activation.AllowEdit; } set { foreach (var ultraGridColumn in ugData.DisplayLayout.Bands[0].Columns) { ultraGridColumn.CellActivation = value ? Activation.AllowEdit : Activation.ActivateOnly; if (!value) ultraGridColumn.EditorComponent = null; } } } public bool EnableUpdateWt { get { return matGrid.DisplayLayout.Bands[0].Columns["ActWeight"].CellActivation == Activation.AllowEdit; } set { matGrid.DisplayLayout.Bands[0].Columns["ActWeight"].CellActivation = value ? Activation.AllowEdit : Activation.ActivateOnly; } } public string ColumnsM { get { string columns = ""; foreach (var ultraGridColumn in ugData.DisplayLayout.Bands[0].Columns) { if (ultraGridColumn.Hidden) continue; columns = (string.IsNullOrWhiteSpace(columns) ? "" : columns + ",") + ultraGridColumn.Key; } return columns; } set { bool hide = true; string[] list = value.Split(','); foreach (var ultraGridColumn in ugData.DisplayLayout.Bands[0].Columns) { ultraGridColumn.Hidden = !list.Contains(ultraGridColumn.Key); if (!ultraGridColumn.Hidden) hide = false; } splitContainer1.Panel1.Visible = !hide; } } public string ColumnsC { get { string columns = ""; foreach (var ultraGridColumn in matGrid.DisplayLayout.Bands[0].Columns) { if (ultraGridColumn.Hidden) continue; columns = (string.IsNullOrWhiteSpace(columns) ? "" : columns + ",") + ultraGridColumn.Key; } return columns; } set { string[] list = value.Split(','); foreach (var ultraGridColumn in matGrid.DisplayLayout.Bands[0].Columns) { ultraGridColumn.Hidden = !list.Contains(ultraGridColumn.Key); } } } public void ini(OpeBase _ob) { ugData.DisplayLayout.Override.HeaderClickAction = HeaderClickAction.Default; ugData.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False; matGrid.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False; matGrid.DisplayLayout.Override.HeaderClickAction = HeaderClickAction.Default; ugData.DisplayLayout.Override.HeaderAppearance.FontData.SizeInPoints = 11; matGrid.DisplayLayout.Override.HeaderAppearance.FontData.SizeInPoints = 11; this.ob = _ob; } public void Show() { isLoading = false; splitContainer1.SplitterDistance = XmlHelper.GetXmlData(_path, "MatInfoSplitContainer1" + Key, splitContainer1.SplitterDistance); } public void iniMatName(List datas) { uceMatName.DataSource = datas.Where(p => p.RecordType == "2").Select(p => p.RecordValue).Distinct().ToList(); uceProducName.DataSource = datas.Where(p => p.RecordType == "7").Select(p => p.RecordValue).Distinct().ToList(); uceSteel.DataSource = datas.Where(p => p.RecordType == "8").Select(p => p.RecordValue).Distinct().ToList(); uceGrade.DataSource = datas.Where(p => p.RecordType == "9").Select(p => p.RecordValue).Distinct().ToList(); } private string _projectName = ""; public void SetDefault(CmmWeightRecordEntityFull cmmWeightRecordEntityFull, string addProject = "", bool reviewColumns = false) { if (cmmWeightRecordEntityFull == null) cmmWeightRecordEntityFull = new CmmWeightRecordEntityFull() { MatName = _matName }; if (reviewColumns) { ReloadColumns(cmmWeightRecordEntityFull.RecordType); } CmmWeightRecordEntityFull oldInfo = GetData(); if (oldInfo != null && !string.IsNullOrEmpty(oldInfo.Memo)){ cmmWeightRecordEntityFull.Memo = oldInfo.Memo; } cmmWeightRecordEntityFullBindingSource.DataSource = new List { cmmWeightRecordEntityFull }; if (!string.IsNullOrWhiteSpace(addProject)) { if (cmmWeightRecordEntityFull.MatInfos != null && cmmWeightRecordEntityFull.MatInfos.Count > 1) { List list = matGrid.Rows.Where(p => { foreach (var ultraGridCell in p.Cells) { if (ultraGridCell.Column.Hidden) continue; if ("" != ultraGridCell.Value.ToString2()) return true; } return false; } ).Select(p => p.ListObject as CmmWeightMatEntity).ToList(); List data = new List(); data.AddRange(list); data.AddRange(cmmWeightRecordEntityFull.MatInfos.Select(Clone).ToList()); cmmWeightMatEntityBindingSource.DataSource = data; } else { CmmWeightMatEntity data = new CmmWeightMatEntity(); if (matGrid.ActiveRow == null) { cmmWeightMatEntityBindingSource.DataSource = cmmWeightRecordEntityFull.MatInfos; } else { if (cmmWeightRecordEntityFull.MatInfos != null && cmmWeightRecordEntityFull.MatInfos.Any()) { data = Clone(cmmWeightRecordEntityFull.MatInfos[0]); } List list = cmmWeightMatEntityBindingSource.DataSource as List; list[matGrid.ActiveRow.Index] = data; cmmWeightMatEntityBindingSource.ResetBindings(false); } } } else { if ((cmmWeightRecordEntityFull.MatInfos != null) && cmmWeightRecordEntityFull.MatInfos.Any()) cmmWeightMatEntityBindingSource.DataSource = cmmWeightRecordEntityFull.MatInfos.Select(Clone).ToList(); else cmmWeightMatEntityBindingSource.DataSource = new List { new CmmWeightMatEntity() }; } _projectName = addProject; matGrid.UpdateData(); matGrid.Update(); } public void ReloadColumns(string RecordType) { if (RecordType == "102") { ColumnsC = "ProOrderNo,Steelname,ActDimater,ActLenTemp,ActCount,ActWeight,JudgeStoveNoOld"; } else if (RecordType == "103") { ColumnsC = "ProOrderNo,JudgeStoveNo,Producname,Steelname,ActDimater,ActHeight,ActLenTemp,ActCount,ActWeight"; } else if (RecordType == "104") { ColumnsC = "SpecName,ActCount,SpecNo"; } else if (RecordType == "105") { ColumnsC = "SpecName,ActCount,Memo"; } else if (RecordType == "106") { ColumnsC = "SpecName,ActCount,Memo"; } else if (RecordType == "107") { ColumnsC = "JudgeStoveNo,Producname,Steelname,ActDimater,ActHeight,ActCount,Memo"; } else if (RecordType == "108") { ColumnsC = "JudgeStoveNo,Producname,Steelname,ActDimater,ActHeight,ActLenTemp,ActCount,ActWei" + "ght"; } else if (RecordType == "109") { ColumnsC = "JudgeStoveNo,Steelname,ActDimater,ActLenTemp,ActCount,ActWeight"; } else if (RecordType == "110") { ColumnsC = "ProOrderNo,Steelname,ActDimater,ActLenTemp,ActCount,ActWeight,JudgeStoveNoOld"; } else if (RecordType == "201" || RecordType == "999") { ColumnsC = "ProOrderNo,JudgeStoveNo,Producname,Gradename,Steelname,ActDimater,ActHeight,ActLenTemp,ActCount,ActWeight,StorageName"; } else if (RecordType == "202") { ColumnsC = "ProOrderNo,JudgeStoveNo,Producname,Steelname,ActDimater,ActHeight,ActCount,Memo"; } else if (RecordType == "203") { ColumnsC = "SpecName,ActCount,Memo"; } else if (RecordType == "204") { ColumnsC = "JudgeStoveNo,Producname,Steelname,ActDimater,ActHeight,ActCount,Memo"; } else if (RecordType == "205") { ColumnsC = "JudgeStoveNo,Producname,Steelname,ActDimater,ActHeight,ActLenTemp,ActCount,ActWeight"; } else if (RecordType == "206") { ColumnsC = "JudgeStoveNo,Steelname,ActDimater,ActLenTemp,ActCount,ActWeight"; } else if (RecordType == "200") { ColumnsC = "ProOrderNo,JudgeStoveNo,Producname,Steelname,ActDimater,ActHeight,ActLenTemp,ActCount,ActWeight"; } else if (RecordType == "209") { ColumnsC = "SpecName,ActCount,Memo"; } else if (RecordType == "208") { ColumnsC = "JudgeStoveNo,Producname,Steelname,ActDimater,ActHeight,ActCount,Memo"; } } public void UpdateData(CmmWeightRecordEntityFull cmmWeightRecordEntityFull) { ugData.Rows[0].Cells["ReceiveName"].Value = cmmWeightRecordEntityFull.ReceiveName; ugData.Rows[0].Cells["ShippersName"].Value = cmmWeightRecordEntityFull.ShippersName; ugData.Rows[0].Cells["OrderName"].Value = cmmWeightRecordEntityFull.OrderName; ugData.Rows[0].Cells["TransportName"].Value = cmmWeightRecordEntityFull.TransportName; ugData.Rows[0].Cells["RecordNumber"].Value = cmmWeightRecordEntityFull.RecordNumber; ugData.Rows[0].Cells["MEMO"].Value = cmmWeightRecordEntityFull.Memo; ugData.Rows[0].Cells["MatName"].Value = cmmWeightRecordEntityFull.MatName; cmmWeightMatEntityBindingSource.DataSource = cmmWeightRecordEntityFull.MatInfos; } public CmmWeightMatEntity Clone(CmmWeightMatEntity data) { using (var memStream = new MemoryStream()) { var binaryFormatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone)); binaryFormatter.Serialize(memStream, data); memStream.Seek(0, SeekOrigin.Begin); return binaryFormatter.Deserialize(memStream) as CmmWeightMatEntity; } } public void SetWt(decimal wt) { matGrid.UpdateData(); matGrid.Update(); if(matGrid.DisplayLayout.Bands[0].Columns["ActWeight"].Hidden == true ) return; List data = cmmWeightMatEntityBindingSource.DataSource as List; if (data == null || !data.Any()) { data = new List(){new CmmWeightMatEntity()}; } data[0].ActWeight = wt; cmmWeightMatEntityBindingSource.DataSource = data; matGrid.UpdateData(); matGrid.Update(); matGrid.Refresh(); } private void ugData_CellDataError(object sender, CellDataErrorEventArgs e) { } public void DeleteRow() { if (matGrid.ActiveRow == null) return; matGrid.ActiveRow.Delete(false); if (matGrid.Rows.Count == 0) cmmWeightMatEntityBindingSource.DataSource = new List { new CmmWeightMatEntity() }; matGrid.UpdateData(); } public void Clear() { cmmWeightMatEntityBindingSource.DataSource = new List { new CmmWeightMatEntity() }; matGrid.UpdateData(); cmmWeightRecordEntityFullBindingSource.DataSource = new List { new CmmWeightRecordEntityFull(){MatName = _matName} }; ugData.UpdateData(); } public CmmWeightRecordEntityFull GetData() { ugData.UpdateData(); var datas = cmmWeightRecordEntityFullBindingSource.DataSource as List; if ((datas == null) || !datas.Any()) datas = new List {new CmmWeightRecordEntityFull()}; var data = datas[0]; if (matGrid.Rows.Count > 0) data.MatInfos = matGrid.Rows.Where(p => { foreach (var ultraGridCell in p.Cells) { if (ultraGridCell.Column.Hidden) continue; if ("" != ultraGridCell.Value.ToString2()) return true; } return false; } ).Select(p => p.ListObject as CmmWeightMatEntity).ToList(); else data.MatInfos = null; return data; } private void delete_EditorButtonClick(object sender, Infragistics.Win.UltraWinEditors.EditorButtonEventArgs e) { if (ugData.ActiveCell.Activation != Activation.AllowEdit || ugData.ActiveCell.Column.CellActivation != Activation.AllowEdit) return; using (var NameSel = new NameSelect(ob, ugData.ActiveCell.Column.Key,ugData.ActiveCell.Column.Header.Caption)) { if (NameSel.ShowDialog() == DialogResult.OK) { ugData.ActiveCell.Value = NameSel.SelectRow.RecordValue; } } } private void matGrid_CellChange(object sender, CellEventArgs e) { if (e.Cell.Column.Key == "ActCount") { List list = cmmWeightRecordEntityFullBindingSource.DataSource as List; if (list == null || !list.Any()) { list = new List(){new CmmWeightRecordEntityFull()}; } list[0].RecordNumber = matGrid.Rows.Where(p => { int a; return int.TryParse(p.Cells["ActCount"].Text.ToString(), out a); }).Select(p => int.Parse(p.Cells["ActCount"].Text.ToString())).Sum(); cmmWeightRecordEntityFullBindingSource.DataSource = list; ugData.UpdateData(); ugData.Update(); ugData.Refresh(); } } private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e) { if (isLoading) return; XmlHelper.SetXmlData(_path, "MatInfoSplitContainer1" + Key, splitContainer1.SplitterDistance); } private void matGrid_InitializeTemplateAddRow(object sender, InitializeTemplateAddRowEventArgs e) { } private void matGrid_AfterRowEditTemplateClosed(object sender, AfterRowEditTemplateClosedEventArgs e) { } private void matGrid_ClickCell(object sender, ClickCellEventArgs e) { if (matGrid.ActiveRow.IsAddRow) { int a = matGrid.ActiveCell.Row.Index; int b = matGrid.ActiveCell.Column.Index; matGrid.Rows.Band.AddNew(); matGrid.Rows[a].Cells[b].Activated = true; matGrid.PerformAction(UltraGridAction.EnterEditMode); } } private void matGrid_BeforeRowEditTemplateDisplayed(object sender, BeforeRowEditTemplateDisplayedEventArgs e) { } } }