using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using Core.StlMes.Client.PlnSaleOrd.炼钢计划; using Core.StlMes.Client.PlnSaleOrd.炼钢计划.entity; using CoreFS.CA06; using Infragistics.Win.UltraWinGrid; using Infragistics.Win.UltraWinGrid.ExcelExport; namespace Core.StlMes.Client.PlnSaleOrd { public partial class FrmCraftInfo : FrmBase { public FrmCraftInfo() { InitializeComponent(); this.IsLoadUserView = true; } private List ComMscStdCicEntitys = new DataSourceList(); private int _height = 300; protected override void OnLoad(EventArgs e) { base.OnLoad(e); EntityHelper.ShowGridCaption(ultraGridLgM.DisplayLayout.Bands[0]); SteelHelper.InitGrade(uceGrade, this.ob); EntityHelper.ShowGridCaption(ultraGridLgCic.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ultraGridLgTarCic.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ultraGridLgCcm.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ultraGridLhTem.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ultraGridhJ.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ugGrade.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ugStdCic.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ugStdCic.DisplayLayout.Bands[1]); } public override void ToolBar_Click(object sender, string toolbarKey) { switch (toolbarKey) { case "Query": //查询 if (tabMain.SelectedTab.Index ==0) Query(); else if (tabMain.SelectedTab.Index == 1) QueryStd(); else QueryAll(); break; case "Export": Export(); break; case "Close": //关闭 Close(); break; } } private void Export() { PlanComm.WaitFromOpen(this.Cursor); try { QueryAll(); ulGridToExcel(ugAllChem, "索引码汇总"); } finally { PlanComm.WaitFromColse(this.Cursor); } } private void QueryStd() { ComMscStdCicEntitys = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryMscStd", new object[] { }, ob); List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryAllGrade", new object[] {}, ob); comBaseGradeEntityBindingSource.DataSource = listSource; GridHelper.RefreshAndAutoSize(ugGrade); /* List listSource1 = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryMscStdChem", new object[] { ComMscStdCicEntitys.Select(p=>p.Cic).ToArray()}, ob); ComMscStdCicEntitys.ForEach(p => p.ComMscStdChemEntitys = listSource1.Where(q=>q.Cic==p.Cic).ToList());*/ } private void Query() { List listSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryLgMCondition", new object[] { chcCraftNo.Checked?chcCraftNo.Text:"" ,chcCIC.Checked?uteCIC.Text.Trim():"", chcGrade.Checked? (uceGrade.SelectedIndex == -1 ? "" : uceGrade.SelectedItem.DataValue.ToString()):"" }, ob); CraftLg2MEntityBindingSource.DataSource = listSource; GridHelper.RefreshAndAutoSize(ultraGridLgM); } private void egbLocationInfo_ExpandedStateChanged(object sender, EventArgs e) { if (scMain.Panel2Collapsed) return; if (egbCraftInfo.Expanded) { scMain.SplitterDistance = scMain.Size.Height - _height; } else { _height = scMain.Panel2.Size.Height; scMain.SplitterDistance = scMain.Size.Height - 25; } } private void scMain_SizeChanged(object sender, EventArgs e) { if (scMain.Panel2Collapsed) return; if (egbCraftInfo.Expanded) { scMain.SplitterDistance = scMain.Size.Height - _height; } else { scMain.SplitterDistance = scMain.Size.Height - 25; } } /// /// 查询工艺成分信息 /// private void QueryLgCic(string cicGid) { CraftLg2CicEntityBindingSource.DataSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryLgCic", new object[] { cicGid }, ob); ; // GridHelper.RefreshAndAutoSize(ultraGridLgCic); } /// /// 查询目标工艺成分信息 /// private void QueryLgTarCic(string tarCicGid) { CraftLg2TarCicEntityBindingSource.DataSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryLgTarCic", new object[] { tarCicGid }, ob); // GridHelper.RefreshAndAutoSize(ultraGridLgTarCic); } /// /// 查询CCM信息 /// private void QueryLgCcm(string ccmGid) { CraftLg2CcmEntityBindingSource.DataSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryLgCcm", new object[] { ccmGid }, ob); // GridHelper.RefreshAndAutoSize(ultraGridLgCcm); } /// /// 查询温度信息 /// private void QueryLgtTem(string tepGid) { CraftLg2TemperatureEntitySource.DataSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryLgtTem", new object[] { tepGid }, ob); // GridHelper.RefreshAndAutoSize(ultraGridLhTem); } private void QueryLgHj(string alloyGid) { CraftLg2AlloyEntityBindingSource.DataSource = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryLgtHj", new object[] { alloyGid }, ob); // GridHelper.RefreshAndAutoSize(ultraGridhJ); } private void ultraGridLgM_AfterRowActivate(object sender, EventArgs e) { CraftLg2MEntity CraftLg2MEntity = ultraGridLgM.ActiveRow.ListObject as CraftLg2MEntity; if (CraftLg2MEntity != null) { QueryLgCic(CraftLg2MEntity.CicGid); QueryLgTarCic(CraftLg2MEntity.TarCicGid); QueryLgCcm(CraftLg2MEntity.CcmGid); QueryLgtTem(CraftLg2MEntity.TepGid); QueryLgHj(CraftLg2MEntity.AlloyGid); } } private void ugGrade_AfterRowActivate(object sender, EventArgs e) { ComBaseGradeEntity ComBaseGradeEntity = ugGrade.ActiveRow.ListObject as ComBaseGradeEntity; if(ComBaseGradeEntity==null) return; List list = ComMscStdCicEntitys.Where(p => p.Gradecode == ComBaseGradeEntity.Gradecode).ToList(); if (list.Any()) { List listSource1 = EntityHelper.GetData ("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryMscStdChem", new object[] { list.Select(p => p.Cic).ToArray() }, ob); list.ForEach(p => p.ComMscStdChemEntitys = listSource1.Where(q => q.Cic == p.Cic).ToList()); comMscStdCicEntityBindingSource.DataSource = list; } else { comMscStdCicEntityBindingSource.Clear(); } this.ugStdCic.Rows.ExpandAll(true); // GridHelper.RefreshAndAutoSize(ugStdCic); } private DataTable dtBaseCode = null; private void QueryAll() { if (dtBaseCode == null) { dtBaseCode = ServerHelper.GetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryBaseChem", new object[] {}, ob); for (var i = 0; i < dtBaseCode.Rows.Count; i++) { DataRow row = dtBaseCode.Rows[i]; string ChemCode = row["CHEM_CODE"].ToString(); string ChemName = row["CHEM_NAME"].ToString(); AddNewGroup(ChemCode, ChemName); } } foreach (var ultraGridGroup in ugAllChem.DisplayLayout.Bands[0].Groups) { ultraGridGroup.Hidden = true; } DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.steelMarkingPlan.FrmSteelProcessCard.queryAllMscStdChem", new object[] { }, ob); dt = dt.AsEnumerable().GroupBy(p => new { GRADENAME = p["GRADENAME"].ToString(), CIC = p["CIC"].ToString() }).Select(p => { DataRow dr = dataTable1.NewRow(); dr["GRADENAME"] = p.Key.GRADENAME; dr["CIC"] = p.Key.CIC; foreach (var dataRow in p) { string chemCode = dataRow["CHEM_CODE"].ToString(); dr[chemCode + "MIN"] = dataRow["STDMIN"]; dr[chemCode + "MAX"] = dataRow["STDMAX"]; ugAllChem.DisplayLayout.Bands[0].Groups[chemCode].Hidden = false; } return dr; } ).CopyToDataTable(); GridHelper.CopyDataToDatatable(dt, dataTable1, true); } private void AddNewGroup(string ChemCode, string ChemName) { int ColumsCount = dataTable1.Columns.Count; DataColumn dcMin = new DataColumn(ChemCode + "MIN"); DataColumn dcMax = new DataColumn(ChemCode + "MAX"); dcMin.Caption = "下限"; dcMax.Caption = "上限"; dataTable1.Columns.Add(dcMin); dataTable1.Columns.Add(dcMax); int Groupcount = ugAllChem.DisplayLayout.Bands[0].Groups.Count; UltraGridGroup gp = new UltraGridGroup(); gp.Key = ChemCode; gp.Header.Caption = ChemName; gp.RowLayoutGroupInfo.LabelSpan = 1; gp.RowLayoutGroupInfo.OriginX = 4*(Groupcount + 1); gp.RowLayoutGroupInfo.OriginY = 0; gp.RowLayoutGroupInfo.PreferredLabelSize = new System.Drawing.Size(0, 20); gp.RowLayoutGroupInfo.SpanX = 4; gp.RowLayoutGroupInfo.SpanY = 2; ugAllChem.DisplayLayout.Bands[0].Groups.Add(gp); var columsMin = ugAllChem.DisplayLayout.Bands[0].Columns[ColumsCount]; var columsMax = ugAllChem.DisplayLayout.Bands[0].Columns[ColumsCount + 1]; columsMin.Header.VisiblePosition = ColumsCount; columsMin.RowLayoutColumnInfo.OriginX = 0; columsMin.RowLayoutColumnInfo.OriginY = 0; columsMin.RowLayoutColumnInfo.ParentGroup = gp; columsMin.RowLayoutColumnInfo.PreferredLabelSize = new System.Drawing.Size(0, 20); columsMin.RowLayoutColumnInfo.SpanX = 2; columsMin.RowLayoutColumnInfo.SpanY = 1; columsMax.Header.VisiblePosition = ColumsCount + 1; columsMax.RowLayoutColumnInfo.OriginX = 2; columsMax.RowLayoutColumnInfo.OriginY = 0; columsMax.RowLayoutColumnInfo.ParentGroup = gp; columsMax.RowLayoutColumnInfo.PreferredLabelSize = new System.Drawing.Size(0, 20); columsMax.RowLayoutColumnInfo.SpanX = 2; columsMax.RowLayoutColumnInfo.SpanY = 1; } public void ulGridToExcel(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid, string sFileName) { try { Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter ulGridExt = new Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter(); ulGridExt.CellExported += ultraGridExcelExporter1_CellExported; System.Windows.Forms.SaveFileDialog saveFileDialog1 = new SaveFileDialog(); if (ulGrid.Rows.Count == 0) { MessageBox.Show("没有数据,无法导出!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } saveFileDialog1.FileName = sFileName + DateTime.Now.ToString("yyMMdd"); saveFileDialog1.Filter = "Excel文件(*.xls)|*.xls"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { string sFullName = saveFileDialog1.FileName; ulGridExt.Export(ulGrid, sFullName); ProcessStartInfo p = new ProcessStartInfo(sFullName); p.WorkingDirectory = Path.GetDirectoryName(sFullName); Process.Start(p); } } catch (Exception ex) { MessageBox.Show("导出失败,原因:" + ex.Message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ultraGridExcelExporter1_CellExported(object sender, Infragistics.Win.UltraWinGrid.ExcelExport.CellExportedEventArgs e) { // Get the cell being exporter UltraGridCell cell = e.GridRow.Cells[e.GridColumn]; // Get the Merged cells. UltraGridCell[] mergedCells = cell.GetMergedCells(); // Check to see if there are any merged cells. If not, we don't need to do anything. if (mergedCells != null) { // There are merged cells. Check to see if the cell being exported is the first one. bool isFirstCell = true; foreach (UltraGridCell mergedCell in mergedCells) { if (cell.Row.Index > mergedCell.Row.Index) { // If the cell being exported has a higher index that any of the cells // it is merged with, them it's not the first cell and we should already // have handled the merge. isFirstCell = false; break; } } // If it is the first cell, merge this cell with the cells below it based on the // count of the merged cells. if (isFirstCell) { int rowIndex = e.CurrentRowIndex; int colIndex = e.CurrentColumnIndex; e.CurrentWorksheet.MergedCellsRegions.Add( rowIndex, colIndex, rowIndex + (mergedCells.Length -1), colIndex); } } } } }