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.YdmStuffManage.Entity; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Core.StlMes.Client.YdmStuffManage { public partial class FrmMatGroupManage : FrmBase { public FrmMatGroupManage() { InitializeComponent(); } private void FrmMatGroupManage_Load(object sender, EventArgs e) { EntityHelper.ShowGridCaption(ultraGrid1.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ultraGrid2.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ultraGrid2.DisplayLayout.Bands[1]); } /// /// 重写基类方法 /// /// /// public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "Query": if (!CheckQuery()) return; doQueryData(); break; case"MatGroup": matGroupData(); break; case"cutGpNum": cutGpNum(); break; case"QueryGroup": doQueryGroup(); break; case "Split": doSplit(); break; case "Export": ExportData(); break; case "Close": close(); break; } } public static List UltraGridGetChooseRows(UltraGrid ultraGrid, string columnName = "CHK") { ultraGrid.UpdateData(); List list = new List(); RowsCollection rows = ultraGrid.Rows; foreach (var item in rows) { try { if (Convert.ToBoolean(item.Cells[columnName].Value) == true && item.Hidden == false) { list.Add(item.ListObject as MatGpMEntity); } } catch { } } return list; } /// /// 导出 /// private void ExportData() { if (this.ultraTabControl1.Tabs[0].Active) { GridHelper.ulGridToExcel(ultraGrid1, "库存信息"); } else if (this.ultraTabControl1.Tabs[1].Active) { GridHelper.ulGridToExcel(ultraGrid2, "组炉实绩"); } } //拆坯 private void doSplit() { List list = UltraGridGetChooseRows(this.ultraGrid1); if (list.Count == 0) { MessageUtil.ShowTips("请选择需要拆分的数据!"); return; } string judgeStoveNo = list[0].JudgeStoveNo; foreach (var item in list) { if(!judgeStoveNo.Equals(item.JudgeStoveNo)) { MessageUtil.ShowTips("不同炉号不能拆坯!"); return; } } FrmMatGroupManage_Split head = new FrmMatGroupManage_Split(list); head.ob = this.ob; head.ShowDialog(); doQueryData(); } /// /// 拆坯 /// private void cutGpNum() { } /// /// 查询组炉实绩 /// private void doQueryGroup() { string stoveNo = ""; string judgeNo = ""; string gradeCode = ""; string dimter = ""; string startTime = ""; string endTime = ""; if (chkStoveNo.Checked && txtStoveNo.Text.Trim() != "") { stoveNo = this.txtStoveNo.Text.Trim(); } if (chkjudgeNo.Checked && txtjudgeNo.Text.Trim() != "") { judgeNo = this.txtjudgeNo.Text.Trim(); } if (chkGrade.Checked && txtGrade.Tag.ToString() != "") { gradeCode = txtGrade.Text.ToString();//txtGrade.Tag.ToString(); } if (chkDimter.Checked && txtDimter.Text.Trim() != "") { if (txtDimter.Text.Trim().Contains(".")) { int dex = txtDimter.Text.Trim().IndexOf("."); dimter = txtDimter.Text.Trim().Substring(0, dex); } else { dimter = txtDimter.Text.Trim(); } } if (ultraIsLoad.Checked) { startTime = StartTime.Value.ToString(); endTime = EndTime.Value.ToString(); } ArrayList parmList = new ArrayList(); parmList.Add(stoveNo); parmList.Add(judgeNo); parmList.Add(gradeCode); parmList.Add(dimter); parmList.Add(startTime); parmList.Add(endTime); string[] L1 = new string[] { "MatGroupNo" }; string[] L2 = new string[] { "MatGroupNo" }; List listSource = EntityHelper.GetData( "Core.LgMes.Server.Stuffmanage.FrmMatGroupManage.doQueryMatGroup", new object[] { parmList,this.CustomInfo }, this.ob); List listSource1 = EntityHelper.GetData( "Core.LgMes.Server.Stuffmanage.FrmMatGroupManage.doQueryMatGroupData", new object[] { parmList,this.CustomInfo }, this.ob); EntityHelper.AddEntityRelation(listSource, listSource1, L1, L2); MatGpGroupHistoryEntity1bindingSource.DataSource = listSource; } /// /// 查询余材库存信息 /// private void doQueryData() { string stoveNo = ""; string judgeNo = ""; string gradeCode = ""; string dimter = ""; string startTime = ""; string endTime = ""; if(chkStoveNo.Checked && txtStoveNo.Text.Trim() != "") { stoveNo = this.txtStoveNo.Text.Trim(); } if (chkjudgeNo.Checked && txtjudgeNo.Text.Trim() != "") { judgeNo = this.txtjudgeNo.Text.Trim(); } if(chkGrade.Checked && txtGrade.Tag.ToString() != "") { gradeCode = txtGrade.Text.ToString();//txtGrade.Tag.ToString(); } if(chkDimter.Checked && txtDimter.Text.Trim() != "") { if(txtDimter.Text.Trim().Contains(".")) { int dex = txtDimter.Text.Trim().IndexOf("."); dimter = txtDimter.Text.Trim().Substring(0,dex); } else { dimter = txtDimter.Text.Trim(); } } if (ultraIsLoad.Checked) { startTime = StartTime.Value.ToString(); endTime = EndTime.Value.ToString(); } ArrayList parmList = new ArrayList(); parmList.Add(stoveNo); parmList.Add(judgeNo); parmList.Add(gradeCode); parmList.Add(dimter); parmList.Add(startTime); parmList.Add(endTime); List listSource = EntityHelper.GetData( "Core.LgMes.Server.Stuffmanage.FrmMatGroupManage.doQueryMatData", new object[] { parmList,this.CustomInfo }, this.ob); MatGpMEntitybindingSource.DataSource = listSource; } /// /// 组炉 /// private void matGroupData() { this.ultraGrid1.UpdateData(); IQueryable checkMagRows = this.ultraGrid1.Rows.AsQueryable().Where(" CHK = 'True'"); if(checkMagRows.Count()== 0) { MessageUtil.ShowTips("请选择需要组炉的库存信息"); return; } IQueryable magRows = this.ultraGrid1.Rows.AsQueryable().Where(" CHK1 = 'True'"); if (magRows.Count() == 0 || magRows.Count() >1) { MessageUtil.ShowTips("组炉时主炉号信息只允许选择一条"); return; } if (this.CustomInfo.Equals("120501")) { if (txt_newJugeNo.Text.Trim() == "") { MessageUtil.ShowTips("组炉时请输入新判定炉号!"); return; } } int gpGrade = checkMagRows.Select(a=>a.Cells["GradeName"].Text).Distinct().Count(); if (gpGrade > 1) { MessageUtil.ShowTips("钢种不一致,不允许组炉!"); return; } int gpDiamter = checkMagRows.Select(a => a.Cells["Dimater"].Text).Distinct().Count(); if (gpDiamter > 1) { MessageUtil.ShowTips("直径不一致,不允许组炉!"); return; } //天淮不要求单倍长度一致 if (this.CustomInfo.Equals("120501")) { int gpFixLen = checkMagRows.Select(a => a.Cells["FixLen"].Text).Distinct().Count(); if (gpFixLen > 1) { MessageUtil.ShowTips("单倍长度不一致,不允许组炉!"); return; } } int isDear = checkMagRows.Select(a => a.Cells["IsDealer"].Text).Distinct().Count(); if (isDear > 1) { MessageUtil.ShowTips("坯料用途不一致,不允许组炉!"); return; } int backCount = checkMagRows.GroupBy(a => a.Cells["BackFlag"].Value.ToString() == "回炉坯").Count(); if (backCount > 1) { MessageUtil.ShowTips("回炉坯只能和回炉坯组炉!"); return; } //主炉号信息 ArrayList zStoveNoList = new ArrayList(); foreach (UltraGridRow row in magRows) { MatGpMEntity matEntity = (MatGpMEntity)row.ListObject; string matGpTity = JSONFormat.Format(matEntity); zStoveNoList.Add(matGpTity); } ArrayList parmList = new ArrayList(); foreach(UltraGridRow uRow in checkMagRows) { MatGpMEntity matTity = (MatGpMEntity)uRow.ListObject; string matGpEntity = JSONFormat.Format(matTity); parmList.Add(matGpEntity); } CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "Core.LgMes.Server.Stuffmanage.FrmMatGroupManage"; ccp.MethodName = "matGroupData"; ccp.ServerParams = new object[] { parmList, zStoveNoList,UserInfo.GetUserName(),this.txt_newJugeNo.Text.Trim(),this.CustomInfo }; ccp = ob.ExecuteNonQuery(ccp,CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { if (ccp.ReturnInfo.Equals("组炉成功!")) { doQueryData(); MessageUtil.ShowTips(ccp.ReturnInfo); } else { MessageUtil.ShowTips(ccp.ReturnInfo); } } } private void close() { this.Close(); } /// /// 检查基础数据 /// /// private bool CheckQuery() { if (this.chkStoveNo.Checked && string.IsNullOrEmpty(this.txtStoveNo.Text.Trim())) { MessageBox.Show("请输入熔炼炉号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (this.chkjudgeNo.Checked && string.IsNullOrEmpty(this.txtjudgeNo.Text.Trim())) { MessageBox.Show("请输入判定炉号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (this.chkGrade.Checked && string.IsNullOrEmpty(this.txtGrade.Tag.ToString())) { MessageBox.Show("请输入钢种!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } if (this.chkDimter.Checked && string.IsNullOrEmpty(this.txtDimter.Text.Trim())) { MessageBox.Show("请输入直径!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } return true; } private void chkStoveNo_CheckedChanged(object sender, EventArgs e) { this.txtStoveNo.Enabled = this.chkStoveNo.Checked; } private void chkjudgeNo_CheckedChanged(object sender, EventArgs e) { this.txtjudgeNo.Enabled = this.chkjudgeNo.Checked; } private void chkGrade_CheckedChanged(object sender, EventArgs e) { this.txtGrade.Enabled = this.chkGrade.Checked; } private void chkDimter_CheckedChanged(object sender, EventArgs e) { this.txtDimter.Enabled = this.chkDimter.Checked; } private void txtGrade_EditorButtonClick(object sender, Infragistics.Win.UltraWinEditors.EditorButtonEventArgs e) { DataTable dt = ServerHelper.GetData("Core.LgMes.Server.Stuffmanage.FrmBaseInformation.doQueryGradeAll", new object[] { }, ob); dt.Columns["GRADENAME"].Caption = "钢种"; BaseInfoPopup baseInfo = new BaseInfoPopup(dt, "GRADENAME", "GRADECODE"); baseInfo.Shown += new EventHandler((a, b) => { var actRow = baseInfo.UltraGrid1.Rows.AsQueryable().Where( c => c.GetValue("GRADECODE") == this.txtGrade.Tag.ToString2()).FirstOrDefault(); if (actRow != null) actRow.Activate(); }); if (baseInfo.ShowDialog() == System.Windows.Forms.DialogResult.OK) { txtGrade.Tag = baseInfo.ChoicedRow.GetValue("GRADECODE"); txtGrade.Text = baseInfo.ChoicedRow.GetValue("GRADENAME"); } } private void txtDimter_EditorButtonClick(object sender, Infragistics.Win.UltraWinEditors.EditorButtonEventArgs e) { DataTable dt = ServerHelper.GetData("Core.LgMes.Server.Stuffmanage.FrmBaseInformation.doQueryDimaterAll", new object[] { }, ob); dt.Columns["SPEC_NAME"].Caption = "直径"; BaseInfoPopup baseInfo = new BaseInfoPopup(dt, "SPEC_NAME", "SPEC_CODE"); baseInfo.Shown += new EventHandler((a, b) => { var actRow = baseInfo.UltraGrid1.Rows.AsQueryable().Where( c => c.GetValue("SPEC_NAME") == this.txtDimter.Tag.ToString2()).FirstOrDefault(); if (actRow != null) actRow.Activate(); }); if (baseInfo.ShowDialog() == System.Windows.Forms.DialogResult.OK) { txtDimter.Tag = baseInfo.ChoicedRow.GetValue("SPEC_NAME"); txtDimter.Text = baseInfo.ChoicedRow.GetValue("SPEC_NAME"); } } private void FrmMatGroupManage_Shown(object sender, EventArgs e) { if (toolMenu == null) return; if (toolMenu.Toolbars[0].Tools.Exists("QueryGroup")) { toolMenu.Toolbars[0].Tools["QueryGroup"].InstanceProps.Visible = DefaultableBoolean.False; } } private void ultraTabControl1_SelectedTabChanged(object sender, Infragistics.Win.UltraWinTabControl.SelectedTabChangedEventArgs e) { if (ultraTabControl1.SelectedTab.Key == "0") { if (toolMenu == null) return; if (toolMenu.Toolbars[0].Tools.Exists("QueryGroup")) { toolMenu.Toolbars[0].Tools["QueryGroup"].InstanceProps.Visible = DefaultableBoolean.False; } if (toolMenu.Toolbars[0].Tools.Exists("Query")) { toolMenu.Toolbars[0].Tools["Query"].InstanceProps.Visible = DefaultableBoolean.True; } if (toolMenu.Toolbars[0].Tools.Exists("MatGroup")) { toolMenu.Toolbars[0].Tools["MatGroup"].InstanceProps.Visible = DefaultableBoolean.True; } this.ultraGroupBox2.Visible = true; ultraIsLoad.Text="库存日期"; } else if (ultraTabControl1.SelectedTab.Key == "1") { if (toolMenu == null) return; if (toolMenu.Toolbars[0].Tools.Exists("QueryGroup")) { toolMenu.Toolbars[0].Tools["QueryGroup"].InstanceProps.Visible = DefaultableBoolean.True; } if (toolMenu.Toolbars[0].Tools.Exists("Query")) { toolMenu.Toolbars[0].Tools["Query"].InstanceProps.Visible = DefaultableBoolean.False; } if (toolMenu.Toolbars[0].Tools.Exists("MatGroup")) { toolMenu.Toolbars[0].Tools["MatGroup"].InstanceProps.Visible = DefaultableBoolean.False; } this.ultraGroupBox2.Visible = false; ultraIsLoad.Text = "组炉日期"; } } private void ultraGrid1_CellChange(object sender, CellEventArgs e) { double count = 0; double weght = 0; foreach (UltraGridRow ugr in ultraGrid1.Rows) { if (Convert.ToBoolean(ugr.Cells["CHK"].Text) == true) { count += double.Parse(ugr.Cells["ActCount"].Value.ToString()); weght += double.Parse(ugr.Cells["ActWeight"].Value.ToString()); } } ultraLabel1.Text = " 支:" + count + " 吨:" + weght.ToString("f3"); } } }