sueblue 6 years ago
parent
commit
ec2ff2241f
1 changed files with 121 additions and 75 deletions
  1. 121 75
      FCS.Crawler/Content/Jobs/FootJobs/ZCLotteryGames/GamesJob.cs

+ 121 - 75
FCS.Crawler/Content/Jobs/FootJobs/ZCLotteryGames/GamesJob.cs

@@ -128,64 +128,110 @@ namespace FCS.Crawler.ZCLotteryGames
             }
             //  Gamelist= Gamelist.Where((x, i) => Gamelist.FindIndex(z => z.GroupingId == x.GroupingId && z.VisitingTeamId == x.VisitingTeamId && z.HomeTeamId == x.HomeTeamId && z.HomeTeamScore_All == x.HomeTeamScore_All && z.VisitingTeamScore_All == x.VisitingTeamScore_All && z.HomeTeamScore_Half == x.HomeTeamScore_Half && z.VisitingTeamScore_Half == x.VisitingTeamScore_Half && z.EventId == x.EventId && z.Season == x.Season) == i).ToList();//Lambda表达式去重
             gamesList =gamesList.Where((x, i) => gamesList.FindIndex(z => z.GroupingId == x.GroupingId && z.VisitingTeamId == x.VisitingTeamId && z.HomeTeamId == x.HomeTeamId && z.HomeTeamScore_All == x.HomeTeamScore_All && z.VisitingTeamScore_All == x.VisitingTeamScore_All && z.HomeTeamScore_Half == x.HomeTeamScore_Half && z.VisitingTeamScore_Half == x.VisitingTeamScore_Half && z.EventId == x.EventId && z.Season == x.Season) == i).ToList();//Lambda表达式去重
-            max = gamesList.Count;
-            num = 0;
-            int sss = 0;
-            //比较比赛
-            gamesList.ForEach(async p =>
+
+            //{
+            //    max = gamesList.Count;
+            //    num = 0;
+            //    int sss = 0;
+            //    //比较比赛
+            //    gamesList.ForEach(async p =>
+            //    {
+            //        await Task.Run(() =>
+            //        {
+
+            //            var istrue = Gamelist.Where(a => a.Season == p.Season && a.GroupingId == p.GroupingId && a.HomeTeamId == p.HomeTeamId && a.VisitingTeamId == p.VisitingTeamId && a.EventId == p.EventId && a.StartDateTime == p.StartDateTime).ToList();
+            //            //if(Gamelist.Where(a=>a.HomeTeamId== "ff8d81fa-3444-4e5d-955c-79049a722daa"&&a.VisitingTeamId== "5629c466-a3e4-4a1a-9826-0a5c86244f08"&&a.CreateDateTime>))
+            //            if (istrue.Count > 0)
+            //            {//已有比赛 判断是否需要更新数据
+            //                var onegame = istrue.FirstOrDefault();
+            //                if (onegame.HomeTeamScore_All != p.HomeTeamScore_All || onegame.HomeTeamScore_Half != p.HomeTeamScore_Half || onegame.VisitingTeamScore_All != p.VisitingTeamScore_All || onegame.VisitingTeamScore_Half != p.VisitingTeamScore_Half || onegame.Status != "a058ec2ec96ae811ab3100ac6a4a134f")
+            //                {
+            //                    lock (gamesList_new)
+            //                    {
+            //                        p.Id = onegame.Id;
+            //                        gamesList_new.Add(p);
+            //                        gamesList_new2.Add(p);
+            //                    }
+            //                    foreach (var item in istrue)
+            //                    {
+            //                        lock (listint)
+            //                        {
+            //                            listint.Add(item.PK);
+            //                        }
+            //                    }
+
+            //                }
+            //                else
+            //                {
+            //                    //数据不做修改
+            //                }
+            //            }
+            //            else
+            //            {//没有次比赛 新增
+            //                lock (gamesList_new)
+            //                {
+            //                    gamesList_new.Add(p);
+            //                }
+
+            //            }
+
+
+            //        });
+            //        lock (locker)
+            //        {
+            //            num++;
+            //            Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
+            //        }
+            //    });
+            //    lock (locker)
+            //    {
+            //        while (num < max)
+            //        {
+            //            Monitor.Wait(locker);//等待
+            //        }
+            //    }
+            //}
+
+            var group = gamesList.GroupBy(a => a.GroupingId).Select(g => g.Last()).ToList();
+            foreach (var item in group)
             {
-                await Task.Run(() =>
+                var new_group_game=gamesList.Where(a => a.GroupingId == item.GroupingId).ToList();
+                var group_game = Gamelist.Where(a => a.GroupingId == item.GroupingId).ToList();
+                if (new_group_game.Count >= group_game.Count)
                 {
-
-                    var istrue = Gamelist.Where(a => a.Season == p.Season && a.GroupingId == p.GroupingId && a.HomeTeamId == p.HomeTeamId && a.VisitingTeamId == p.VisitingTeamId && a.EventId == p.EventId&&a.StartDateTime==p.StartDateTime).ToList();
-                    //if(Gamelist.Where(a=>a.HomeTeamId== "ff8d81fa-3444-4e5d-955c-79049a722daa"&&a.VisitingTeamId== "5629c466-a3e4-4a1a-9826-0a5c86244f08"&&a.CreateDateTime>))
-                    if (istrue.Count > 0)
-                    {//已有比赛 判断是否需要更新数据
-                        var onegame = istrue.FirstOrDefault();
-                        if (onegame.HomeTeamScore_All != p.HomeTeamScore_All || onegame.HomeTeamScore_Half != p.HomeTeamScore_Half || onegame.VisitingTeamScore_All != p.VisitingTeamScore_All|| onegame.VisitingTeamScore_Half != p.VisitingTeamScore_Half || onegame.Status != "a058ec2ec96ae811ab3100ac6a4a134f")
+                    foreach (var item1 in new_group_game)
+                    {
+                        switch (group_game.Where(a => a.GroupingId == item.GroupingId && a.HomeTeamId == item1.HomeTeamId && a.VisitingTeamId == item1.VisitingTeamId && a.StartDateTime == item1.StartDateTime && a.Status == item1.Status).ToList().Count)
                         {
-                            lock (gamesList_new)
-                            {
-                                p.Id = onegame.Id;
-                                gamesList_new.Add(p);
-                                gamesList_new2.Add(p);
-                            }
-                            foreach (var item in istrue)
-                            {
-                                lock (listint)
+                            case 0:
+                                gamesList_new.Add(item1);
+                                break;
+                            case 1:
+                                var gamedetail = group_game.Where(a => a.GroupingId == item.GroupingId && a.HomeTeamId == item1.HomeTeamId && a.VisitingTeamId == item1.VisitingTeamId && a.StartDateTime == item1.StartDateTime && a.Status == item1.Status).FirstOrDefault();
+                                var new_game = item1;
+                                new_game.Id = gamedetail.Id;
+                                gamesList_new.Add(new_game);
+                                listint.Add(gamedetail.PK);
+                                break;
+                            default:
+                                var gamedetail1 = group_game.Where(a => a.GroupingId == item.GroupingId && a.HomeTeamId == item1.HomeTeamId && a.VisitingTeamId == item1.VisitingTeamId && a.StartDateTime == item1.StartDateTime && a.Status == item1.Status).ToList();
+                                var new_game1 = item1;
+                                new_game1.Id = gamedetail1.OrderByDescending(a=>a.CreateDateTime).FirstOrDefault().Id;
+                                gamesList_new.Add(new_game1);
+                                foreach (var item2 in gamedetail1)
                                 {
-                                    listint.Add(item.PK);
+                                    listint.Add(item2.PK);
                                 }
-                            }
-                           
-                        }
-                        else
-                        {
-                            //数据不做修改
+                                break;
                         }
                     }
-                    else
-                    {//没有次比赛 新增
-                        lock (gamesList_new)
-                        {
-                            gamesList_new.Add(p);
-                        }
-
-                    }
-
-
-                });
-                lock (locker)
-                {
-                    num++;
-                    Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
                 }
-            });
-            lock (locker)
-            {
-                while (num < max)
+                else {
+                    gamesList_new.AddRange(new_group_game);    
+                }
+                foreach (var item1 in group_game)
                 {
-                    Monitor.Wait(locker);//等待
+                    listint.Add(item.PK);
                 }
             }
             Thread.Sleep(5000);
@@ -621,34 +667,34 @@ namespace FCS.Crawler.ZCLotteryGames
         /// <param name="Season"></param>
         public void Insert(string data, string Id, string Season, string url)
         {
-            var query = data.Split('|');
-            F_Games game = new F_Games();
-            game.Id = CommonHelper.GetGuid().ToString();
-            game.CreateDateTime = DateTime.Now;
-            game.EventId = Group.Where(a => a.Id == Id).FirstOrDefault().EventId;
-            game.EventType = Group.Where(a => a.Id == Id).FirstOrDefault().EventType;
-            game.Heat = 0;
-            var team = teamlist.Where(a => a.Name == query[1]).FirstOrDefault();
-            if (team == null)
-                return;
-            game.HomeTeamId = team == null ? "" : team.Id;
-            game.HomeTeamScore_All = query[2].Split(':')[0].TryToInt32();
-            game.HomeTeamScore_Half = query[4].Split(':')[0].TryToInt32();
-            game.IsOvertime = false;
-            game.Remark = url;
-            game.Season = Season;
-            game.StartDateTime = Convert.ToDateTime(query[0]);
-            game.Status = query[4] == "-:-" ? g1 : query[2] == "-:-" ? g2 : g3;
-            team = teamlist.Where(a => a.Name == query[3]).FirstOrDefault();
-            if (team == null)
-                return;
-            game.VisitingTeamId = team.Id;
-            game.VisitingTeamScore_All = query[2].Split(':')[1].TryToInt32();
-            game.VisitingTeamScore_Half = query[4].Split(':')[1].TryToInt32();
-            game.GroupingId = Id;
-            game.IsObtain = false;
             lock (gamesList)
             {
+                var query = data.Split('|');
+                F_Games game = new F_Games();
+                game.Id = CommonHelper.GetGuid().ToString();
+                game.CreateDateTime = DateTime.Now;
+                game.EventId = Group.Where(a => a.Id == Id).FirstOrDefault().EventId;
+                game.EventType = Group.Where(a => a.Id == Id).FirstOrDefault().EventType;
+                game.Heat = 0;
+                var team = teamlist.Where(a => a.Name == query[1]).FirstOrDefault();
+                if (team == null)
+                    return;
+                game.HomeTeamId = team == null ? "" : team.Id;
+                game.HomeTeamScore_All = query[2].Split(':')[0].TryToInt32();
+                game.HomeTeamScore_Half = query[4].Split(':')[0].TryToInt32();
+                game.IsOvertime = false;
+                game.Remark = url;
+                game.Season = Season;
+                game.StartDateTime = Convert.ToDateTime(query[0]);
+                game.Status = query[4] == "-:-" ? g1 : query[2] == "-:-" ? g2 : g3;
+                team = teamlist.Where(a => a.Name == query[3]).FirstOrDefault();
+                if (team == null)
+                    return;
+                game.VisitingTeamId = team.Id;
+                game.VisitingTeamScore_All = query[2].Split(':')[1].TryToInt32();
+                game.VisitingTeamScore_Half = query[4].Split(':')[1].TryToInt32();
+                game.GroupingId = Id;
+                game.IsObtain = false;
                 gamesList.Add(game);
             }