Пример #1
0
        public static Dictionary <string, HourData> GetCsvData2(string filePath, int row)
        {
            using (var reader = new StreamReader(filePath))
            {
                var names = new List <string>();

                var asset = new Dictionary <string, HourData>();

                for (var i = 0; i < row && !reader.EndOfStream; i++)
                {
                    var line   = reader.ReadLine();
                    var values = line.Split('\t');
                    if (i == 0)
                    {
                        names.AddRange(values);
                        foreach (var name in names.Where(c => !c.Contains("Time")))
                        {
                            DbHelper.CreateAssetIfNotExist(name.Replace("\"", ""));
                        }
                    }
                    else
                    {
                        for (var col = 0; col < values.Length; col++)
                        {
                            var assetName = names[col].Replace("\"", "");
                            if (assetName.Contains("Time"))
                            {
                                continue;
                            }

                            var date        = DateTime.Parse(values[0]);
                            var stringValue = values[col];
                            var item        = double.TryParse(stringValue, out var number) ? new Item(number, date) : new Item(stringValue, date);
                            var key         = $"SensorData_{assetName}_{date:yyyy_MM_dd_HH}";

                            if (!asset.ContainsKey(key))
                            {
                                asset[key] = new HourData(assetName, item.DateTime);
                                DbHelper.AddHourlyDataKeyToAsset(assetName, key);
                            }
                            asset[key].Items.Add(item);
                        }
                    }
                }
                return(asset);
            }
        }
Пример #2
0
        public static void AddDataV1(Dictionary <string, List <Item> > items)
        {
            foreach (var itemsKey in items.Keys)
            {
                CreateAssetIfNotExist(itemsKey);
            }

            foreach (var data in items)
            {
                var hourlyData = new Dictionary <string, HourData>();
                foreach (var item in data.Value)
                {
                    var key = item.DateTime.ToString("yyyy_MM_dd_HH");
                    if (!hourlyData.ContainsKey(key))
                    {
                        hourlyData[key] = new HourData(data.Key, item.DateTime);
                    }

                    hourlyData[key].Items.Add(item);
                }

                foreach (var hourData in hourlyData)
                {
                    using (var session = DocumentStoreHolder.Store.OpenSession("TestDb1"))
                    {
                        session.Store(hourData.Value);
                        var id = hourData.Value.Id;
                        session.SaveChanges();

                        var asset = session.Load <SensorAsset>(hourData.Value.Asset);
                        asset.HourDatas.Add(id);
                        session.SaveChanges();
                        Console.WriteLine($"Added {data.Key}");
                    }
                }
            }
        }