public static void toWitsTable(String str, out String tabid) { WitsTable wt = new WitsTable(); DataRow dr; ConcurrentQueue <String> itemIndexs = new ConcurrentQueue <string>(); ConcurrentQueue <String> values = new ConcurrentQueue <string>(); String[] temp; temp = str.Split(dataSep, StringSplitOptions.RemoveEmptyEntries); tabid = temp[0].Substring(0, 2); foreach (String var in temp) { itemIndexs.Enqueue(var.Substring(2, 2)); values.Enqueue(var.Substring(4, var.Length - 4)); } while (itemIndexs.Count > 0 && values.Count > 0) { String itemIndex; String value; itemIndexs.TryDequeue(out itemIndex); values.TryDequeue(out value); dr = wt.NewRow(); dr.ItemArray = new String[] { itemIndex, value }; wt.Rows.Add(dr); } idQueue.Enqueue(tabid); tabQueue.Enqueue(wt); }
//根据数据源tempTable取出表号,查字典将curveName和Value值对应,然后写入相应数据库表中 private void ParseTableData(DataTable tempTable, int columnIndex) { if (tempTable == null || tempTable.Rows.Count <= 0) { return; } Dictionary <string, DataTable> curveNameDictionary = new Dictionary <string, DataTable>(); DataTable dataTable = new DataTable(); WitsTable witsTable = new WitsTable(); //取出TableNo List <string> TableNolist = new List <string>(); foreach (DataRow dr in tempTable.Rows) { string value = dr[columnIndex].ToString(); if (!TableNolist.Contains(value)) { TableNolist.Add(value); } } //获取WitsTable用于保存解析后的数据,作为发送给数据库的数据源 foreach (string toolName in m_curveNameDictionary.Keys) { if (m_curveNameDictionary.TryGetValue(toolName, out curveNameDictionary)) { foreach (string tableNo in curveNameDictionary.Keys) { //本次数据,含此表号,继续查询 if (TableNolist.Contains(tableNo)) { if (curveNameDictionary.TryGetValue(tableNo, out dataTable)) { //根据TableNolist中TableNo,取出相应行的"ItemIndex"和"Value" foreach (DataRow drTemp in tempTable.Rows) { //该行第一列值与TableNo一致 if (tableNo == drTemp[columnIndex].ToString()) { //给dataTable赋值,将值与curveName对应 foreach (DataRow dr in dataTable.Rows) { //通过tempTable的index和dataTable的ItemIndex匹配,给dataTable赋值 if (drTemp["ItemIndex"].ToString() == dr["ItemIndex"].ToString()) { dr["Value"] = drTemp[columnIndex + 2]; } } } } foreach (String strKey in m_witsTableDictionary[toolName].Keys) { if (strKey == tableNo) { if (m_witsTableDictionary[toolName].TryGetValue(tableNo, out witsTable)) { DataRow witsRow = witsTable.NewRow(); foreach (DataRow dr in dataTable.Rows) { //两个curveName匹配,给witsTable赋值 if (witsTable.Columns.Contains(dr["curveName"].ToString())) { witsRow[dr["curveName"].ToString()] = dr["Value"]; } } witsTable.Rows.Add(witsRow); Stopwatch sw = new Stopwatch(); sw.Start(); m_dBHelper.InsertWitsData(toolName, tableNo, witsTable); sw.Stop(); long time1 = sw.ElapsedMilliseconds; witsTable.Clear(); } } } } } } } } }