1085 lines
48 KiB
C#
1085 lines
48 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading;
|
||
using System.Threading.Tasks;
|
||
using GetData_PLC;
|
||
using ConsoleGetPLCData.CS;
|
||
using System.Net;
|
||
|
||
namespace ConsoleGetPLCData
|
||
{
|
||
|
||
public struct stStation
|
||
{
|
||
public string ip;
|
||
public int port;
|
||
public string ZCID;
|
||
public int readDiffTime;
|
||
public string strError;
|
||
public string ZCName;
|
||
public string MeterTYPE;
|
||
public string NetTYPE;
|
||
}
|
||
class ProgramGetData
|
||
{
|
||
|
||
public static DataSet dsJLDataRealTime = new DataSet(); //实时采集数据集
|
||
public static DataSet dsPparameter = new DataSet(); //站场参数数据集
|
||
public static DataTable dtScRealTime = new DataTable(); // 实时输差数据集
|
||
public static DataSet dsZhanDateTime = new DataSet(); // 实时PLC时间
|
||
|
||
|
||
public static DataTable dtZhan = new DataTable(); //站场数据集
|
||
public static DataTable dtZhanNet = new DataTable(); //局域网站场数据集
|
||
public static DataTable dtZhanGPRS = new DataTable(); //GPRS站场数据集
|
||
|
||
|
||
public static string strAPPDataPath = Environment.CurrentDirectory + @"\Data\"; //采集程序路径
|
||
public static string strParPath = strAPPDataPath + @"par\"; //计量参数文件存储路径
|
||
public static string strConfigPath = strAPPDataPath + @"Config\"; //采集程序参数保存路径
|
||
public static string strDataPath = strAPPDataPath + @"RealTime\"; //实时数据存储路径
|
||
|
||
public static string strDataPath_JlData = strDataPath + @"JlData\"; //分站计量实时数据存储路径
|
||
public static string strDataPath_ScData = strDataPath + @"ScData\"; //输差数据XML存储文件夹
|
||
public static string strDataPath_DataTime = strDataPath + @"DateTime\"; //分站时间xml存储文件夹
|
||
public static string strDataPath_Log = strDataPath + @"Log\"; //日志存储文件夹
|
||
|
||
|
||
|
||
//log 日志存放数据
|
||
public static string strLogPath = strDataPath + @"log\" + DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + "_log.txt";
|
||
public static string strLogPath_Data = strDataPath + @"log\" + DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + "_Datalog_";
|
||
|
||
private string strErr = "";
|
||
private string strSQL = "";
|
||
public static bool blWriteParXMLFlag;
|
||
private Thread[] GetPLCDataThread;
|
||
Dictionary<string, Thread> ThreadDictionary = new Dictionary<string, Thread>();
|
||
static void Main(string[] args)
|
||
{
|
||
strAppend(DateTime.Now.ToString() + "------启动实时采集程序!");
|
||
|
||
System.IO.Directory.CreateDirectory(strAPPDataPath); //Data文件夹
|
||
System.IO.Directory.CreateDirectory(strParPath); //Data\par文件夹
|
||
System.IO.Directory.CreateDirectory(strDataPath); //Data\realtime文件夹
|
||
System.IO.Directory.CreateDirectory(strConfigPath); //Data\realtime文件夹
|
||
|
||
System.IO.Directory.CreateDirectory(strDataPath_JlData + "JSON\\"); //分站xml存储文件夹
|
||
System.IO.Directory.CreateDirectory(strDataPath_ScData); //输差数据XML存储文件夹
|
||
System.IO.Directory.CreateDirectory(strDataPath_DataTime);//分站时间xml存储文件夹
|
||
System.IO.Directory.CreateDirectory(strDataPath_Log); //日志存储文件夹
|
||
|
||
FileInfo fi = new FileInfo(ProgramGetData.strLogPath);
|
||
|
||
if (fi.Exists == false)
|
||
{
|
||
File.CreateText(ProgramGetData.strLogPath);
|
||
}
|
||
ProgramGetData objPLC = new ProgramGetData();
|
||
objPLC.InitialTalbe();// 初始化采集相关表格
|
||
Thread.Sleep(5000);
|
||
|
||
|
||
//objPLC.GetPLCDataStart();
|
||
objPLC.GetGPRSStart();
|
||
objPLC.GetNetStart();
|
||
|
||
Thread.Sleep(3000);
|
||
|
||
|
||
|
||
strAppend(DateTime.Now.ToString() + "------启动输差实时计算线程!");
|
||
objPLC.ScCal();//启动输差实时计算
|
||
Thread.Sleep(3000);
|
||
objPLC.SaveXML();//启动保存xml线程
|
||
|
||
Console.ReadKey();
|
||
}
|
||
private void SaveXML() //输差计算
|
||
{
|
||
//保存实时数据到xml
|
||
Thread th = new Thread(SaveXML_ReadPar);
|
||
th.Start();
|
||
}
|
||
|
||
private void ScCal() //输差计算
|
||
{
|
||
ScCal newSccal = new ScCal();
|
||
Thread ScThread = new Thread(new ThreadStart(newSccal.ZhanXianScCal));
|
||
ScThread.Start();
|
||
strAppend(DateTime.Now.ToString() + "------启动输差实时计算线程---完成!");
|
||
}
|
||
/// <summary>
|
||
/// 向IP端口发json
|
||
/// </summary>
|
||
/// <param name="url"></param>
|
||
/// <param name="param"></param>
|
||
/// <returns></returns>
|
||
public static string HttpWebRequestPost(string url, string param)
|
||
{
|
||
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
|
||
Encoding encoding = Encoding.UTF8;
|
||
byte[] byteArray = Encoding.ASCII.GetBytes(param);
|
||
string responseData = String.Empty;
|
||
req.Method = "POST";
|
||
req.ContentType = "application/x-www-form-urlencoded";
|
||
req.ContentLength = byteArray.Length;
|
||
|
||
using (Stream reqStream = req.GetRequestStream())
|
||
{
|
||
reqStream.Write(byteArray, 0, byteArray.Length);
|
||
}
|
||
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
|
||
{
|
||
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
|
||
{
|
||
responseData = reader.ReadToEnd();
|
||
}
|
||
return responseData;
|
||
}
|
||
}
|
||
|
||
public string HttpWebRequestGet(string url, string param)
|
||
{
|
||
param = param.IndexOf('?') > -1 ? (param) : ("?" + param);
|
||
|
||
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url + param);
|
||
Encoding encoding = Encoding.UTF8;
|
||
string responseData = String.Empty;
|
||
req.Method = "GET";
|
||
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
|
||
{
|
||
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
|
||
{
|
||
responseData = reader.ReadToEnd();
|
||
}
|
||
return responseData;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 实时保存采集的数据到XML文件,监控是否有读取计量点参数的命令
|
||
/// </summary>
|
||
private void SaveXML_ReadPar()
|
||
{
|
||
while (true)
|
||
{
|
||
#region 保存实时采集数据 XML
|
||
string name = strDataPath + "SsData.xml";
|
||
try
|
||
{
|
||
dsJLDataRealTime.WriteXml(name, XmlWriteMode.WriteSchema);//保存所有站场实时采集的计量数据集
|
||
dsZhanDateTime.WriteXml(strDataPath + "dtTime.xml", XmlWriteMode.WriteSchema);//保存所有站场实时采集的时钟数据集
|
||
string strTotalJson = "{";
|
||
int ii = 0;
|
||
foreach (DataTable dtTemp in dsJLDataRealTime.Tables) //分站保存所有站场实时采集的计量数据集
|
||
{
|
||
string strID = dtTemp.TableName;
|
||
dtTemp.WriteXml(strDataPath_JlData + dtTemp.TableName + ".xml", XmlWriteMode.WriteSchema);
|
||
try
|
||
{
|
||
string json = DataTableToJson(dtTemp, dsZhanDateTime.Tables[strID], strID);
|
||
strTotalJson += "\"" + dtTemp.TableName + "\":" + json + ",";
|
||
File.WriteAllText(strDataPath_JlData + "\\JSON\\" + dtTemp.TableName + ".json", json);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
}
|
||
//ii += 1;
|
||
//if (ii > 6)
|
||
//{
|
||
// break;
|
||
//}
|
||
}
|
||
strTotalJson = strTotalJson.TrimEnd(',') + "}";
|
||
//HttpWebRequestPost("Http://10.75.166.59:8081", strTotalJson);
|
||
File.WriteAllText(strDataPath_JlData + "\\JSON\\" + "Total.json", strTotalJson);
|
||
foreach (DataTable dtTemp in dsZhanDateTime.Tables)//分站保存所有站场实时采集的时钟数据集
|
||
{
|
||
dtTemp.WriteXml(strDataPath_DataTime + dtTemp.TableName + ".xml", XmlWriteMode.WriteSchema);
|
||
}
|
||
if (blWriteParXMLFlag) //分站保存计量点参数数据集
|
||
{
|
||
foreach (DataTable dtTemp in dsPparameter.Tables)
|
||
{
|
||
dtTemp.WriteXml(strParPath + dtTemp.TableName + ".xml", XmlWriteMode.WriteSchema);
|
||
}
|
||
blWriteParXMLFlag = false;
|
||
}
|
||
//Console.WriteLine("。。。。。保存实时数据,PLC时间,计量点参数到xml!");
|
||
}
|
||
catch (SystemException err)
|
||
{
|
||
if (err.Message != null)
|
||
{
|
||
//strErr = "注意:" + DateTime.Now + "保存到实时数据到xml出错" + err.Message + err.StackTrace.Substring(err.StackTrace.LastIndexOf("行号") - 1) + "\r\n";
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 读取参数
|
||
try
|
||
{
|
||
; //从数据库中查询出所有站场的名称和站场ID//返回不带重复记录的站场ID表格
|
||
DataTable dtReadFlag = OracleLink.ExecuteDataTable(SQL_Strings.strReadParFlag + " and readparflag='1'", "JLXT", strErr);
|
||
if (dtReadFlag.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow drFlag in dtReadFlag.Rows)
|
||
{
|
||
string strTempZCID = drFlag["STATION_NAME"].ToString();
|
||
string strTempJLD_ID = drFlag["JLD_ID"].ToString();
|
||
|
||
DataRow[] drJldPar = dsJLDataRealTime.Tables[strTempZCID].Select("jld_id='" + strTempJLD_ID + "'");
|
||
drJldPar[0]["readparflag"] = "1";
|
||
|
||
blWriteParXMLFlag = true;
|
||
string SQL = "update RV2_BASEINFO set readparflag='' where xh='" + drFlag["ID"] + "'";
|
||
OracleLink.ExecuteNonQuery(SQL, "JLXT", strErr);
|
||
}
|
||
}
|
||
//启动或停止某个站的线程
|
||
try
|
||
{
|
||
string strQuery = "select * from control"; //从数据库中查询出所有站场的名称和站场ID//返回不带重复记录的站场ID表格
|
||
string RestartFlag = "";
|
||
DataTable ReadFlagTable = OracleLink.ExecuteDataTable(strQuery, "DTJK", "");
|
||
RestartFlag = ReadFlagTable.Rows[0]["ThreadRestartFlag"].ToString();
|
||
string zcid = ReadFlagTable.Rows[0]["Thread_ZCID"].ToString();
|
||
if (RestartFlag == "1")
|
||
{
|
||
ThreadDictionary[zcid].Abort();
|
||
dtJldList(zcid);
|
||
strQuery = "update control set ThreadRestartFlag='0',Thread_ZCID='' where id=1 "; //从数据库中查询出所有站场的名称和站场ID//返回不带重复记录的站场ID表格
|
||
OracleLink.ExecuteNonQuery(strQuery, "DTJK", strErr);
|
||
GetPLCDataStart(zcid);
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
}
|
||
//同步PLC时间
|
||
DataTable dtTBTime = OracleLink.ExecuteDataTable(SQL_Strings.strSQLZhan + " and TBTime='1'", "JLXT", strErr);
|
||
if (dtTBTime.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow drFlag in dtTBTime.Rows)
|
||
{
|
||
string strTempZCID = drFlag["ID"].ToString();
|
||
dsZhanDateTime.Tables[strTempZCID].Rows[0]["TongBuFlag"] = "同步";
|
||
string SQL = "update 集输站场 set TBTime='' where ID='" + strTempZCID + "'";
|
||
OracleLink.ExecuteNonQuery(SQL, "JLXT", strErr);
|
||
}
|
||
}
|
||
}
|
||
catch { }
|
||
#endregion
|
||
Thread.Sleep(1111);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 启动各站数据采集线程
|
||
/// </summary>
|
||
private void GetPLCDataStart() //启动各站数据采集线程
|
||
{
|
||
//int ThreadNum = dtZhan.Rows.Count;
|
||
//GetDataThread[] arrayThread;
|
||
//GetPLCDataThread = new Thread[ThreadNum];
|
||
//arrayThread = new GetDataThread[ThreadNum];
|
||
try
|
||
{
|
||
|
||
|
||
int ThreadNum = dtZhan.Rows.Count;
|
||
GetDataThread[] arrayThread;
|
||
GetPLCDataThread = new Thread[ThreadNum];
|
||
arrayThread = new GetDataThread[ThreadNum];
|
||
for (int i = 0; i < ThreadNum; i++)
|
||
{
|
||
string ZCID = dtZhan.Rows[i]["ORG_ID"].ToString();
|
||
if (dsJLDataRealTime.Tables[ZCID].Rows.Count > 0)
|
||
{
|
||
//if (dtZhan.Rows[i]["PORT"].ToString() == "1512")
|
||
{
|
||
|
||
|
||
|
||
//if (ZCID.Split('_').Length > 1)
|
||
{
|
||
try
|
||
{
|
||
stStation Station = new stStation();
|
||
Station.ZCID = dtZhan.Rows[i]["ORG_ID"].ToString();
|
||
Station.ZCName = dtZhan.Rows[i]["ORG_NAME"].ToString();
|
||
Station.ip = dtZhan.Rows[i]["IP"].ToString();
|
||
Station.port = Convert.ToInt32(dtZhan.Rows[i]["PORT"].ToString());
|
||
Station.NetTYPE = dtZhan.Rows[i]["NETTYPE"].ToString();
|
||
Station.MeterTYPE = dtZhan.Rows[i]["DEVICETYPE"].ToString();
|
||
Station.readDiffTime = Convert.ToInt32(dtZhan.Rows[i]["READTIMESPAN"].ToString());
|
||
arrayThread[i] = new GetDataThread(Station);
|
||
GetPLCDataThread[i] = new Thread(new ThreadStart(arrayThread[i].GetPLCData)); //string[] tempIp = dtZhan.Rows[i]["IP"].ToString().Split(',');
|
||
|
||
GetPLCDataThread[i].Start();
|
||
ThreadDictionary.Add(Station.ZCID, GetPLCDataThread[i]);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
continue;
|
||
}
|
||
}
|
||
}
|
||
//
|
||
}
|
||
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 启动GPRS数据采集线程
|
||
/// </summary>
|
||
private void GetGPRSStart() //启动各站数据采集线程
|
||
{
|
||
//int ThreadNum = dtZhan.Rows.Count;
|
||
//GetDataThread[] arrayThread;
|
||
//GetPLCDataThread = new Thread[ThreadNum];
|
||
//arrayThread = new GetDataThread[ThreadNum];
|
||
try
|
||
{
|
||
|
||
|
||
int ThreadNum = dtZhanGPRS.Rows.Count;
|
||
GETDataGPRS[] arrayThread;
|
||
GetPLCDataThread = new Thread[ThreadNum];
|
||
arrayThread = new GETDataGPRS[ThreadNum];
|
||
for (int i = 0; i < ThreadNum; i++)
|
||
{
|
||
string ZCID = dtZhanGPRS.Rows[i]["ORG_ID"].ToString();
|
||
if (dsJLDataRealTime.Tables[ZCID].Rows.Count > 0)
|
||
{
|
||
//if (dtZhanGPRS.Rows[i]["PORT"].ToString() == "8059")
|
||
{
|
||
//if (ZCID.Split('_').Length > 1)
|
||
{
|
||
try
|
||
{
|
||
stStation Station = new stStation();
|
||
Station.ZCID = dtZhanGPRS.Rows[i]["ORG_ID"].ToString();
|
||
Station.ZCName = dtZhanGPRS.Rows[i]["ORG_NAME"].ToString();
|
||
Station.ip = dtZhanGPRS.Rows[i]["IP"].ToString();
|
||
Station.port = Convert.ToInt32(dtZhanGPRS.Rows[i]["PORT"].ToString());
|
||
Station.NetTYPE = dtZhanGPRS.Rows[i]["NETTYPE"].ToString();
|
||
Station.MeterTYPE = dtZhanGPRS.Rows[i]["DEVICETYPE"].ToString();
|
||
Station.readDiffTime = Convert.ToInt32(dtZhanGPRS.Rows[i]["READTIMESPAN"].ToString());
|
||
arrayThread[i] = new GETDataGPRS(Station);
|
||
GetPLCDataThread[i] = new Thread(new ThreadStart(arrayThread[i].GetDataStart));
|
||
//string[] tempIp = dtZhan.Rows[i]["IP"].ToString().Split(',');
|
||
|
||
GetPLCDataThread[i].Start();
|
||
ThreadDictionary.Add(Station.ZCID, GetPLCDataThread[i]);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
continue;
|
||
}
|
||
}
|
||
}
|
||
//
|
||
}
|
||
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 启动Net数据采集线程
|
||
/// </summary>
|
||
private void GetNetStart() //启动各站数据采集线程
|
||
{
|
||
//int ThreadNum = dtZhan.Rows.Count;
|
||
//GetDataThread[] arrayThread;
|
||
//GetPLCDataThread = new Thread[ThreadNum];
|
||
//arrayThread = new GetDataThread[ThreadNum];
|
||
try
|
||
{
|
||
|
||
|
||
int ThreadNum = dtZhanNet.Rows.Count;
|
||
GetDataNet[] arrayThread;
|
||
GetPLCDataThread = new Thread[ThreadNum];
|
||
arrayThread = new GetDataNet[ThreadNum];
|
||
for (int i = 0; i < ThreadNum; i++)
|
||
{
|
||
string ZCID = dtZhanNet.Rows[i]["ORG_ID"].ToString();
|
||
if (dsJLDataRealTime.Tables[ZCID].Rows.Count > 0)
|
||
{
|
||
//if (dtZhanNet.Rows[i]["ORG_ID"].ToString() == "6C1AB9BC-AFEC-48B5-AD7D-3932DE414641")
|
||
{
|
||
//if (ZCID.Split('_').Length > 1)
|
||
{
|
||
try
|
||
{
|
||
stStation Station = new stStation();
|
||
Station.ZCID = dtZhanNet.Rows[i]["ORG_ID"].ToString();
|
||
Station.ZCName = dtZhanNet.Rows[i]["ORG_NAME"].ToString();
|
||
Station.ip = dtZhanNet.Rows[i]["IP"].ToString();
|
||
Station.port = Convert.ToInt32(dtZhanNet.Rows[i]["PORT"].ToString());
|
||
Station.NetTYPE = dtZhanNet.Rows[i]["NETTYPE"].ToString();
|
||
Station.MeterTYPE = dtZhanNet.Rows[i]["DEVICETYPE"].ToString();
|
||
Station.readDiffTime = Convert.ToInt32(dtZhanNet.Rows[i]["READTIMESPAN"].ToString());
|
||
arrayThread[i] = new GetDataNet(Station);
|
||
GetPLCDataThread[i] = new Thread(new ThreadStart(arrayThread[i].GetPLCData)); //string[] tempIp = dtZhan.Rows[i]["IP"].ToString().Split(',');
|
||
|
||
GetPLCDataThread[i].Start();
|
||
ThreadDictionary.Add(Station.ZCID, GetPLCDataThread[i]);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
continue;
|
||
}
|
||
}
|
||
}
|
||
//
|
||
}
|
||
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
|
||
}
|
||
}
|
||
|
||
|
||
private void GetPLCDataStart(string ZCID) //启动各站数据采集线程
|
||
{
|
||
DataRow[] drZhan = dtZhan.Select("ID='" + ZCID + "'");
|
||
if (dsJLDataRealTime.Tables[ZCID].Rows.Count > 0)
|
||
{
|
||
|
||
try
|
||
{
|
||
stStation Station = new stStation();
|
||
Station.ZCID = drZhan[0]["ID"].ToString();
|
||
Station.ZCName = drZhan[0]["ZCMC"].ToString();
|
||
Station.ip = drZhan[0]["IP"].ToString();
|
||
Station.port = Convert.ToInt32(drZhan[0]["PORT"].ToString());
|
||
Station.NetTYPE = drZhan[0]["NETTYPE"].ToString();
|
||
Station.MeterTYPE = drZhan[0]["SBTYPE"].ToString();
|
||
Station.readDiffTime = Convert.ToInt32(drZhan[0]["READTIMESPAN"].ToString());
|
||
GetDataThread arrayThread = new GetDataThread(Station);
|
||
Thread ThreadZCID = new Thread(new ThreadStart(arrayThread.GetPLCData));
|
||
ThreadZCID.Start();
|
||
ThreadDictionary[ZCID] = ThreadZCID;
|
||
strAppend("重启" + Station.ZCName + "采集成功");
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{ }
|
||
}
|
||
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 初始化系统所需要的DataSet 和DataTable 结构和数据
|
||
/// </summary>
|
||
protected void InitialTalbe() //初始化实时数据表格过程,以便添加计量点后重新构建实时数据表格
|
||
{
|
||
strAppend(DateTime.Now.ToString() + "------开始初始化相关表格!");
|
||
|
||
try
|
||
{
|
||
|
||
DataTable dtDateTime = new DataTable();
|
||
dtDateTime.Columns.Add("ZCID", typeof(string));
|
||
dtDateTime.Columns.Add("ZCNAME", typeof(string));
|
||
dtDateTime.Columns.Add("PLCTime", typeof(string));
|
||
dtDateTime.Columns.Add("TongBuTime", typeof(string));
|
||
dtDateTime.Columns.Add("TongBuFlag", typeof(string));
|
||
|
||
DataTable parTable = new DataTable();
|
||
parTable.Columns.Add("CH4", typeof(string));
|
||
parTable.Columns.Add("N2", typeof(string));
|
||
parTable.Columns.Add("CO2", typeof(string));
|
||
parTable.Columns.Add("C2H6", typeof(string));
|
||
parTable.Columns.Add("C3H8", typeof(string));
|
||
parTable.Columns.Add("H2O", typeof(string));
|
||
parTable.Columns.Add("H2S", typeof(string));
|
||
parTable.Columns.Add("H2", typeof(string));
|
||
parTable.Columns.Add("CO ", typeof(string));
|
||
parTable.Columns.Add("O2", typeof(string));
|
||
parTable.Columns.Add("i-C4H10", typeof(string));
|
||
parTable.Columns.Add("n-C4H10", typeof(string));
|
||
parTable.Columns.Add("i-C5H12", typeof(string));
|
||
parTable.Columns.Add("n-C5H12", typeof(string));
|
||
parTable.Columns.Add("n-C6H14", typeof(string));
|
||
parTable.Columns.Add("n-C7H16", typeof(string));
|
||
parTable.Columns.Add("n-C8H18", typeof(string));
|
||
parTable.Columns.Add("n-C9H20", typeof(string));
|
||
parTable.Columns.Add("n-C10H22", typeof(string));
|
||
parTable.Columns.Add("He", typeof(string));
|
||
parTable.Columns.Add("Ar", typeof(string));
|
||
parTable.Columns.Add("bak", typeof(string));
|
||
parTable.Columns.Add("GJ", typeof(string));
|
||
parTable.Columns.Add("KJ", typeof(string));
|
||
parTable.Columns.Add("Gr", typeof(string));
|
||
parTable.Columns.Add("DLND", typeof(string));
|
||
parTable.Columns.Add("DSZS", typeof(string));
|
||
parTable.Columns.Add("BAK1", typeof(string));
|
||
parTable.Columns.Add("BAK2", typeof(string));
|
||
parTable.Columns.Add("BAK3", typeof(string));
|
||
parTable.Columns.Add("Station_ID", typeof(string));
|
||
parTable.Columns.Add("ID", typeof(string));
|
||
parTable.Columns.Add("JLD_ID", typeof(string));
|
||
parTable.Columns.Add("ReadTime", typeof(string));
|
||
parTable.Columns.Add("JLD_NAME", typeof(string));
|
||
parTable.Columns.Add("CLXX", typeof(string));
|
||
parTable.Columns.Add("CLSX", typeof(string));
|
||
|
||
|
||
dtZhan.Clear();
|
||
dsJLDataRealTime.Tables.Clear();
|
||
|
||
#region 初始化站场表格,获取所有自动计量站场
|
||
strAppend(DateTime.Now.ToString() + "------查询数据库获取所有站场资料!");
|
||
|
||
try
|
||
{
|
||
|
||
|
||
dtZhan = new DataTable();
|
||
dtZhan = OracleLink.ExecuteDataTable(SQL_Strings.strSQLZhan, "JLXT", strErr);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string strFileName = strDataPath + "dtZhan.xml";
|
||
dtZhan.ReadXml(strFileName);
|
||
}
|
||
|
||
dtZhan.TableName = "集输站场";
|
||
DataTable dtStationNew = dtZhan.Copy();
|
||
|
||
for (int i = 0; i < dtZhan.Rows.Count; i++)
|
||
{
|
||
|
||
//柳屯配气站两台PLC 区分
|
||
|
||
string[] tempIp = dtZhan.Rows[i]["IP"].ToString().Split(',');
|
||
string[] tempPORT = dtZhan.Rows[i]["PORT"].ToString().Split(',');
|
||
|
||
if (tempIp.Length > 1)
|
||
{
|
||
DataRow drTemp = dtStationNew.NewRow();
|
||
drTemp.ItemArray = dtZhan.Rows[i].ItemArray;
|
||
dtStationNew.Rows[i]["org_id"] = dtZhan.Rows[i]["org_id"].ToString() + "_0";
|
||
dtStationNew.Rows[i]["org_name"] = dtZhan.Rows[i]["org_name"].ToString() + "_0";
|
||
dtStationNew.Rows[i]["IP"] = tempIp[0];
|
||
dtStationNew.Rows[i]["PORT"] = tempPORT[0];
|
||
for (int j = 1; j < tempIp.Length; j++)
|
||
{
|
||
drTemp["org_id"] = dtZhan.Rows[i]["org_id"].ToString() + "_" + j.ToString();
|
||
drTemp["org_name"] = dtZhan.Rows[i]["org_name"].ToString() + "_" + j.ToString();
|
||
drTemp["IP"] = tempIp[j];
|
||
drTemp["PORT"] = tempPORT[j];
|
||
dtStationNew.Rows.Add(drTemp);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
DataView dv = dtStationNew.DefaultView;
|
||
|
||
dv.RowFilter = "NETTYPE='0'";
|
||
dtZhanNet = dv.ToTable();
|
||
|
||
dv.RowFilter = "NETTYPE='1'";
|
||
dtZhanGPRS = dv.ToTable();
|
||
|
||
strAppend(DateTime.Now.ToString() + "------站场资料获取成功!");
|
||
#endregion
|
||
#region 初始化站场计量点结构Dataset
|
||
|
||
DataTable dtDataRealTime = new DataTable();
|
||
|
||
//ID,JLD_NAME,WD,YL,CY,SSL,JRL,ZRL,LJL,BYL,SYL,ZRSJ,JRSJ,YBZT,RTIME,JLD_ID,STATION_ID,STATION_NAME,DEPT_ID
|
||
|
||
dtDataRealTime.Columns.Add("ID", typeof(string));
|
||
dtDataRealTime.Columns.Add("RTIME", typeof(string));
|
||
dtDataRealTime.Columns.Add("JLD_NAME", typeof(string));
|
||
dtDataRealTime.Columns.Add("WD", typeof(string));
|
||
dtDataRealTime.Columns.Add("YL", typeof(string));
|
||
dtDataRealTime.Columns.Add("CY", typeof(string));
|
||
dtDataRealTime.Columns.Add("SSL", typeof(string));
|
||
dtDataRealTime.Columns.Add("JRL", typeof(string));
|
||
dtDataRealTime.Columns.Add("ZRL", typeof(string));
|
||
dtDataRealTime.Columns.Add("LJL", typeof(string));
|
||
dtDataRealTime.Columns.Add("BYL", typeof(string));
|
||
dtDataRealTime.Columns.Add("SYL", typeof(string));
|
||
dtDataRealTime.Columns.Add("JRSJ", typeof(string));
|
||
dtDataRealTime.Columns.Add("ZRSJ", typeof(string));
|
||
dtDataRealTime.Columns.Add("YBZT", typeof(string));
|
||
dtDataRealTime.Columns.Add("SSGKLL", typeof(string));
|
||
dtDataRealTime.Columns.Add("JLD_ID", typeof(string));
|
||
dtDataRealTime.Columns.Add("STATION_ID", typeof(string));
|
||
dtDataRealTime.Columns.Add("STATION_NAME", typeof(string));
|
||
dtDataRealTime.Columns.Add("DEPT_ID", typeof(string));
|
||
dtDataRealTime.Columns.Add("MeterTYPE", typeof(string));
|
||
dtDataRealTime.Columns.Add("readparflag", typeof(string));
|
||
dtDataRealTime.Columns.Add("TongBuFlag", typeof(string));
|
||
dtDataRealTime.Columns.Add("CXFlag", typeof(string));
|
||
dtDataRealTime.Columns.Add("LinkStatu", typeof(string)); //计量点连接情况,对于流量积算仪的模式 如果没装表读不上来数可以设置
|
||
|
||
// 初始化站场计量点表格
|
||
|
||
strAppend(DateTime.Now.ToString() + "------初始化站场计量点表格和计量点参数");
|
||
|
||
for (int i = 0; i < dtStationNew.Rows.Count; i++)
|
||
{
|
||
DataTable dtPar = new DataTable();
|
||
DataTable dtJLD = new DataTable();
|
||
dtJLD = dtJldList(dtStationNew.Rows[i]["ORG_ID"].ToString(), dtStationNew.Rows[i]["PARENT_ORG_ID"].ToString(), dtDataRealTime, parTable, out dtPar);
|
||
dsPparameter.Tables.Add(dtPar);
|
||
dsJLDataRealTime.Tables.Add(dtJLD);
|
||
|
||
|
||
//初始化站场时间表格结构和数据
|
||
DataTable dtTimeTemp = dtDateTime.Clone();
|
||
dtTimeTemp.TableName = dtStationNew.Rows[i]["ORG_ID"].ToString();
|
||
DataRow drTime = dtTimeTemp.NewRow();
|
||
drTime["ZCID"] = dtStationNew.Rows[i]["ORG_ID"];
|
||
drTime["ZCNAME"] = dtStationNew.Rows[i]["ORG_NAME"];
|
||
dtTimeTemp.Rows.Add(drTime);
|
||
dsZhanDateTime.Tables.Add(dtTimeTemp);
|
||
}
|
||
strAppend(DateTime.Now.ToString() + "------站场参数、计量点、时间结构和数据表格初始化完成!");
|
||
|
||
#endregion
|
||
#region 初始化输差表格
|
||
strAppend(DateTime.Now.ToString() + "------初始化输差表格 开始!");
|
||
blWriteParXMLFlag = true;
|
||
dtScRealTime.Columns.Add("SCID", typeof(string));
|
||
dtScRealTime.Columns.Add("RTIME", typeof(string));
|
||
dtScRealTime.Columns.Add("SCNAME", typeof(string));
|
||
dtScRealTime.Columns.Add("SCTYPE", typeof(string));
|
||
|
||
dtScRealTime.Columns.Add("IN_P", typeof(string));
|
||
dtScRealTime.Columns.Add("OUT_P", typeof(string));
|
||
dtScRealTime.Columns.Add("SsInTotal", typeof(string));
|
||
dtScRealTime.Columns.Add("SsOutTotal", typeof(string));
|
||
dtScRealTime.Columns.Add("SsSc", typeof(string));
|
||
dtScRealTime.Columns.Add("SsPer", typeof(string));
|
||
|
||
dtScRealTime.Columns.Add("JrInTotal", typeof(string));
|
||
dtScRealTime.Columns.Add("JrOutTotal", typeof(string));
|
||
dtScRealTime.Columns.Add("JrSc", typeof(string));
|
||
dtScRealTime.Columns.Add("JrPer", typeof(string));
|
||
|
||
dtScRealTime.Columns.Add("ZrInTotal", typeof(string));
|
||
dtScRealTime.Columns.Add("ZrOutTotal", typeof(string));
|
||
dtScRealTime.Columns.Add("ZrSc", typeof(string));
|
||
dtScRealTime.Columns.Add("ZrPer", typeof(string));
|
||
|
||
dtScRealTime.Columns.Add("IN_JLD_ID", typeof(string));
|
||
dtScRealTime.Columns.Add("OUT_JLD_ID", typeof(string));
|
||
dtScRealTime.Columns.Add("DEPT_ID", typeof(string));
|
||
dtScRealTime.Columns.Add("STATION_ID", typeof(string));
|
||
dtScRealTime.Columns.Add("RE_DEPT_ID", typeof(string));
|
||
dtScRealTime.TableName = "SsSC";
|
||
|
||
strSQL = SQL_Strings.strSQLScConfig + " order by ID";
|
||
DataTable dtScConfig = new DataTable();
|
||
dtScConfig = OracleLink.ExecuteDataTable(strSQL, "JLXT", strErr);
|
||
if (dtScConfig.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow dr1 in dtScConfig.Rows)
|
||
{
|
||
DataRow drJld = dtScRealTime.NewRow();
|
||
drJld["SCID"] = dr1["ID"];
|
||
drJld["SCNAME"] = dr1["TRANS_NAME"];
|
||
drJld["IN_JLD_ID"] = dr1["IN_POINTS"];
|
||
drJld["OUT_JLD_ID"] = dr1["OUT_POINTS"];
|
||
drJld["DEPT_ID"] = dr1["DEPT_ID"];
|
||
drJld["STATION_ID"] = dr1["STATION_ID"];
|
||
drJld["SCTYPE"] = dr1["TRANS_TYPE"];
|
||
drJld["RE_DEPT_ID"] = dr1["RE_DEPT_ID"];
|
||
dtScRealTime.Rows.Add(drJld);
|
||
}
|
||
}
|
||
|
||
|
||
File.Delete(strConfigPath + "dsJlDataRealTime.xml");
|
||
File.Delete(strConfigPath + "dsPparameter.xml");
|
||
File.Delete(strConfigPath + "dsZhanDateTime.xml");
|
||
|
||
dsJLDataRealTime.WriteXml(strConfigPath + "dsJlDataRealTime.xml", XmlWriteMode.WriteSchema);//暂存数据结构表
|
||
dsPparameter.WriteXml(strConfigPath + "dsPparameter.xml", XmlWriteMode.WriteSchema);//暂存数据结构表
|
||
dsZhanDateTime.WriteXml(strConfigPath + "dsZhanDateTime.xml", XmlWriteMode.WriteSchema);//暂存数据结构表
|
||
}
|
||
catch (Exception ex)
|
||
{ }
|
||
strAppend(DateTime.Now.ToString() + "------初始化完成!");
|
||
#endregion
|
||
}
|
||
/// <summary>
|
||
/// 获取某个站场的计量点结构 和参数表结构
|
||
/// </summary>
|
||
/// <param name="ZCID">传递站场ID</param>
|
||
/// <param name="Dept_ID">传递单位ID</param>
|
||
/// <param name="dtDataRealTime">计量点表结构</param>
|
||
/// <param name="parTable">参数表结构</param>
|
||
/// <param name="dtParList">返回参数表结构</param>
|
||
/// <returns>返回计量点表结构</returns>
|
||
private DataTable dtJldList(string ZCID, string Dept_ID, DataTable dtDataRealTime, DataTable parTable, out DataTable dtParList)
|
||
{
|
||
|
||
DataTable dtTempStation = new DataTable();
|
||
DataTable dtJLD = new DataTable();
|
||
string strSTATION_Name = "";
|
||
string[] tempZCID = ZCID.Split('_');
|
||
strSQL = SQL_Strings.strSQLJld + tempZCID[0] + "' and plc='1' order by jld_id";
|
||
dtTempStation = OracleLink.ExecuteDataTable("select * from SYS_ORGANISE where ORG_ID='" + tempZCID[0] + "'", "JLXT", "");
|
||
string[] tempIp = dtTempStation.Rows[0]["IP"].ToString().Split(',');
|
||
strSTATION_Name = dtTempStation.Rows[0]["ORG_NAME"].ToString();// OracleLink.getStationName(ZCID);
|
||
try
|
||
{
|
||
if (tempZCID.Length > 1)
|
||
{
|
||
dtJLD = OracleLink.ExecuteDataTable(SQL_Strings.strSQLJld + tempZCID[0] + "' and plc='1' and device_id='" + tempZCID[1] + "' order by jld_id", "JLXT", strErr);
|
||
}
|
||
else
|
||
{
|
||
dtJLD = OracleLink.ExecuteDataTable(strSQL, "JLXT", strErr);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
}
|
||
if (dtJLD.Rows.Count > 0)
|
||
{
|
||
DataTable dtTemp = dtDataRealTime.Clone();
|
||
DataTable dtPar = parTable.Clone();
|
||
foreach (DataRow dr1 in dtJLD.Rows)
|
||
{
|
||
// 初始化站场计量点表格结构和数据
|
||
DataRow drJld = dtTemp.NewRow();
|
||
drJld["ID"] = dr1["ID"];
|
||
drJld["JLD_NAME"] = dr1["Jld_name"];
|
||
drJld["JLD_ID"] = dr1["JLD_ID"];
|
||
drJld["MeterTYPE"] = dr1["FLOWMETER_TYPE"];
|
||
drJld["STATION_ID"] = dr1["STATION_NAME"];
|
||
drJld["STATION_NAME"] = strSTATION_Name;
|
||
drJld["readparflag"] = "1";
|
||
drJld["DEPT_ID"] = Dept_ID;
|
||
dtTemp.Rows.Add(drJld);
|
||
|
||
// 初始化站场参数表格结构和数据
|
||
DataRow drPar = dtPar.NewRow();
|
||
drPar["ID"] = dr1["ID"];
|
||
drPar["JLD_ID"] = dr1["JLD_ID"];
|
||
drPar["Station_ID"] = dr1["STATION_NAME"];
|
||
drPar["JLD_NAME"] = dr1["Jld_name"];
|
||
try
|
||
{
|
||
string strTempSQL = "select clsbmc,ccbh,clfw from 测量设备台帐 where sycfdd='" + dr1["AZDD"].ToString() + "' and ZT='在用' and clsbmc like'%流量计%'";
|
||
DataTable dtTempCLSB = OracleLink.ExecuteDataTable(strTempSQL, "JLXT", strErr);
|
||
if (dtTempCLSB.Rows.Count > 0)
|
||
{
|
||
string[] strCLFW = dtTempCLSB.Rows[0]["CLFW"].ToString().Split('~');
|
||
drPar["CLXX"] = strCLFW[0].Substring(1, strCLFW[0].Length - 1);
|
||
drPar["CLSX"] = strCLFW[1].Substring(0, strCLFW[1].IndexOf(')'));
|
||
}
|
||
}
|
||
catch { }
|
||
dtPar.Rows.Add(drPar);
|
||
}
|
||
dtTemp.TableName = ZCID;
|
||
dtPar.TableName = ZCID;
|
||
dtParList = dtPar.Copy();
|
||
return dtTemp;
|
||
}
|
||
else
|
||
{
|
||
DataTable dtTemp = dtDataRealTime.Clone();
|
||
DataTable dtPar = parTable.Clone();
|
||
dtTemp.TableName = ZCID;
|
||
dtPar.TableName = ZCID;
|
||
dtParList = dtPar.Copy();
|
||
return dtTemp;
|
||
}
|
||
}
|
||
private DataTable dtJldList(string ZCID)
|
||
{
|
||
|
||
dsJLDataRealTime.Tables[ZCID].Clear();
|
||
dsPparameter.Tables[ZCID].Clear();
|
||
|
||
string strTempFileName = @"D:\GetPLCData\Data\Config\";
|
||
DataSet dsJldTemp = new DataSet();
|
||
dsJldTemp.ReadXml(strTempFileName + "dsJlDataRealTime.xml");//暂存数据结构表
|
||
DataSet dsParTemp = new DataSet();
|
||
dsParTemp.ReadXml(strTempFileName + "dsPparameter.xml");//暂存数据结构表
|
||
|
||
|
||
foreach (DataRow dr1 in dsJldTemp.Tables[ZCID].Rows)
|
||
{
|
||
// 初始化站场计量点表格结构和数据
|
||
DataRow drJld = dsJLDataRealTime.Tables[ZCID].NewRow();
|
||
drJld["ID"] = dr1["ID"];
|
||
drJld["JLD_NAME"] = dr1["Jld_name"];
|
||
drJld["JLD_ID"] = dr1["JLD_ID"];
|
||
drJld["MeterTYPE"] = dr1["FLOWMETER_TYPE"];
|
||
drJld["STATION_ID"] = dr1["STATION_ID"];
|
||
drJld["STATION_NAME"] = dr1["STATION_NAME"];
|
||
drJld["readparflag"] = dr1["readparflag"];
|
||
drJld["DEPT_ID"] = dr1["DEPT_ID"];
|
||
|
||
dsJLDataRealTime.Tables[ZCID].Rows.Add(drJld);
|
||
|
||
// 初始化站场参数表格结构和数据
|
||
DataRow drPar = dsPparameter.Tables[ZCID].NewRow();
|
||
drPar["ID"] = dr1["ID"];
|
||
drPar["JLD_ID"] = dr1["JLD_ID"];
|
||
drPar["Station_ID"] = dr1["ZCID"];
|
||
drPar["JLD_NAME"] = dr1["Jld_name"];
|
||
drPar["CLFW"] = dr1["CLFW"];
|
||
drPar["CLXX"] = dr1["CLXX"];
|
||
drPar["CLSX"] = dr1["CLSX"];
|
||
|
||
dsPparameter.Tables[ZCID].Rows.Add(drPar);
|
||
}
|
||
return null;
|
||
|
||
}
|
||
/// <summary>
|
||
/// 控制台输出运行信息,并写入日志文件
|
||
/// </summary>
|
||
/// <param name="strMessage"></param>
|
||
public static void strAppend(string strMessage)
|
||
{
|
||
|
||
string strFilePath = strLogPath;
|
||
try
|
||
{
|
||
Console.WriteLine(strMessage);
|
||
using (StreamWriter sw = File.AppendText(strFilePath))
|
||
{
|
||
sw.WriteLine(strMessage);
|
||
sw.Flush();
|
||
sw.Close();
|
||
}
|
||
}
|
||
catch (Exception)
|
||
{
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 控制台输出运行信息,并写入日志文件
|
||
/// </summary>
|
||
/// <param name="strMessage"></param>
|
||
public static void strAppend(string strMessage, string ZCMC)
|
||
{
|
||
|
||
string strFilePath = strLogPath_Data + ZCMC + ".txt";
|
||
try
|
||
{
|
||
Console.WriteLine(strMessage);
|
||
using (StreamWriter sw = File.AppendText(strFilePath))
|
||
{
|
||
sw.WriteLine(strMessage);
|
||
sw.Flush();
|
||
sw.Close();
|
||
}
|
||
}
|
||
catch (Exception)
|
||
{
|
||
}
|
||
}
|
||
|
||
|
||
protected bool isNumberic(string message)
|
||
{
|
||
System.Text.RegularExpressions.Regex rex =
|
||
new System.Text.RegularExpressions.Regex(@"^(-)?[1-9][0-9]*$");
|
||
if (rex.IsMatch(message))
|
||
{
|
||
return true;
|
||
}
|
||
else
|
||
return false;
|
||
}
|
||
/// <summary>
|
||
/// 把DataTable数据转换为Json格式
|
||
/// </summary>
|
||
/// <param name="dt">传入DataTable数据</param>
|
||
/// <returns></returns>
|
||
public string DataTableToJson(DataTable dt, DataTable dtTime, string strStationID)
|
||
{
|
||
try
|
||
{
|
||
|
||
|
||
string[] stationid = strStationID.Split('_');
|
||
string strDept_ID = "";
|
||
string strStationName = "";
|
||
string strDeptName = "";
|
||
if (stationid.Length > 1)
|
||
{
|
||
strStationName = OracleLink.getStationName(stationid[0], ref strDept_ID) + stationid[1];
|
||
strDeptName = OracleLink.getStationName(strDept_ID);
|
||
}
|
||
else
|
||
{
|
||
strStationName = OracleLink.getStationName(stationid[0], ref strDept_ID);
|
||
strDeptName = OracleLink.getStationName(strDept_ID);
|
||
}
|
||
StringBuilder jsonBuilder = new StringBuilder();
|
||
jsonBuilder.Append("{\"total\"");
|
||
jsonBuilder.Append(":");
|
||
jsonBuilder.Append(dt.Rows.Count);
|
||
jsonBuilder.Append(",\"Dept_ID\"");
|
||
jsonBuilder.Append(":\"");
|
||
jsonBuilder.Append(strDept_ID);
|
||
jsonBuilder.Append("\",\"Dept_Name\"");
|
||
jsonBuilder.Append(":\"");
|
||
jsonBuilder.Append(strDeptName);
|
||
jsonBuilder.Append("\",\"Station_ID\"");
|
||
jsonBuilder.Append(":\"");
|
||
jsonBuilder.Append(strStationID);
|
||
jsonBuilder.Append("\",\"Station_Name\"");
|
||
jsonBuilder.Append(":\"");
|
||
jsonBuilder.Append(strStationName);
|
||
jsonBuilder.Append("\",\"Time\"");
|
||
jsonBuilder.Append(":\"");
|
||
jsonBuilder.Append(dtTime.Rows[0]["PLCTime"]);
|
||
jsonBuilder.Append("\",\"rows");
|
||
jsonBuilder.Append("\":[");
|
||
for (int i = 0; i < dt.Rows.Count; i++)
|
||
{
|
||
jsonBuilder.Append("{");
|
||
for (int j = 0; j < dt.Columns.Count; j++)
|
||
{
|
||
jsonBuilder.Append("\"");
|
||
jsonBuilder.Append(dt.Columns[j].ColumnName);
|
||
jsonBuilder.Append("\":\"");
|
||
if (dt.Columns[j].ColumnName == "RQ")
|
||
{
|
||
jsonBuilder.Append(dt.Rows[i][j].ToString().Split(' ')[0]);
|
||
}
|
||
else
|
||
{
|
||
jsonBuilder.Append(dt.Rows[i][j].ToString());
|
||
}
|
||
|
||
|
||
jsonBuilder.Append("\",");
|
||
}
|
||
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
|
||
jsonBuilder.Append("},");
|
||
}
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
|
||
}
|
||
jsonBuilder.Append("],");
|
||
jsonBuilder.Append("\"title");
|
||
//jsonBuilder.Append(dt.TableName);
|
||
jsonBuilder.Append("\":[");
|
||
//这是循环获取列名称
|
||
for (int n = 0; n < dt.Columns.Count; n++)
|
||
{
|
||
jsonBuilder.Append("{");
|
||
jsonBuilder.Append("\"field");
|
||
jsonBuilder.Append("\":\"");
|
||
jsonBuilder.Append(dt.Columns[n].ColumnName);
|
||
jsonBuilder.Append("\",");
|
||
jsonBuilder.Append("\"title");
|
||
jsonBuilder.Append("\":\"");
|
||
jsonBuilder.Append(getStrColumnName(dt.Columns[n].ColumnName));
|
||
jsonBuilder.Append("\"");
|
||
jsonBuilder.Append("},");
|
||
}
|
||
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
|
||
jsonBuilder.Append("},");
|
||
|
||
jsonBuilder.Remove(jsonBuilder.Length - 2, 2);
|
||
jsonBuilder.Append("]");
|
||
jsonBuilder.Append("}");
|
||
return jsonBuilder.ToString();
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
return "错误";
|
||
}
|
||
|
||
}
|
||
|
||
private string getStrColumnName(string strName)
|
||
{
|
||
string temp = "";
|
||
switch (strName)
|
||
{
|
||
case "YL":
|
||
temp = "压力(MPa)";
|
||
//temp = "压力(MPa)";
|
||
break;
|
||
case "CY":
|
||
temp = "压力(kPa)";
|
||
break;
|
||
case "WD":
|
||
temp = "温度(℃)";
|
||
break;
|
||
case "SSL":
|
||
temp = "瞬时流量(Nm³/d)";
|
||
break;
|
||
case "JRL":
|
||
temp = "今日流量(Nm³)";
|
||
break;
|
||
case "ZRL":
|
||
temp = "昨日流量(Nm³)";
|
||
break;
|
||
case "JLD_NAME":
|
||
temp = "计量点名称";
|
||
break;
|
||
case "JRSJ":
|
||
temp = "今日时间(分钟)";
|
||
break;
|
||
case "ZRSJ":
|
||
temp = "昨日时间(分钟)";
|
||
break;
|
||
case "YBZT":
|
||
temp = "仪表状态";
|
||
break;
|
||
case "SSGKLL":
|
||
temp = "瞬时工况流量";
|
||
break;
|
||
case "JLD_ID":
|
||
temp = "站内ID";
|
||
break;
|
||
|
||
|
||
}
|
||
|
||
return temp;
|
||
}
|
||
|
||
}
|
||
}
|