Beispiel #1
0
        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);
        }
Beispiel #2
0
        //根据数据源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();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }