예제 #1
0
 public async void CreatePoin(Record record)
 {
     string url = "http://api.map.baidu.com/geodata/poi?method=create";
     var content = new FormUrlEncodedContent(new Dictionary<string, string>() { 
         {"databox_id",ApplicationData.DataboxId },
         {"name",record.Id.ToString()},
         {"address",record.Address},
         {"original_lat",record.Lat.ToString()},
         {"original_lon",record.Lnt.ToString()},
         {"original_coord_type","3"},
         {"ak",ApplicationData.MapKey}
     });
     var response = await httpClient.PostAsync(url, content);
     Console.WriteLine(response.Content.ReadAsStringAsync().Result);
 }
예제 #2
0
        public void ResolvePersonLocation(string content, Record record)
        {
            XDocument xDoc = XDocument.Parse(content);
            var status = (from s in xDoc.Elements("GeocoderSearchResponse").Elements("status")
                          select s.Value).FirstOrDefault();

            if (!string.IsNullOrEmpty(status))
            {
                int statusInt = Convert.ToInt32(status);
                if (statusInt == 0)
                {
                    var lat = (from a in xDoc.Elements("GeocoderSearchResponse")
                                   .Elements("result")
                                   .Elements("location")
                                   .Elements("lat")
                               select a.Value).FirstOrDefault();
                    var lnt = (from a in xDoc.Elements("GeocoderSearchResponse")
                                   .Elements("result")
                                   .Elements("location")
                                   .Elements("lng")
                               select a.Value).FirstOrDefault();
                    if (!string.IsNullOrEmpty(lat) && !string.IsNullOrEmpty(lnt))
                    {
                        record.Lat = Convert.ToDouble(lat);
                        record.Lnt = Convert.ToDouble(lnt);
                    }
                }
                else
                {
                    Console.WriteLine("Get xml status error,status is {0}", status);
                }
            }
            else
            {
                Console.WriteLine("Get xml status error,status is null");
            }
        }
예제 #3
0
 public async Task TransLocation(Record record, string url)
 {
     string content = await httpClient.GetStringAsync(url);
     ResolvePersonLocation(content, record);
 }
예제 #4
0
        public static void InsertData(DataSet dataSet)
        {
            if (dataSet == null)
                throw new ArgumentNullException("DataSet param is null");

            try
            {
                //ConcurrentDictionary<string, object> cache = new ConcurrentDictionary<string, object>();
                ICacheManager cache = new MemoryCacheManager();

                var exceptions = new ConcurrentQueue<Exception>();
                List<Task> tasks = new List<Task>();
                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                using (var container = new ModelsContainer())
                {
                    foreach (DataTable dt in dataSet.Tables)
                    {
                        //Task task = Task.Factory.StartNew(() =>
                        //{
                        try
                        {
                            Console.WriteLine("----------Table name is : {0}---------", dt.TableName);
                            int cursor = 0;
                            foreach (DataRow dr in dt.Rows)
                            {
                                Record record = new Record();

                                string brandsName = dr[0].ToString();
                                var brands = cache.Get<Brands>(brandsName, () =>
                                {
                                    return new Brands() { Name = brandsName };
                                });
                                record.Brands = brands;

                                string modelsName = dr[1].ToString();
                                var models = cache.Get<Models>(modelsName, () =>
                                {
                                    return new Models() { Name = modelsName };
                                });
                                record.Models = models;

                                record.City = dr[2].ToString();
                                string dv = dr[3].ToString().Replace(".", "");
                                string d = string.Format("{0}-{1}-01", dv.Substring(0, 4), dv.Substring(4, 2)).Trim();
                                var buyYear = cache.Get<BuyYear>(d, () =>
                                {
                                    return new BuyYear() { Time = Convert.ToDateTime(d) };
                                });
                                record.BuyYear = buyYear;

                                d = string.Format("{0}-01-01", dr[4].ToString());
                                record.Both = DateTime.Parse(d);
                                bool g = dr[5].ToString().Equals("男") ? true : false;
                                record.Gender = Convert.ToBoolean(g);
                                record.Address = dr[6].ToString();
                                record.Zip = dr[7].ToString();

                                container.Set<Record>().Add(record);
                                Console.WriteLine("address {0}, cursor = {1}, threadId = {2}", record.Address, cursor, Thread.CurrentThread.ManagedThreadId);
                                cursor++;
                                if (cursor == 100)
                                {
                                    cursor = 0;
                                    container.SaveChanges();
                                }
                            }

                        }
                        catch (Exception ex)
                        {
                            exceptions.Enqueue(ex);
                        }
                        //});
                        //tasks.Add(task);
                        container.SaveChanges();
                    }
                }

                //Task.WaitAll(tasks.ToArray());

                stopwatch.Stop();
                TimeSpan ts = stopwatch.Elapsed;
                string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                ts.Hours, ts.Minutes, ts.Seconds,
                ts.Milliseconds / 10);
                Console.WriteLine("RunTime " + elapsedTime);
                if (exceptions.Any())
                {
                    Console.WriteLine("Parallel have exceptions, count = {0}", exceptions.Count());
                }
            }
            catch (Exception ex)
            {
                string msg = ex.OutputMessage();
                Console.WriteLine("{0}", msg);
            }
        }