Procházet zdrojové kódy

Merge branch 'master' of http://39.108.190.163:3000/zx66/FCS

zx před 7 roky
rodič
revize
884dc3915b

+ 213 - 237
FCS.Crawler/Content/Jobs/FootJobs/ZCLotteryAsianDish/AsianDishJob.cs

@@ -33,6 +33,8 @@ namespace FCS.Crawler.ZCLotteryAsianDish
         private static List<int> listDetailint = new List<int>();
         private static List<int> listAnalysisint = new List<int>();
         private static List<string> listGameId = new List<string>();
+
+        private static List<F_AsianDish> listDetailId = new List<F_AsianDish>();
         public void Click(List<F_Games> glist, List<F_Games> listxg)
         {
             try
@@ -41,7 +43,7 @@ namespace FCS.Crawler.ZCLotteryAsianDish
                 string Season = DateTime.Now.ToString("yyyy");
                 Gamelistq = glist;
                 teamlist = services.Query<F_Team>().ToList();
-
+                
                 int number = glist.Count;
                 int page = number % 1000 == 0 ? number / 1000 : number / 1000 + 1;
                 //要删除的
@@ -133,15 +135,18 @@ namespace FCS.Crawler.ZCLotteryAsianDish
                     }
 
                     var listbk = services.Query<BankerCompany>().ToList();
+                    Thread.Sleep(1000);
                     var oclist_1 = oclist;
                     oclist = new List<F_AsianDishCuring>();
+                    oclist_1 = oclist_1.Where(a => a != null).ToList();
                     foreach (var item in oclist_1)
                     {
                         F_AsianDishCuring oc_new = new F_AsianDishCuring();
                         if (item != null)
                         {
                             oc_new = item;
-                            oc_new.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
+                            oc_new.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault() == null ? "" : listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
+                            //oc_new.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
                             lock (oclist_new)
                             {
                                 oclist_new.Add(oc_new);
@@ -149,51 +154,10 @@ namespace FCS.Crawler.ZCLotteryAsianDish
 
                         }
                     }
-                    //finishcount = 0;
-                    //threadCount = oclist.Count;
-                    //oclist.ForEach(async p =>
-                    //{
-                    //    await Task.Run(() =>
-                    //    {
-                    //        try
-                    //        {
-                    //           // Trace.WriteLine("更换公司Id:");
-                    //            F_AsianDishCuring oc_new = new F_AsianDishCuring();
-                    //            if (p != null)
-                    //            {
-                    //                oc_new = p;
-                    //                oc_new.BankerCompanyId = listbk.Where(a => a.Name == p.BankerCompanyId).FirstOrDefault().Id;
-                    //                lock (oclist_new)
-                    //                {
-                    //                    oclist_new.Add(oc_new);
-                    //                }
-
-                    //            }
-                    //        }
-                    //        catch (Exception e)
-                    //        {
-
-                    //          //  throw;
-                    //        }
-
-
-                    //    });
-                    //    lock (locker)
-                    //    {
-                    //        finishcount++;
-                    //        Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
-                    //    }
-                    //});
-                    //lock (locker)
-                    //{
-                    //    while (finishcount != threadCount)
-                    //    {
-                    //        Thread.Sleep(5000);
-                    //        Monitor.Wait(locker);//等待
-                    //    }
-                    //}
+                    Thread.Sleep(1000);
                     var csalist_1 = csalist;
                     csalist = new List<F_AsianDish>();
+                    csalist_1 = csalist_1.Where(a => a != null).ToList();
                     foreach (var item in csalist_1)
                     {
                         F_AsianDish cp = new F_AsianDish();
@@ -203,47 +167,19 @@ namespace FCS.Crawler.ZCLotteryAsianDish
 
                         lock (listbk)
                         {
-                            cp.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
+
+                            cp.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault() == null ? "" : listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
+                         //   cp.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
                         }
                         lock (oclist_new)
                         {
                             csalist_new.Add(cp);
                         }
                     }
-                    //finishcount = 0;
-                    //threadCount = csalist.Count;
-                    //csalist.ForEach(async p =>
-                    //{
-                    //    await Task.Run(() =>
-                    //    {
-                    //        if (p != null)
-                    //        {
-                    //            lock (csalist)
-                    //            {
-                    //                //Trace.WriteLine("更换公司Id:" + csalist.IndexOf(p));
-                    //                F_AsianDish cp = new F_AsianDish();
-                    //                cp = p;
-                    //                cp.BankerCompanyId = listbk.Where(a => a.Name == p.BankerCompanyId).FirstOrDefault().Id;
-                    //                csalist_new.Add(cp);
-                    //            }
 
-                    //        }
-
-                    //    });
-                    //    lock (locker)
-                    //    {
-                    //        finishcount++;
-                    //        Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
-                    //    }
-                    //});
-                    //lock (locker)
-                    //{
-                    //    while (finishcount != threadCount)
-                    //    {
-                    //        Thread.Sleep(5000);
-                    //        Monitor.Wait(locker);//等待
-                    //    }
-                    //}
+                    
+                }
+                {
                     List<F_CuringAnalysis> calist1 = calist.Where((x, i) => calist.FindIndex(z => z.GameId == x.GameId && z.CuringAnalysisType == x.CuringAnalysisType) == i).ToList();//Lambda表达式去重
 
 
@@ -251,15 +187,46 @@ namespace FCS.Crawler.ZCLotteryAsianDish
                     CommonHelper.Write(ConfigurationManager.AppSettings["AsianDishJob"], "插入亚盘固化数据 开始:" + oclist_new.Count);
                     if (oclist_new.Count > 0)
                         services.SqlBulkCopyAdd(oclist_new);
-                    Trace.WriteLine("插入亚盘详情数据 开始:" + csalist_new.Count);
-                    CommonHelper.Write(ConfigurationManager.AppSettings["AsianDishJob"], "插入亚盘详情数据 开始:" + csalist_new.Count);
-                    if (csalist_new.Count > 0)
-                        services.SqlBulkCopyAdd(csalist_new);
+                    //Trace.WriteLine("插入亚盘详情数据 开始:" + csalist_new.Count);
+                    //CommonHelper.Write(ConfigurationManager.AppSettings["AsianDishJob"], "插入亚盘详情数据 开始:" + csalist_new.Count);
+                    //if (csalist_new.Count > 0)
+                    //    services.SqlBulkCopyAdd(csalist_new);
                     Trace.WriteLine("插入固化分析数据 开始:" + calist1.Count);
                     CommonHelper.Write(ConfigurationManager.AppSettings["AsianDishJob"], "插入固化分析数据 开始:" + calist1.Count);
                     if (calist1.Count > 0)
                         services.SqlBulkCopyAdd(calist1);
 
+                   
+
+                    var list_com = new List<F_AsianDish>();
+                    foreach (var item in Gamelistq)
+                    {
+                        var count = listDetailId.Where(a => a.GameId == item.Id).ToList().Count;
+                        var count_new = csalist_new.Where(a => a.GameId == item.Id).ToList().Count;
+                        if (count_new == 0 && count == 0)
+                            continue;
+                        if (count < count_new)
+                        {
+                            list_com.AddRange(csalist_new.Where(a => a.GameId == item.Id).ToList());
+                        }
+                        else
+                        {
+                            List<F_AsianDish> intlist = new List<F_AsianDish>();
+                            foreach (var item3 in listDetailId.Where(a => a.GameId == item.Id).ToList())
+                            {
+                                var items = item3;
+                                items.PK = 0;
+                                intlist.Add(items);
+                            }
+                            list_com.AddRange(intlist);
+                        }
+                    }
+
+                    Trace.WriteLine("插入亚盘详情数据 开始:" + list_com.Count);
+                    CommonHelper.Write(ConfigurationManager.AppSettings["AsianDishJob"], "插入亚盘详情数据 开始:" + list_com.Count);
+                    if (csalist_new.Count > 0)
+                        services.SqlBulkCopyAdd(list_com);
+
                     urllist = new List<string>();
                     urllist1 = new List<string>();
                     Companylist = new List<string>();//所有公司
@@ -274,21 +241,40 @@ namespace FCS.Crawler.ZCLotteryAsianDish
                 }
 
 
-
                 Trace.WriteLine("删除数据 F_CuringAnalysis 开始:" + listAnalysisint.Count);
                 if (listAnalysisint.Count > 0)
                     services.Delete<F_CuringAnalysis>(" and PK in (" + string.Join(",", listAnalysisint) + ")");
                 Trace.WriteLine("删除数据 F_CuringAnalysis 结束:" + listAnalysisint.Count);
 
                 Trace.WriteLine("删除数据 F_AsianDish 初始数据 开始:" + listDetailint.Count);
+               // if (listDetailint.Count > 0)
+                   // services.Delete<F_AsianDish>(" and PK in (" + string.Join(",", listDetailint) + ")");
                 if (listDetailint.Count > 0)
-                    services.Delete<F_AsianDish>(" and PK in (" + string.Join(",", listDetailint) + ")");
+                {
+                    if (listDetailint.Count > 1000)
+                    {
+                        int pages = listDetailint.Count % 1000 == 0 ? listDetailint.Count / 1000 : listDetailint.Count / 1000 + 1;
+                        for (int i = 0; i < pages; i++)
+                        {
+                            var listDetailint1 = listDetailint.Skip(i * 1000).Take(1000).ToList();
+                            services.Delete<F_AsianDish>(" and PK in (" + string.Join(",", listDetailint1) + ")");
+                            Trace.WriteLine("删除数据 F_AsianDish 结束中:" + listDetailint1.Count);
+                        }
+                    }
+                    else
+                    {
+                        services.Delete<F_AsianDish>(" and PK in (" + string.Join(",", listCuringint) + ")");
+                    }
+
+                }
                 Trace.WriteLine("删除数据 F_AsianDish 初始数据 结束:" + listDetailint.Count);
 
                 Trace.WriteLine("删除数据 F_AsianDishCuring 开始:" + listCuringint.Count);
                 if (listCuringint.Count > 0)
                     services.Delete<F_AsianDishCuring>(" and PK in (" + string.Join(",", listCuringint) + ")");
                 Trace.WriteLine("删除数据 F_AsianDishCuring 结束:" + listCuringint.Count);
+                Gamelistq = new List<F_Games>();
+                teamlist = new List<F_Team>();
 
             }
             catch (Exception e)
@@ -768,7 +754,9 @@ namespace FCS.Crawler.ZCLotteryAsianDish
                     var query2 = query[1].Split(',');
                     foreach (var item1 in query2)
                     {
-                       // if (!item1.Trim().IsEmpty())
+                        if (item.IsEmpty())
+                            continue;
+                        // if (!item1.Trim().IsEmpty())
                         {
                             BankerCompanyRelation bcr = new BankerCompanyRelation();
                             bcr.BankerCompanyId = listbk.Where(a => a.Name == query[0]).FirstOrDefault().Id;
@@ -1034,188 +1022,176 @@ namespace FCS.Crawler.ZCLotteryAsianDish
 
         public void Getbjop_new(string url, F_Games game)
         {
-            url = url.Replace(":80", "");
-            string jsonall = CommonHelper.GetHtmlString(url.Replace("fenxi.zgzcw.com", "fenxi.zgzcw.com/json"), "", 20 * 10000);
-            var htmlResource = CommonHelper.GetHtmlString(url, "", 20 * 10000);
-            HtmlDocument doc = new HtmlDocument();
-            if (htmlResource == null)
-                return;
-            if (htmlResource == ConfigurationManager.AppSettings["HttpException"].ToString())
-                return;
-            doc.LoadHtml(htmlResource);
+            try
+            {
+                url = url.Replace(":80", "");
+                string jsonall = CommonHelper.GetHtmlString(url.Replace("fenxi.zgzcw.com", "fenxi.zgzcw.com/json"), "", 5 * 1000);
+                var htmlResource = CommonHelper.GetHtmlString(url, "", 5 * 1000);
+                HtmlDocument doc = new HtmlDocument();
+                if (htmlResource == null)
+                    return;
+                if (htmlResource == ConfigurationManager.AppSettings["HttpException"].ToString())
+                    return;
+                doc.LoadHtml(htmlResource);
 
-            //赔率集合
-            HtmlNodeCollection bjopHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-02']/tr");
-            if (bjopHtml == null)
-                return;
+                //赔率集合
+                HtmlNodeCollection bjopHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-02']/tr");
+                if (bjopHtml == null)
+                    return;
 
+                string HomeTeamName = "";
 
-            HtmlNodeCollection homenameHtml = doc.DocumentNode.SelectNodes("//*[@class='host-name']/a");
-            var q1 = teamlist.Where(a => a.Name == homenameHtml[0].InnerText.Trim()).FirstOrDefault();
-            string HomeTeamName = "";
-            string data = "";
-            if (q1 != null)
-            {
-                HomeTeamName = q1.Name;
-                HtmlNodeCollection homepmHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-zd']");
-                if (homepmHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                HtmlNodeCollection homenameHtml = doc.DocumentNode.SelectNodes("//*[@class='host-name']/a");
+                if (homenameHtml != null)
                 {
-                    data = "" + string.Join("|", homepmHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
-                    HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
-                    data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
+                    var q1 = teamlist.Where(a => a.Name == homenameHtml[0].InnerText.Trim()).FirstOrDefault();
+                    string data = "";
+                    if (q1 != null)
+                    {
+                        HomeTeamName = q1.Name;
+                        HtmlNodeCollection homepmHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-zd']");
+                        if (homepmHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                        {
+                            data = "" + string.Join("|", homepmHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
+                            HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
+                            data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
+
+                        }
+                        else
+                        {
 
+                            data = "" + homepmHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
+                            HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
+                            data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
+                        }
+                        InsertSeasonAnalysis(data, q1.Id, url, game.Season);
+                    }
                 }
-                else
+                string VisitingTeamName = "";
+
+                HtmlNodeCollection visitingnameHtml = doc.DocumentNode.SelectNodes("//*[@class='visit-name']/a");
+                if (visitingnameHtml != null)
                 {
+                    string data = "";
 
-                    data = "" + homepmHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
-                    HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
-                    data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
-                }
-                InsertSeasonAnalysis(data, q1.Id, url, game.Season);
-            }
+                    var q2 = teamlist.Where(a => a.Name == visitingnameHtml[0].InnerText.Trim()).FirstOrDefault();
+                    if (q2 != null)
+                    {
+                        VisitingTeamName = q2.Name;
+                        HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']");
 
-            HtmlNodeCollection visitingnameHtml = doc.DocumentNode.SelectNodes("//*[@class='visit-name']/a");
-            var q2 = teamlist.Where(a => a.Name == visitingnameHtml[0].InnerText.Trim()).FirstOrDefault();
-            string VisitingTeamName = "";
-            if (q2 != null)
-            {
-                VisitingTeamName = q2.Name;
-                HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']");
+                        if (homepmkHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                        {
+                            data = "" + string.Join("|", homepmkHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
+                            HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
+                            data += "|" + homedfkHtml[0].InnerText.Trim().Replace("客队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
 
-                if (homepmkHtml[0].InnerText.Trim().Contains("上赛季排名"))
-                {
-                    data = "" + string.Join("|", homepmkHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
-                    HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
-                    data += "|" + homedfkHtml[0].InnerText.Trim().Replace("客队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
+                        }
+                        else
+                        {
 
+                            data = "" + homepmkHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
+                            HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
+                            data += "|" + homedfkHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
+                        }
+                        InsertSeasonAnalysis(data, q2.Id, url, game.Season);
+                    }
                 }
-                else
-                {
 
-                    data = "" + homepmkHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
-                    HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
-                    data += "|" + homedfkHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
-                }
-                InsertSeasonAnalysis(data, q2.Id, url, game.Season);
-            }
 
-            DateTime lastdate=DateTime.Now;
 
-            List<string> listdetail = new List<string>();
-            foreach (var item in bjopHtml)
-            {
-                HtmlDocument doc1 = new HtmlDocument();
-                doc1.LoadHtml(item.InnerHtml);
-                HtmlNodeCollection bjoptdHtml = doc1.DocumentNode.SelectNodes("//td");
-                int i = 1;
-                string shuju = "", nurl = "";
-                DateTime lasttime = DateTime.Now;
+                DateTime lastdate = DateTime.Now;
 
-                foreach (var item1 in bjoptdHtml)
+                List<string> listdetail = new List<string>();
+                foreach (var item in bjopHtml)
                 {
-                    if (i == 2)
-                    {
-                        // shuju +=  item1.InnerText.Trim()+"|";
-                        Companylist.Add(item1.InnerText.Trim() + "|" + item1.Attributes["data"].Value);
-                        // Companylist = Companylist.Distinct().ToList();
-                        // InsertBankerCompany();
-                    }
-                    if (i == 6)
-                    {
-                        shuju += item1.InnerText.Trim() + "|";
-                        nurl = item1.SelectNodes("//a")[0].Attributes["href"].Value.Trim();
-                    }
-                    else if (i == 9)
+                    HtmlDocument doc1 = new HtmlDocument();
+                    doc1.LoadHtml(item.InnerHtml);
+                    HtmlNodeCollection bjoptdHtml = doc1.DocumentNode.SelectNodes("//td");
+                    int i = 1;
+                    string shuju = "", nurl = "";
+                    DateTime lasttime = DateTime.Now;
+
+                    foreach (var item1 in bjoptdHtml)
                     {
-                        HtmlDocument doc2 = new HtmlDocument();
-                        doc2.LoadHtml(item1.InnerHtml);
-                        HtmlNodeCollection timehtml = doc2.DocumentNode.SelectNodes("//em");
-                        shuju += item.Attributes["firsttime"].Value + "|";
-                        string datestring = timehtml[0].InnerText.Trim().Replace("更新时间:赛前", "").Replace("时", "|").Replace("分", "");
-                        string Hours = "0";
-                        string Minute = "0";
-                        if (datestring.Split('|').Length == 2)
+                        if (i == 2)
+                        {
+                            // shuju +=  item1.InnerText.Trim()+"|";
+                            Companylist.Add(item1.InnerText.Trim() + "|" + item1.Attributes["data"].Value);
+                            // Companylist = Companylist.Distinct().ToList();
+                            // InsertBankerCompany();
+                        }
+                        if (i == 6)
                         {
-                            Hours = datestring.Split('|')[0];
-                            Minute = datestring.Split('|')[1];
-                        } else if(datestring.Split('|').Length == 1)
+                            shuju += item1.InnerText.Trim() + "|";
+                            nurl = item1.SelectNodes("//a")[0].Attributes["href"].Value.Trim();
+                        }
+                        else if (i == 9)
                         {
-                            Hours = "0";
-                            Minute = datestring.Split('|')[0];
+                            HtmlDocument doc2 = new HtmlDocument();
+                            doc2.LoadHtml(item1.InnerHtml);
+                            HtmlNodeCollection timehtml = doc2.DocumentNode.SelectNodes("//em");
+                            shuju += item.Attributes["firsttime"].Value + "|";
+                            string datestring = timehtml[0].InnerText.Trim().Replace("更新时间:赛前", "").Replace("时", "|").Replace("分", "");
+                            string Hours = "0";
+                            string Minute = "0";
+                            if (datestring.Split('|').Length == 2)
+                            {
+                                Hours = datestring.Split('|')[0];
+                                Minute = datestring.Split('|')[1];
+                            }
+                            else if (datestring.Split('|').Length == 1)
+                            {
+                                Hours = "0";
+                                Minute = datestring.Split('|')[0];
 
+                            }
+                            int Minutes = Minute.TryToInt32() + Hours.TryToInt32() * 60;
+                            lasttime = Convert.ToDateTime(game.StartDateTime).AddMinutes(-Minutes);
                         }
-                        int Minutes = Minute.TryToInt32() + Hours.TryToInt32() * 60;
-                        lasttime = Convert.ToDateTime(game.StartDateTime).AddMinutes(-Minutes);
+                        else
+                        {
+                            shuju += item1.InnerText.Trim() + "|";
+                        }
+                        i++;
                     }
-                    else
+                    lastdate = lasttime;
+                    DateTime date = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));
+                    // if (lastdate > date)
                     {
-                        shuju += item1.InnerText.Trim() + "|";
+                        listdetail.Add(shuju + "@" + nurl + "@" + lasttime);
                     }
-                    i++;
-                }
-                lastdate = lasttime;
-                DateTime date = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));
-               // if (lastdate > date)
-                {
-                    listdetail.Add(shuju + "@" + nurl + "@" + lasttime);
+                    InsertOddsCuring_new(shuju, game.Id, nurl, game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName, jsonall, Convert.ToDateTime(lasttime));
+                    //  listdetail.Add(shuju + "@" + nurl);
                 }
-                InsertOddsCuring_new(shuju, game.Id, nurl, game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName, jsonall, Convert.ToDateTime(lasttime));
-                //  listdetail.Add(shuju + "@" + nurl);
-            }
-            
-            //int num = 0;
-            //int max = listdetail.Count;
-            //listdetail.ForEach(async p =>
-            //{
-            //    await Task.Run(() =>
-            //    {
-            //        try
-            //        {
-            //            var lis = p.Split('@')[0];
-            //            //Trace.WriteLine("亚盘分析多线程 开始:" + listdetail.IndexOf(p));
-            //            InsertOddsCuring_new(p.Split('@')[0], game.Id, p.Split('@')[1], game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName, jsonall, Convert.ToDateTime(p.Split('@')[2]));
-            //        }
-            //        catch (Exception e)
-            //        {
-
-            //            Trace.WriteLine("亚盘分析多线程 报错:" + listdetail.IndexOf(p));
-            //        }
-
-
-            //        lock (locker)
-            //        {
-            //            num++;
-            //            Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
-            //        }
-            //    });
-            //});
-            //lock (locker)
-            //{
-            //    while (num < max)
-            //    {
-            //        Monitor.Wait(locker);//等待
-            //    }
-            //}
-            //class="bf-tab-03"
-            HtmlNodeCollection bjopfxHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-03']/tr");
-            if (bjopfxHtml == null)
-                return;
-            foreach (var item in bjopfxHtml)
-            {
-                HtmlDocument doc1 = new HtmlDocument();
-                doc1.LoadHtml(item.InnerHtml);
-                HtmlNodeCollection bjopfxtdHtml = doc1.DocumentNode.SelectNodes("//td");
-                if (bjopfxtdHtml.Count == 15)
+
+                
+                //class="bf-tab-03"
+                HtmlNodeCollection bjopfxHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-03']/tr");
+                if (bjopfxHtml == null)
+                    return;
+                foreach (var item in bjopfxHtml)
                 {
-                    string shuju = "";
-                    foreach (var item1 in bjopfxtdHtml)
+                    HtmlDocument doc1 = new HtmlDocument();
+                    doc1.LoadHtml(item.InnerHtml);
+                    HtmlNodeCollection bjopfxtdHtml = doc1.DocumentNode.SelectNodes("//td");
+                    if (bjopfxtdHtml.Count == 15)
                     {
-                        shuju += item1.InnerText.Trim() + "|";
+                        string shuju = "";
+                        foreach (var item1 in bjopfxtdHtml)
+                        {
+                            shuju += item1.InnerText.Trim() + "|";
+                        }
+                        InsertCuringAnalysis(shuju, game.Id, url);
                     }
-                    InsertCuringAnalysis(shuju, game.Id, url);
                 }
             }
+            catch (Exception e)
+            {
+
+                //throw;
+            }
+           
         }
         public void Getbjopdetail_new(string url, F_AsianDishCuring oc, string date)
         {

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 292 - 247
FCS.Crawler/Content/Jobs/FootJobs/ZCLotteryOdds/OddsJob.cs


+ 273 - 289
FCS.Crawler/Content/Jobs/FootJobs/ZCLotterySizeIndex/SizeIndexJob.cs

@@ -33,6 +33,8 @@ namespace FCS.Crawler.ZCLotterySizeIndex
         private static List<int> listDetailint = new List<int>();
         private static List<int> listAnalysisint = new List<int>();
         private static List<string> listGameId = new List<string>();
+
+        private static List<F_SizeIndex> listDetailId = new List<F_SizeIndex>();
         public void Click(List<F_Games> glist, List<F_Games> listxg)
         {
             try
@@ -80,23 +82,30 @@ namespace FCS.Crawler.ZCLotterySizeIndex
                 {
                     Trace.WriteLine("第几个J 开始 SizeIndexJob:" + (j));
                     Gamelist = Gamelistq.Skip(j * 1000).Take(1000).ToList();
-                    finishcount = 0;
                     threadCount = Gamelist.Count;
-                    Stopwatch sw = new Stopwatch();
-                    sw.Start();
-                    Gamelist.ForEach(p =>
+                    finishcount = 0;
+                    Gamelist.ForEach(async p =>
                     {
-                        taskList.Add( Task.Run(() =>
+                        await Task.Run(() =>
                         {
-                            // Trace.WriteLine("大小分析 开始:" + Gamelist.IndexOf(p));
+                            //Trace.WriteLine("欧赔分析 开始:" + Gamelist.IndexOf(p));
                             Getbjop_new(p.Remark, p);
-
-                        }));
-                      
+                        });
+                        lock (locker)
+                        {
+                            finishcount++;
+                            Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
+                        }
                     });
-                    Task.WaitAll(taskList.ToArray());
-                    sw.Stop();
-                    Trace.WriteLine("大小分析 结束" + sw.ElapsedMilliseconds + "毫秒");
+                    lock (locker)
+                    {
+                        while (finishcount != threadCount)
+                        {
+                            Thread.Sleep(5000);
+                            Monitor.Wait(locker);//等待
+                        }
+                    }
+                    Trace.WriteLine("大小分析 结束毫秒");
                     Companylist = Companylist.Distinct().ToList();
                     InsertBankerCompany(Companylist);
                     InsertBankerCompany1();
@@ -126,78 +135,39 @@ namespace FCS.Crawler.ZCLotterySizeIndex
                     }
 
                     var listbk = services.Query<BankerCompany>().ToList();
-                    //var oclist_1 = oclist;
-                    //oclist = new List<F_SizeIndexCuring>();
-                    //lock (oclist_new)
-                    //{
-                    //    foreach (var item in oclist_1)
-                    //    {
-                    //        F_SizeIndexCuring oc_new = new F_SizeIndexCuring();
-                    //        if (item != null)
-                    //        {
-                    //            oc_new = item;
-                    //            oc_new.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
-                    //            oclist_new.Add(oc_new);
-
-                    //        }
-                    //    }
-                    //}
-
+                    Thread.Sleep(1000);
                     var oclist_1 = oclist;
                     oclist = new List<F_SizeIndexCuring>();
                     for (int i = 0; i < oclist_1.Count; i++)
                     {
                         lock (oclist_1)
                         {
-                            F_SizeIndexCuring oc_new = new F_SizeIndexCuring();
-                            if (i < oclist_1.Count)
+                            if (oclist_1[i] != null)
                             {
-                                oc_new = oclist_1[i];
-                                lock (listbk)
-                                {
-                                    oc_new.BankerCompanyId = listbk.Where(a => a.Name == oclist_1[i].BankerCompanyId).FirstOrDefault().Id;
-                                }
-                                lock (oclist_new)
+                                F_SizeIndexCuring oc_new = new F_SizeIndexCuring();
+                                if (i < oclist_1.Count)
                                 {
-                                    oclist_new.Add(oc_new);
+                                    oc_new = oclist_1[i];
+                                    lock (listbk)
+                                    {
+                                        oc_new.BankerCompanyId = listbk.Where(a => a.Name == oclist_1[i].BankerCompanyId).FirstOrDefault() == null ? "" : listbk.Where(a => a.Name == oclist_1[i].BankerCompanyId).FirstOrDefault().Id;
+                                        //oc_new.BankerCompanyId = listbk.Where(a => a.Name == oclist_1[i].BankerCompanyId).FirstOrDefault().Id;
+                                    }
+                                    lock (oclist_new)
+                                    {
+                                        oclist_new.Add(oc_new);
+                                    }
                                 }
                             }
                             
+                            
                         }
                         
                     }
 
-                    //finishcount = 0;
-                    //threadCount = oclist.Count;
-                    //oclist.ForEach(async p =>
-                    //{
-                    //    await Task.Run(() =>
-                    //    {
-                    //       // Trace.WriteLine("更换公司Id:");
-                    //        F_SizeIndexCuring oc_new = new F_SizeIndexCuring();
-                    //        if (p != null)
-                    //        {
-                    //            oc_new = p;
-                    //            oc_new.BankerCompanyId = listbk.Where(a => a.Name == p.BankerCompanyId).FirstOrDefault().Id;
-                    //            oclist_new.Add(oc_new);
-                    //        }
-
-                    //    });
-                    //    lock (locker)
-                    //    {
-                    //        finishcount++;
-                    //        Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
-                    //    }
-                    //});
-                    //lock (locker)
-                    //{
-                    //    while (finishcount != threadCount)
-                    //    {
-                    //        Thread.Sleep(5000);
-                    //        Monitor.Wait(locker);//等待
-                    //    }
-                    //}
+                   
                     var csalist_1 = csalist;
+                    csalist_1 = csalist_1.Where(a => a != null).ToList();
                     csalist = new List<F_SizeIndex>();
                     foreach (var item in csalist_1)
                     {
@@ -208,50 +178,18 @@ namespace FCS.Crawler.ZCLotterySizeIndex
 
                         lock (listbk)
                         {
-                            cp.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
+                            cp.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault() == null ? "" : listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
+                            //cp.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
                         }
                         lock (oclist_new)
                         {
                             csalist_new.Add(cp);
                         }
                     }
-                    //finishcount = 0;
-                    //threadCount = csalist.Count;
-                    //csalist.ForEach(async p =>
-                    //{
-                    //    await Task.Run(() =>
-                    //    {
-                    //        if (p != null)
-                    //        {
-                    //            lock (csalist_new)
-                    //            {
-                    //               // Trace.WriteLine("更换公司Id:" + csalist.IndexOf(p));
-                    //                F_SizeIndex cp = new F_SizeIndex();
-                    //                cp = p;
-                    //                cp.BankerCompanyId = listbk.Where(a => a.Name == p.BankerCompanyId).FirstOrDefault().Id;
-                    //                // Getbjop(p.Remark, p);
-                    //                csalist_new.Add(cp);
-
-                    //            }
-
-                    //        }
-
-                    //    });
-                    //    lock (locker)
-                    //    {
-                    //        finishcount++;
-                    //        Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
-                    //    }
-                    //});
-                    //lock (locker)
-                    //{
-                    //    while (finishcount != threadCount)
-                    //    {
-                    //        Thread.Sleep(5000);
-                    //        Monitor.Wait(locker);//等待
-                    //    }
-                    //}
-
+                    
+                   
+                }
+                {
                     List<F_CuringAnalysis> calist1 = calist.Where((x, i) => calist.FindIndex(z => z.GameId == x.GameId && z.CuringAnalysisType == x.CuringAnalysisType) == i).ToList();//Lambda表达式去重
 
 
@@ -259,15 +197,46 @@ namespace FCS.Crawler.ZCLotterySizeIndex
                     CommonHelper.Write(ConfigurationManager.AppSettings["SizeIndexJob"], "插入大小固化数据 开始:" + oclist_new.Count);
                     if (oclist_new.Count > 0)
                         services.SqlBulkCopyAdd(oclist_new);
-                    Trace.WriteLine("插入大小详情数据 开始:" + csalist_new.Count);
-                    CommonHelper.Write(ConfigurationManager.AppSettings["SizeIndexJob"], "插入大小详情数据 开始:" + csalist_new.Count);
-                    if (csalist_new.Count > 0)
-                        services.SqlBulkCopyAdd(csalist_new);
+                    //Trace.WriteLine("插入大小详情数据 开始:" + csalist_new.Count);
+                    //CommonHelper.Write(ConfigurationManager.AppSettings["SizeIndexJob"], "插入大小详情数据 开始:" + csalist_new.Count);
+                    //if (csalist_new.Count > 0)
+                    //    services.SqlBulkCopyAdd(csalist_new);
                     Trace.WriteLine("插入固化分析数据 开始:" + calist1.Count);
                     CommonHelper.Write(ConfigurationManager.AppSettings["SizeIndexJob"], "插入固化分析数据 开始:" + calist1.Count);
                     if (calist1.Count > 0)
                         services.SqlBulkCopyAdd(calist1);
 
+                    
+
+                    var list_com = new List<F_SizeIndex>();
+                    foreach (var item in Gamelistq)
+                    {
+                        var count = listDetailId.Where(a => a.GameId == item.Id).ToList().Count;
+                        var count_new = csalist_new.Where(a => a.GameId == item.Id).ToList().Count;
+                        if (count_new == 0 && count == 0)
+                            continue;
+                        if (count < count_new)
+                        {
+                            list_com.AddRange(csalist_new.Where(a => a.GameId == item.Id).ToList());
+                        }
+                        else
+                        {
+                            List<F_SizeIndex> intlist = new List<F_SizeIndex>();
+                            foreach (var item3 in listDetailId.Where(a => a.GameId == item.Id).ToList())
+                            {
+                                var items = item3;
+                                items.PK = 0;
+                                intlist.Add(items);
+                            }
+                            list_com.AddRange(intlist);
+                        }
+                    }
+
+                    Trace.WriteLine("插入大小详情数据 开始:" + list_com.Count);
+                    CommonHelper.Write(ConfigurationManager.AppSettings["SizeIndexJob"], "插入大小详情数据 开始:" + list_com.Count);
+                    if (csalist_new.Count != 0)
+                        services.SqlBulkCopyAdd(list_com);
+
                     urllist = new List<string>();
                     urllist1 = new List<string>();
                     Companylist = new List<string>();//所有公司
@@ -282,21 +251,40 @@ namespace FCS.Crawler.ZCLotterySizeIndex
                 }
 
 
-
                 Trace.WriteLine("删除数据 F_CuringAnalysis 开始:" + listAnalysisint.Count);
                 if (listAnalysisint.Count > 0)
                     services.Delete<F_CuringAnalysis>(" and PK in (" + string.Join(",", listAnalysisint) + ")");
                 Trace.WriteLine("删除数据 F_CuringAnalysis 结束:" + listAnalysisint.Count);
 
                 Trace.WriteLine("删除数据 F_SizeIndex 开始:" + listDetailint.Count);
+                //if (listDetailint.Count > 0)
+                  //  services.Delete<F_SizeIndex>(" and PK in (" + string.Join(",", listDetailint) + ")");
                 if (listDetailint.Count > 0)
-                    services.Delete<F_SizeIndex>(" and PK in (" + string.Join(",", listDetailint) + ")");
+                {
+                    if (listDetailint.Count > 1000)
+                    {
+                        int pages = listDetailint.Count % 1000 == 0 ? listDetailint.Count / 1000 : listDetailint.Count / 1000 + 1;
+                        for (int i = 0; i < pages; i++)
+                        {
+                            var listDetailint1 = listDetailint.Skip(i * 1000).Take(1000).ToList();
+                            services.Delete<F_SizeIndex>(" and PK in (" + string.Join(",", listDetailint1) + ")");
+                            Trace.WriteLine("删除数据 F_SizeIndex 结束中:" + listDetailint1.Count);
+                        }
+                    }
+                    else
+                    {
+                        services.Delete<F_SizeIndex>(" and PK in (" + string.Join(",", listCuringint) + ")");
+                    }
+
+                }
                 Trace.WriteLine("删除数据 F_SizeIndex 结束:" + listDetailint.Count);
 
                 Trace.WriteLine("删除数据 F_SizeIndexCuring 开始:" + listCuringint.Count);
                 if (listCuringint.Count > 0)
                     services.Delete<F_SizeIndexCuring>(" and PK in (" + string.Join(",", listCuringint) + ")");
                 Trace.WriteLine("删除数据 F_SizeIndexCuring 结束:" + listCuringint.Count);
+                Gamelistq = new List<F_Games>();
+                teamlist = new List<F_Team>();
             }
             catch (Exception e)
             {
@@ -532,59 +520,68 @@ namespace FCS.Crawler.ZCLotterySizeIndex
             if (bjopHtml == null)
                 return;
 
+            string HomeTeamName = "";
 
             HtmlNodeCollection homenameHtml = doc.DocumentNode.SelectNodes("//*[@class='host-name']/a");
-            var q1 = teamlist.Where(a => a.Name == homenameHtml[0].InnerText.Trim()).FirstOrDefault();
-            string HomeTeamName = "";
-            string data = "";
-            if (q1 != null)
+            if (homenameHtml != null)
             {
-                HomeTeamName = q1.Name;
-                HtmlNodeCollection homepmHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-zd']");
-                if (homepmHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                var q1 = teamlist.Where(a => a.Name == homenameHtml[0].InnerText.Trim()).FirstOrDefault();
+                string data = "";
+                if (q1 != null)
                 {
-                    data = "" + string.Join("|", homepmHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
-                    HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
-                    data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
+                    HomeTeamName = q1.Name;
+                    HtmlNodeCollection homepmHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-zd']");
+                    if (homepmHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                    {
+                        data = "" + string.Join("|", homepmHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
+                        HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
+                        data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
 
-                }
-                else
-                {
+                    }
+                    else
+                    {
 
-                    data = "" + homepmHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
-                    HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
-                    data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
+                        data = "" + homepmHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
+                        HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
+                        data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
+                    }
+                    InsertSeasonAnalysis(data, q1.Id, url, game.Season);
                 }
-                InsertSeasonAnalysis(data, q1.Id, url, game.Season);
             }
+            string VisitingTeamName = "";
 
             HtmlNodeCollection visitingnameHtml = doc.DocumentNode.SelectNodes("//*[@class='visit-name']/a");
-            var q2 = teamlist.Where(a => a.Name == visitingnameHtml[0].InnerText.Trim()).FirstOrDefault();
-            string VisitingTeamName = "";
-            if (q2 != null)
+            if (visitingnameHtml != null)
             {
-                VisitingTeamName = q2.Name;
-                HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']");
+                string data = "";
 
-                if (homepmkHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                var q2 = teamlist.Where(a => a.Name == visitingnameHtml[0].InnerText.Trim()).FirstOrDefault();
+                if (q2 != null)
                 {
-                    data = "" + string.Join("|", homepmkHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
-                    HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
-                    data += "|" + homedfkHtml[0].InnerText.Trim().Replace("客队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
+                    VisitingTeamName = q2.Name;
+                    HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']");
 
-                }
-                else
-                {
+                    if (homepmkHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                    {
+                        data = "" + string.Join("|", homepmkHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
+                        HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
+                        data += "|" + homedfkHtml[0].InnerText.Trim().Replace("客队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
 
-                    data = "" + homepmkHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
-                    HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
-                    data += "|" + homedfkHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
+                    }
+                    else
+                    {
+
+                        data = "" + homepmkHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
+                        HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
+                        data += "|" + homedfkHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
+                    }
+                    InsertSeasonAnalysis(data, q2.Id, url, game.Season);
                 }
-                InsertSeasonAnalysis(data, q2.Id, url, game.Season);
             }
 
 
 
+
             List<string> listdetail = new List<string>();
             foreach (var item in bjopHtml)
             {
@@ -760,6 +757,8 @@ namespace FCS.Crawler.ZCLotterySizeIndex
             }
             foreach (var item in Companylist)
             {
+                if (item.IsEmpty())
+                    continue;
                 var query = item.Split('|');
                 if (listbk.Where(a => a.Name == query[0]).ToList().Count > 0)
                 {
@@ -1033,186 +1032,171 @@ namespace FCS.Crawler.ZCLotterySizeIndex
 
         public void Getbjop_new(string url, F_Games game)
         {
-            url = url.Replace(":80", "").Replace("ypdb", "dxdb");
-            string jsonall = CommonHelper.GetHtmlString(url.Replace("fenxi.zgzcw.com", "fenxi.zgzcw.com/json"), "", 20 * 1000);
-            var htmlResource = CommonHelper.GetHtmlString(url, "", 20* 1000);
-            HtmlDocument doc = new HtmlDocument();
-            if (htmlResource == null)
-                return;
-            if (htmlResource == ConfigurationManager.AppSettings["HttpException"].ToString())
-                return;
+            try
+            {
+                url = url.Replace(":80", "").Replace("ypdb", "dxdb");
+                string jsonall = CommonHelper.GetHtmlString(url.Replace("fenxi.zgzcw.com", "fenxi.zgzcw.com/json"), "", 5 * 1000);
+                var htmlResource = CommonHelper.GetHtmlString(url, "", 5 * 1000);
+                HtmlDocument doc = new HtmlDocument();
+                if (htmlResource == null)
+                    return;
+                if (htmlResource == ConfigurationManager.AppSettings["HttpException"].ToString())
+                    return;
 
-            doc.LoadHtml(htmlResource);
+                doc.LoadHtml(htmlResource);
 
-            //赔率集合
-            HtmlNodeCollection bjopHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-02']/tr");
-            if (bjopHtml == null)
-                return;
+                //赔率集合
+                HtmlNodeCollection bjopHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-02']/tr");
+                if (bjopHtml == null)
+                    return;
 
 
-            HtmlNodeCollection homenameHtml = doc.DocumentNode.SelectNodes("//*[@class='host-name']/a");
-            var q1 = teamlist.Where(a => a.Name == homenameHtml[0].InnerText.Trim()).FirstOrDefault();
-            string HomeTeamName = "";
-            string data = "";
-            if (q1 != null)
-            {
-                HomeTeamName = q1.Name;
-                HtmlNodeCollection homepmHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-zd']");
-                if (homepmHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                HtmlNodeCollection homenameHtml = doc.DocumentNode.SelectNodes("//*[@class='host-name']/a");
+                var q1 = teamlist.Where(a => a.Name == homenameHtml[0].InnerText.Trim()).FirstOrDefault();
+                string HomeTeamName = "";
+                string data = "";
+                if (q1 != null)
                 {
-                    data = "" + string.Join("|", homepmHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
-                    HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
-                    data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
+                    HomeTeamName = q1.Name;
+                    HtmlNodeCollection homepmHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-zd']");
+                    if (homepmHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                    {
+                        data = "" + string.Join("|", homepmHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
+                        HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
+                        data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
 
-                }
-                else
-                {
+                    }
+                    else
+                    {
 
-                    data = "" + homepmHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
-                    HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
-                    data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
+                        data = "" + homepmHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
+                        HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']");
+                        data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
+                    }
+                    InsertSeasonAnalysis(data, q1.Id, url, game.Season);
                 }
-                InsertSeasonAnalysis(data, q1.Id, url, game.Season);
-            }
 
-            HtmlNodeCollection visitingnameHtml = doc.DocumentNode.SelectNodes("//*[@class='visit-name']/a");
-            var q2 = teamlist.Where(a => a.Name == visitingnameHtml[0].InnerText.Trim()).FirstOrDefault();
-            string VisitingTeamName = "";
-            if (q2 != null)
-            {
-                VisitingTeamName = q2.Name;
-                HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']");
-
-                if (homepmkHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                HtmlNodeCollection visitingnameHtml = doc.DocumentNode.SelectNodes("//*[@class='visit-name']/a");
+                var q2 = teamlist.Where(a => a.Name == visitingnameHtml[0].InnerText.Trim()).FirstOrDefault();
+                string VisitingTeamName = "";
+                if (q2 != null)
                 {
-                    data = "" + string.Join("|", homepmkHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
-                    HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
-                    data += "|" + homedfkHtml[0].InnerText.Trim().Replace("客队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
+                    VisitingTeamName = q2.Name;
+                    HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']");
 
-                }
-                else
-                {
+                    if (homepmkHtml[0].InnerText.Trim().Contains("上赛季排名"))
+                    {
+                        data = "" + string.Join("|", homepmkHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':'));
+                        HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
+                        data += "|" + homedfkHtml[0].InnerText.Trim().Replace("客队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "");
 
-                    data = "" + homepmkHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
-                    HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
-                    data += "|" + homedfkHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
-                }
-                InsertSeasonAnalysis(data, q2.Id, url, game.Season);
-            }
+                    }
+                    else
+                    {
 
+                        data = "" + homepmkHtml[0].InnerText.Trim().Replace("FIFA排名:", "");
+                        HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']");
+                        data += "|" + homedfkHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", "");
+                    }
+                    InsertSeasonAnalysis(data, q2.Id, url, game.Season);
+                }
 
 
-            List<string> listdetail = new List<string>();
-            foreach (var item in bjopHtml)
-            {
-                HtmlDocument doc1 = new HtmlDocument();
-                doc1.LoadHtml(item.InnerHtml);
-                HtmlNodeCollection bjoptdHtml = doc1.DocumentNode.SelectNodes("//td");
-                int i = 1;
-                string shuju = "", nurl = "";
-                DateTime lasttime =DateTime.Now;
 
-                foreach (var item1 in bjoptdHtml)
+                List<string> listdetail = new List<string>();
+                foreach (var item in bjopHtml)
                 {
-                    if (i == 2)
-                    {
-                        // shuju +=  item1.InnerText.Trim()+"|";
-                        Companylist.Add(item1.InnerText.Trim() + "|" + item1.Attributes["data"].Value);
-                        // Companylist = Companylist.Distinct().ToList();
-                        // InsertBankerCompany();
-                    }
-                    if (i == 6)
-                    {
-                        shuju += item1.InnerText.Trim() + "|";
-                        nurl = item1.SelectNodes("//a")[0].Attributes["href"].Value.Trim();
-                    }
-                    else if (i == 9)
+                    HtmlDocument doc1 = new HtmlDocument();
+                    doc1.LoadHtml(item.InnerHtml);
+                    HtmlNodeCollection bjoptdHtml = doc1.DocumentNode.SelectNodes("//td");
+                    int i = 1;
+                    string shuju = "", nurl = "";
+                    DateTime lasttime = DateTime.Now;
+
+                    foreach (var item1 in bjoptdHtml)
                     {
-                        HtmlDocument doc2 = new HtmlDocument();
-                        doc2.LoadHtml(item1.InnerHtml);
-                        HtmlNodeCollection timehtml = doc2.DocumentNode.SelectNodes("//em");
-                        shuju += item.Attributes["firsttime"].Value + "|";
-                        string datestring = timehtml[0].InnerText.Trim().Replace("更新时间:赛前", "").Replace("时", "|").Replace("分", "");
-                        string Hours = "0";
-                        string Minute = "0";
-                        if (datestring.Split('|').Length == 2)
+                        if (i == 2)
+                        {
+                            // shuju +=  item1.InnerText.Trim()+"|";
+                            Companylist.Add(item1.InnerText.Trim() + "|" + item1.Attributes["data"].Value);
+                            // Companylist = Companylist.Distinct().ToList();
+                            // InsertBankerCompany();
+                        }
+                        if (i == 6)
                         {
-                            Hours = datestring.Split('|')[0];
-                            Minute = datestring.Split('|')[1];
+                            shuju += item1.InnerText.Trim() + "|";
+                            nurl = item1.SelectNodes("//a")[0].Attributes["href"].Value.Trim();
                         }
-                        else if (datestring.Split('|').Length == 1)
+                        else if (i == 9)
                         {
-                            Hours = "0";
-                            Minute = datestring.Split('|')[0];
+                            HtmlDocument doc2 = new HtmlDocument();
+                            doc2.LoadHtml(item1.InnerHtml);
+                            HtmlNodeCollection timehtml = doc2.DocumentNode.SelectNodes("//em");
+                            shuju += item.Attributes["firsttime"].Value + "|";
+                            string datestring = timehtml[0].InnerText.Trim().Replace("更新时间:赛前", "").Replace("时", "|").Replace("分", "");
+                            string Hours = "0";
+                            string Minute = "0";
+                            if (datestring.Split('|').Length == 2)
+                            {
+                                Hours = datestring.Split('|')[0];
+                                Minute = datestring.Split('|')[1];
+                            }
+                            else if (datestring.Split('|').Length == 1)
+                            {
+                                Hours = "0";
+                                Minute = datestring.Split('|')[0];
 
+                            }
+                            int Minutes = Minute.TryToInt32() + Hours.TryToInt32() * 60;
+                            lasttime = Convert.ToDateTime(game.StartDateTime).AddMinutes(-Minutes);
                         }
-                        int Minutes = Minute.TryToInt32() + Hours.TryToInt32() * 60;
-                        lasttime = Convert.ToDateTime(game.StartDateTime).AddMinutes(-Minutes);
+                        else
+                        {
+                            shuju += item1.InnerText.Trim() + "|";
+                        }
+                        i++;
                     }
-                    else
+                    DateTime lastdate = lasttime;
+                    DateTime date = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));
+                    //  if (lastdate > date)
                     {
-                        shuju += item1.InnerText.Trim() + "|";
+                        listdetail.Add(shuju + "@" + nurl + "@" + lasttime);
                     }
-                    i++;
-                }
-                DateTime lastdate = lasttime;
-                DateTime date = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));
-              //  if (lastdate > date)
-                {
-                    listdetail.Add(shuju + "@" + nurl + "@" + lasttime);
+                    //listdetail.Add(shuju + "@" + nurl);
                 }
-                //listdetail.Add(shuju + "@" + nurl);
-            }
-            int num = 0, max = listdetail.Count;
-            listdetail.ForEach(async p =>
-            {
-                await Task.Run(() =>
-                {
-                    try
-                    {
-                        var lis = p.Split('@')[0];
-                        //Trace.WriteLine("大小分析多线程 开始:" + listdetail.IndexOf(p));
-                        InsertOddsCuring_new(p.Split('@')[0], game.Id, p.Split('@')[1], game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName, jsonall, Convert.ToDateTime(p.Split('@')[2]));
-                    }
-                    catch (Exception e)
-                    {
-
-                        Trace.WriteLine("大小分析多线程 报错:" + listdetail.IndexOf(p));
-                    }
-
 
-                });
-                lock (locker)
+                foreach (var item in listdetail)
                 {
-                    num++;
-                    Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
+                    var lis = item.Split('@')[0];
+                    //Trace.WriteLine("大小分析多线程 开始:" + listdetail.IndexOf(p));
+                    InsertOddsCuring_new(item.Split('@')[0], game.Id, item.Split('@')[1], game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName, jsonall, Convert.ToDateTime(item.Split('@')[2]));
                 }
-            });
-                lock (locker)
+
+                //class="bf-tab-03"
+                HtmlNodeCollection bjopfxHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-03']/tr");
+                if (bjopfxHtml == null)
+                    return;
+                foreach (var item in bjopfxHtml)
                 {
-                    while (num != max)
+                    HtmlDocument doc1 = new HtmlDocument();
+                    doc1.LoadHtml(item.InnerHtml);
+                    HtmlNodeCollection bjopfxtdHtml = doc1.DocumentNode.SelectNodes("//td");
+                    if (bjopfxtdHtml.Count == 15)
                     {
-                    Thread.Sleep(5000);
-                    Monitor.Wait(locker);//等待
+                        string shuju = "";
+                        foreach (var item1 in bjopfxtdHtml)
+                        {
+                            shuju += item1.InnerText.Trim() + "|";
+                        }
+                        InsertCuringAnalysis(shuju, game.Id, url);
                     }
                 }
-            //class="bf-tab-03"
-            HtmlNodeCollection bjopfxHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-03']/tr");
-            foreach (var item in bjopfxHtml)
+            }
+            catch (Exception e)
             {
-                HtmlDocument doc1 = new HtmlDocument();
-                doc1.LoadHtml(item.InnerHtml);
-                HtmlNodeCollection bjopfxtdHtml = doc1.DocumentNode.SelectNodes("//td");
-                if (bjopfxtdHtml.Count == 15)
-                {
-                    string shuju = "";
-                    foreach (var item1 in bjopfxtdHtml)
-                    {
-                        shuju += item1.InnerText.Trim() + "|";
-                    }
-                    InsertCuringAnalysis(shuju, game.Id, url);
-                }
+
             }
+            
         }
         public void Getbjopdetail_new(string url, F_SizeIndexCuring oc, string date)
         {

+ 1 - 0
FCS.Crawler/Content/UpdateService/UpdateJobs/Update_RealTimeJob.cs

@@ -38,6 +38,7 @@ namespace FCS.Crawler
         {
             ThreadPool.SetMaxThreads(200, 200);
             CommonHelper.LogBD("开始Update_RealTime", logName);
+            List<F_Games> list = new List<F_Games>();
             new GamesJob().Click();
             Task.Run(() => new GamesDetailsJob().Click());
             Task.Run(() => new ScoreJob().Click());

+ 84 - 0
FCS.Crawler/Content/UpdateService/UpdateJobs/Update_RealTimeJobToDayOne.cs

@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using FCS.Common;
+using FCS.Crawler.ZCLotteryAgainst;
+using FCS.Crawler.ZCLotteryAsianDish;
+using FCS.Crawler.ZCLotteryGames;
+using FCS.Crawler.ZCLotteryGrouping;
+using FCS.Crawler.ZCLotteryIP;
+using FCS.Crawler.ZCLotteryMatchs;
+using FCS.Crawler.ZCLotteryScore;
+using FCS.Crawler.ZCLotterySizeIndex;
+using FCS.Crawler.ZCLotteryTeam;
+using FCS.Interface;
+using FCS.Models;
+using Quartz;
+
+namespace FCS.Crawler
+{
+    public class Update_RealTimeJobToDayOne : CommonJob, IJob
+    {
+        public Update_RealTimeJobToDayOne()
+        {
+            logName = "Update_RealTimeJobToDayOne";
+        }
+        public void Execute(IJobExecutionContext context)
+        {
+            Config = CommonHelper.GetConfigFromDataMap(context.JobDetail.JobDataMap);
+            Click();
+        }
+
+        public void Click()
+        {
+            ThreadPool.SetMaxThreads(500, 500);
+            CommonHelper.LogBD("开始Update_RealTimeJobToDay10",logName);
+            Trace.WriteLine("开始Update_RealTimeJobToDay10" + DateTime.Now);
+
+            #region 当天
+            var query = services.Query<F_Games>(" and StartDateTime>'" + DateTime.Now.AddDays(0).ToString("yyyy-MM-dd") + "' and StartDateTime < '" + DateTime.Now.AddDays(1).AddHours(1).ToString("yyyy-MM-dd") + "'").Where(a => a.StartDateTime < Convert.ToDateTime(DateTime.Now.AddDays(1)) && a.StartDateTime > Convert.ToDateTime(DateTime.Now.ToShortDateString())).ToList();
+            query = query.Where((x, i) => query.FindIndex(z => z.Id == x.Id) == i).ToList();//Lambda表达式去重
+            int page = query.Count % 500 == 0 ? query.Count / 500 : query.Count / 500 + 1;
+            for (int i = 0; i < page; i++)
+            {
+                var query1 = query.Skip(i * 500).Take(500).ToList();
+                // list = query;
+                var task1 = new Task(() =>
+                {
+                    new OddsJob().Click(query1, query1);
+                });
+                var task2 = new Task(() =>
+                {
+                    new AsianDishJob().Click(query1, query1);
+                });
+                var task3 = new Task(() =>
+                {
+                    new SizeIndexJob().Click(query1, query1);
+                });
+                task1.Start();
+                task2.Start();
+                task3.Start();
+                Task.WaitAll(task1, task2, task3);
+
+                List<string> listint = new List<string>();
+                foreach (var item in query1)
+                {
+                    listint.Add(item.Id);
+                }
+                if (listint.Count > 0)
+                    services.Update<F_Games>(" and Id in ('" + string.Join("','", listint) + "')");
+            }
+
+            #endregion
+
+
+            CommonHelper.LogBD("获取完Update_RealTimeJobToDay10", logName);
+            Trace.WriteLine("获取完Update_RealTimeJobToDay10" + DateTime.Now);
+        }
+    }
+
+}

+ 2 - 0
FCS.Crawler/FCS.Crawler.csproj

@@ -132,6 +132,8 @@
       <DependentUpon>Service1.cs</DependentUpon>
     </Compile>
     <Compile Include="Content\Jobs\FootJobs\PlayersGameData\PlayersGameDataJob.cs" />
+    <Compile Include="Content\UpdateService\UpdateJobs\Update_RealTimeJobCeshi.cs" />
+    <Compile Include="Content\UpdateService\UpdateJobs\Update_RealTimeJobToDayOne.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Content\Jobs\FootJobs\ZCMatchRankingList\ShooterListJob.cs" />