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;
}
}
}