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.StlMes.Client.LgCommon; namespace Core.StlMes.Client.LgIntegrationQuery { public partial class frmRTDCons : 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(ucmbRTDTable.Value); CommonClientToServer ccTos = new CommonClientToServer(); ccTos.ob = this.ob; DataSet ds = ccTos.ExecuteQueryFunctionsSqlID("Core.Mes.Server.Common.ComDataAccess", "QueryWithParameter", "STL_QUR0001", 5, 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.ExecuteSortResultByQueryToDataTable(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"] = Convert.ToDateTime(dst.Tables[0].Rows[0]["TMSTMP"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); } } 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 = ""; if (uGrdRTD.Rows.Count == 0 || uGrdRTD.ActiveRow == null) { MessageBox.Show("无有效数据可修改!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } Infragistics.Win.UltraWinGrid.UltraGridRow row = this.uGrdRTD.ActiveRow; Fields = row.Cells["FIELDS"].Text.Trim(); Vaules = row.Cells["VALUE"].Text.Trim(); string strOut = ""; string strSql = "Update " + ucmbRTDTable.Value.ToString() + " set " + Fields + "='" + Vaules + "'"; CoreClientParam ccp = new CoreClientParam(); ccp.ServerName = "Core.LgMes.Server.DEV.Methods.DEVPublicMethods"; ccp.MethodName = "UpdateMethods"; ccp.ServerParams = new Object[] { strSql }; ExecuteNonQuery(ccp, CoreInvokeType.Internal); strOut = ccp.ReturnInfo.ToString(); if (strOut == "") { MessageBox.Show("字段【" + Fields + "】的值已成功修改为【" + Vaules + "】!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("修改失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } 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(1000); nUpDTime.Enabled = true; } else { nUpDTime.Enabled = false; } } // 1秒刷新一次 /// /// 1秒刷新一次 /// /// /// private void nUpDTime_Tick(object sender, EventArgs e) { proc_Query(); } // 获取OPC配置文件 /// /// 获取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 "BOF4": strTabComments = "4#转炉"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "BOF5": strTabComments = "5#转炉"; 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 "CAS4": strTabComments = "4#吹氩站"; if (strTabType == "1") strTabComments += "业务驱动信号表"; else strTabComments += "料仓自动加料信号表"; break; case "CAS5": strTabComments = "5#吹氩站"; 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; case "CCM5": strTabComments = "5#连铸机"; 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; } } }