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 CoreFS.CA06; using System.Collections; using System.Xml; using Core.Mes.Client.Common; namespace Core.LgMes.Client.LgIntegrationQuery { public partial class frmRTDCons : Core.Mes.Client.Common.frmStyleBase { string strTableName = ""; DataSet dsMain = new DataSet(); DataTable dtMain = new DataTable(); public frmRTDCons() { InitializeComponent(); } private void proc_Query() { if (ucmbRTDTable.SelectedIndex == -1) { //MessageBox.Show("临时表不能为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); dataSet1.Clear(); return; } try { string strOut = ""; ArrayList arry = new ArrayList(); ArrayList sqlList = new ArrayList(); arry.Add("frmRTDCons.Query"); arry.Add(ucmbRTDTable.Value); DataSet ds = new DataSet(); CommonClientToServer ccs = new CommonClientToServer(); ccs.ob = this.ob; ds = ccs.ExecuteQueryFunctions("Core.LgMes.Server.Common.ComDBQuery", "doSimpleQuery", arry, out strOut); if (strOut != "") { MessageBox.Show(strOut, "出错", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (ds != null && ds.Tables.Count > 0) { this.dataTable1.Rows.Clear(); if (ds.Tables[0].Rows.Count == 0) return; dataSet1.Merge(ds); } strOut = ""; arry.Clear(); sqlList.Clear(); arry.Add("RtdDataQuery.Query"); sqlList.Add(ucmbRTDTable.Value); CoreClientParam CCP = new CoreClientParam(); DataTable dtt = new DataTable(); CCP.ServerName = "Core.LgMes.Server.Common.ComDBQuery"; CCP.MethodName = "doQuery"; CCP.ServerParams = new object[] { arry, sqlList }; CCP.SourceDataTable = dtt; this.ExecuteQueryToDataTable(CCP, CoreInvokeType.Internal); DataSet dst = new DataSet(); dst.Tables.Add(dtt); strOut = CCP.ReturnInfo; for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { for (int j = 0; j < dst.Tables[0].Columns.Count; j++) { string ee = ds.Tables[0].Rows[i]["FIELDS"].ToString(); string rr = dst.Tables[0].Columns[j].ToString(); if (ds.Tables[0].Rows[i]["FIELDS"].ToString() == dst.Tables[0].Columns[j].ToString()) { DataRow[] dr = dtMain.Select("TableName='" + ucmbRTDTable.Value + "' and name='" + ds.Tables[0].Rows[i]["FIELDS"].ToString() + "'"); dataSet1.Tables[0].Rows[i]["VALUE"] = dst.Tables[0].Rows[0][j].ToString(); if (dr.Length> 0) dataSet1.Tables[0].Rows[i]["HELP"] = dr[0].ItemArray[6].ToString(); } dataSet1.Tables[0].Rows[i]["TIME"] = dst.Tables[0].Rows[0]["TMSTMP"].ToString(); } } if (ds == null && ds.Tables.Count <= 0) { dataSet1.Clear(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } /// <加载临时表名> /// 加载临时表名 /// private void proc_RTDTable() { try { string strErr = ""; ArrayList arry = new ArrayList(); arry.Add("proc_RTDTable.Query"); CommonClientToServer ccs = new CommonClientToServer(); ccs.ob = this.ob; DataSet ds = ccs.ExecuteQueryFunctions("Core.LgMes.Server.Common.ComDBQuery", "doSimpleQuery", arry, out strErr); if (strErr != "" || !(ds != null && ds.Tables.Count > 0)) { MessageBox.Show("钢种加载失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); if (MessageBox.Show("是否重新加载钢种?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) proc_RTDTable(); return; } ucmbRTDTable.Items.Clear(); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) //遍历所有行的信息 { ucmbRTDTable.Items.Add(ds.Tables[0].Rows[i]["table_name"], GetTablesComments(ds.Tables[0].Rows[i]["table_name"].ToString())); } ucmbRTDTable.SelectedIndex = -1; } catch (Exception ex) { MessageBox.Show(ex.Message); } } /// /// 菜单 /// /// /// public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "Query": { proc_Query(); break; } case "Update": { doEdit(); break; } case "Exit": { this.Close(); break; } } } //编辑各表字段信息值 void doEdit() { string Fields = "", Vaules = ""; Infragistics.Win.UltraWinGrid.UltraGridRow row = this.uGrdRTD.ActiveRow; if (row.Cells.Count > 0) { } Fields = row.Cells["FIELDS"].Text.Trim(); Vaules = row.Cells["VALUE"].Text.Trim(); ArrayList arry = new ArrayList(); ArrayList sqlList = new ArrayList(); arry.Add("RtdTableData_Update"); sqlList.Add(ucmbRTDTable.Value); sqlList.Add(Fields); arry.Add(Vaules); CoreFS.CA06.FrmBase fr = new FrmBase(); fr.ob = ob; CoreClientParam CCP_Query = new CoreClientParam(); DataTable dt = new DataTable(); CCP_Query.ServerName = "Core.LgMes.Server.Common.ComDBQuery"; CCP_Query.MethodName = "doSimpleQuery"; CCP_Query.ServerParams = new object[] { arry, sqlList }; CCP_Query.SourceDataTable = dt; fr.ExecuteQueryToDataTable(CCP_Query, CoreInvokeType.Internal); } private void frmRTDCons_Load(object sender, EventArgs e) { proc_RTDTable(); dtMain.Columns.Add("TableName"); dtMain.Columns.Add("Name"); dtMain.Columns.Add("TYPE"); dtMain.Columns.Add("FLAG"); dtMain.Columns.Add("RDBNAME"); dtMain.Columns.Add("SAVEFLAG"); dtMain.Columns.Add("TEXT"); string filename = System.Windows.Forms.Application.StartupPath + @"\hdbset.xml"; XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(filename); GetOPCxml(xmldoc); } private void chkAutoRef_CheckedChanged(object sender, EventArgs e) { if (chkAutoRef.Checked == true) { nUpDTime.Interval = System.Convert.ToInt32(500); nUpDTime.Enabled = true; } else { nUpDTime.Enabled = false; } } /// /// 0.5秒刷新一次 /// /// /// private void nUpDTime_Tick(object sender, EventArgs e) { proc_Query(); } /// /// 获取OPC配置文件 /// /// private void GetOPCxml(XmlNode xmlnode) { if (xmlnode.Attributes != null) { for (int i = 0; i < xmlnode.Attributes.Count; i++) { string dd3 = xmlnode.Attributes[i].Value; if (xmlnode.Attributes[i].Value.Length > 3 && xmlnode.Attributes[i].Value.Substring(0, 4) == "RTD_") { dsMain.Tables.Add(xmlnode.Attributes[i].Value); strTableName = xmlnode.Attributes[i].Value; continue; } if (xmlnode.ParentNode.Attributes.Count > 0 && xmlnode.ParentNode.Attributes[0].Value == strTableName) { DataRow dr = dtMain.NewRow(); dr["TABLENAME"] = xmlnode.ParentNode.Attributes[0].Value; dr["NAME"] = xmlnode.Attributes[0].Value; dr["TYPE"] = xmlnode.Attributes[1].Value; dr["FLAG"] = xmlnode.Attributes[2].Value; dr["RDBNAME"] = xmlnode.Attributes[3].Value; dr["SAVEFLAG"] = xmlnode.Attributes[4].Value; dr["TEXT"] = xmlnode.Attributes[5].Value; dtMain.Rows.Add(dr); break; } } } //递归调用 foreach (XmlNode xmlChild in xmlnode.ChildNodes) { GetOPCxml(xmlChild); } } /// /// 根据表名返回表说明 /// /// 名称 /// 表说明 private string GetTablesComments(string strTables) { string strPos =strTables.Substring(9,4); string strTabType = strTables.Substring(strTables.Length - 1, 1); string strTabComments = ""; switch (strPos) { case "MIS1": strTabComments = "1#混铁炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; break; case "MIS2": strTabComments = "2#混铁炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; break; case "HMP1": strTabComments = "1#脱硫站"; if (strTabType == "1") strTabComments += "业务驱动信号表"; break; case "HMP2": strTabComments = "2#脱硫站"; if (strTabType == "1") strTabComments += "业务驱动信号表"; break; case "BOF1": strTabComments = "1#转炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "BOF2": strTabComments = "2#转炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "BOF3": strTabComments = "3#转炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "CAS1": strTabComments = "1#吹氩站"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "CAS2": strTabComments = "2#吹氩站"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "CAS3": strTabComments = "3#吹氩站"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "LFS1": strTabComments = "1#LF炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "LFS2": strTabComments = "2#LF炉"; if (strTabType == "1") strTabComments += "主要信号表"; else strTabComments += "料仓自动加料信号表"; break; case "LFS3": strTabComments = "3#LF炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "RHS1": strTabComments = "1#RH炉"; if (strTabType =="1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "RHS2": strTabComments = "2#RH炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "VDS1": strTabComments = "1#VD炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "VDS2": strTabComments = "2#VD炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "CCM1": strTabComments = "1#连铸机"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else if(strTabType == "2") strTabComments += "二冷水信号表"; else if (strTabType == "3") strTabComments += "坯料切割信号表"; break; case "CCM2": strTabComments = "2#连铸机"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else if (strTabType == "2") strTabComments += "二冷水信号表"; else if (strTabType == "3") strTabComments += "坯料切割信号表"; break; case "CCM3": strTabComments = "3#连铸机"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else if (strTabType == "2") strTabComments += "二冷水信号表"; else if (strTabType == "3") strTabComments += "坯料切割信号表"; break; case "CCM4": strTabComments = "4#连铸机"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else if (strTabType == "2") strTabComments += "二冷水信号表"; else if (strTabType == "3") strTabComments += "坯料切割信号表"; break; default: if (strTables == "RTD_POINTLYJZ1") strTabComments = "能源介质信号表"; else if(strTables == "RTD_POINTCCMBILLWEIGHT") strTabComments = "连铸切割坯料称重信号表"; break; } return strTabComments; } } }