using Microsoft.Practices.Unity; using MyCode.Project.Domain.Config; using MyCode.Project.Domain.Message.Request.Report40; using MyCode.Project.Domain.Message.Request.WebSocket; using MyCode.Project.Domain.Message.Response.User; using MyCode.Project.Domain.Message.Response.WebSocket; using MyCode.Project.Infrastructure.Cache; using MyCode.Project.Infrastructure.Common; using MyCode.Project.Infrastructure.Constant; using MyCode.Project.Infrastructure.Enumeration; using MyCode.Project.Infrastructure.UnityExtensions; using MyCode.Project.Infrastructure.WebPost; using MyCode.Project.Repositories.Common; using MyCode.Project.Services; using Newtonsoft.Json.Linq; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace Fleck.Samples.ConsoleApp { public class Server { static int procc = 0; //线程池空闲线程数 static int maxPoolnum = 10; static int AddPoolStatus = 0; static void Main() { /// /// WebSocketIpAddress /// IUnityContainer container = UnityHelper.GetUnityContainer(); container.RegisterType(new PerThreadLifetimeManager()); new DingDingHelper(SystemConfig.DingDingApiUrl, "websocket"); //注册缓存对象 container.RegisterType(new InjectionConstructor(SystemConfig.RedisAddress, SystemConfig.CachePrefix)); string webSocketIpAddress = WebConfigUtils.GetAppSettingsInfo("WebSocketIpAddress"); //var _webSocketService = UnityHelper.GetService(); var _myCodeCacheService = UnityHelper.GetService(); SystemCache systemCache = new SystemCache(); FleckLog.Level = LogLevel.Debug; var allSockets = new List(); WebSocketMessgeResp webSocketMessgeResp = new WebSocketMessgeResp(); webSocketMessgeResp.ContentTxt = new HomeMessgeResp(); webSocketMessgeResp.ContentTxt.HeadImgUrl = ""; webSocketMemberIdKey = new Dictionary(); //2021-12-29 本次版本运营要求取消消息页面,停止掉websocket消息 while (1 == 0 && true) { try { var server = new WebSocketServer(webSocketIpAddress); server.Start(socket => { socket.OnOpen = () => { string name = ""; //解析授权token if (socket.ConnectionInfo.Headers.Keys.Contains("Authorization")) { var authHeader = socket.ConnectionInfo.Headers["Authorization"]; if (!string.IsNullOrWhiteSpace(authHeader)) { try { var obj = TokenHelper.Get(authHeader.Trim(), SystemConfig.JwtKey, Const.LoginInfoKey); var loginInfo = ((JObject)obj).ToObject(); systemCache.Set(socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort, loginInfo, new TimeSpan(365, 0, 0, 0)); systemCache.Set("IP" + loginInfo.UserId.ToString(), socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort, new TimeSpan(365, 0, 0, 0)); name = loginInfo.Name; LogHelper.Info(loginInfo.Name + "绑定IP:" + socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); allSockets.Add(socket); } catch (Exception ex) { socket.Send("-2"); Console.WriteLine(ex.Message); //socket.Close(); } } Console.WriteLine(name + ":Open!"); } else { Console.WriteLine("Open没有传授权参数"); LogHelper.Info("绑定IP:" + socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); socket.Send("-2"); Console.WriteLine("-2"); //socket.Close(); } //socket.Send("链接成功"); }; socket.OnClose = () => { allSockets.Remove(socket); try { var loginInfo = systemCache.Get(socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); if (loginInfo != null) { LogHelper.Info(loginInfo.Name + "删除IP:" + socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); systemCache.Delete("IP" + loginInfo.UserId.ToString()); } systemCache.Delete(socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); systemCache.Delete("ShopId:" + loginInfo.UserId); Console.WriteLine(loginInfo.Name + "Close!"); } catch (Exception ex) { Console.WriteLine(ex.Message); //socket.Close(); } }; socket.OnMessage = message => { var _webSocketService = UnityHelper.GetService(); Console.WriteLine(socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort + "--- " + message); if (message == "ping") //心跳 { socket.Send("pong"); Console.WriteLine("pong"); return; } LogHelper.Info("ip:" + socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); var loginInfo = systemCache.Get(socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); Console.WriteLine(message); if (loginInfo != null) { var requst = JsonHelper.ToObject(message); string key = CacheKey.WebSocketQueueCacheKey + requst.Id + loginInfo.UserId; if (requst.Message == "1") { _myCodeCacheService.Delete(key + CacheKey.WebSocketMemberQueueCacheKey); _myCodeCacheService.Delete(key); if (!webSocketMemberIdKey.ContainsKey(loginInfo.UserId.ToString())) { webSocketMemberIdKey.Add(loginInfo.UserId.ToString(), key); } else { webSocketMemberIdKey[loginInfo.UserId.ToString()] = key; } LogHelper.Info(loginInfo.Name + " " + loginInfo.UserId + " 被增加了一个详情页的KEY:" + key); } if (webSocketMemberIdKey.ContainsKey(loginInfo.UserId.ToString()) && requst.Message == "0") { int i = 0; //webSocketMemberIdKey[loginInfo.UserId.ToString()] = ""; webSocketMemberIdKey.Remove(loginInfo.UserId.ToString()); LogHelper.Info(loginInfo.Name + " " + loginInfo.UserId + " 被删了一个详情页的KEY:" + key); _myCodeCacheService.Delete(key); //会员详情页消息 _myCodeCacheService.Delete(key + CacheKey.WebSocketMemberQueueCacheKey); //进店消息详情页通知 } var result = _webSocketService.MessageProcessing(message, loginInfo); if (!string.IsNullOrWhiteSpace(result)) { socket.Send(result); //Console.WriteLine(loginInfo.Name + result); LogHelper.Info(loginInfo.Name + $"接收消息后推送首页列表消息: " + result); } systemCache.Set("ShopId:" + loginInfo.UserId, requst.ShopId, new TimeSpan(1, 0, 0, 0)); } else { } }; socket.OnError = message => { var loginInfo = systemCache.Get(socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); Console.WriteLine(message); systemCache.Delete(socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); if (loginInfo != null) { LogHelper.Error(loginInfo.Name + "出错啦!(148)"); Console.WriteLine(loginInfo.Name + "出错啦!"); DingDingSendMsg(loginInfo.Name + $"出错啦:" + message); systemCache.Delete("IP" + loginInfo.UserId.ToString()); } else { Console.WriteLine("出错啦!"); LogHelper.Error("(158)出错啦!"); } LogHelper.Error(message); //allSockets.Remove(socket); //socket.Close(); //container.RegisterType(new PerThreadLifetimeManager()); //Thread.Sleep(3000); }; }); //监听消息队列里是否有新消息要推送 //详情消息 Task task1 = new Task(() => { while (1 == 1) { try { var keys = webSocketMemberIdKey.Keys.ToList(); if (keys != null) { foreach (var key in keys) { var keyValue = webSocketMemberIdKey[key]; //LogHelper.Info($"keyValue:" + key); if (string.IsNullOrWhiteSpace(keyValue)) { //LogHelper.Info($"消失的主动推详情消息KEY:" + key); continue; } var msg = (RedisMessge)_myCodeCacheService.Popup(keyValue); if (msg != null) { var clientIpInfo = systemCache.Get("IP" + msg.UserId.ToString()); if (clientIpInfo != null) { var socket = allSockets.FirstOrDefault(t => t.ConnectionInfo.ClientIpAddress + ":" + t.ConnectionInfo.ClientPort == clientIpInfo); if (socket != null) { var loginInfo = systemCache.Get(socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); if (loginInfo != null) { var _webSocketService = UnityHelper.GetService(); string result = _webSocketService.SendMsg(msg, loginInfo); socket.Send(result); LogHelper.Info(loginInfo.Name + $"主动推详情消息:" + result); Console.WriteLine(loginInfo.Name + "主动推详情消息:" + result); //LogHelper.Info("主动推详情消息:" + result); } } } else { LogHelper.Info($"主动推详情消息没有IP:" + msg.UserId.ToString()); Console.WriteLine("主动推详情消息没有IP:" + msg.UserId.ToString()); } } }; } } catch (Exception ex1) { LogHelper.Info($"详情消息出错:" + ex1.Message); LogHelper.Info(ex1); } Thread.Sleep(300); } }); task1.Start(); //首页消息 Task task2 = new Task(() => { while (1 == 1) { try { var IndexMsg = (RedisMessge)_myCodeCacheService.Popup(CacheKey.WebSocketQueueCacheKey); while (IndexMsg != null) { var clientIpInfo = systemCache.Get("IP" + IndexMsg.UserId.ToString()); if (clientIpInfo != null) { var socket = allSockets.FirstOrDefault(t => t.ConnectionInfo.ClientIpAddress + ":" + t.ConnectionInfo.ClientPort == clientIpInfo); if (socket != null) { var _webSocketService = UnityHelper.GetService(); var loginInfo = systemCache.Get(socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); IndexMsg.PositionType = 1; Guid? shopId = systemCache.Get("ShopId:" + loginInfo.UserId); if (shopId == null || (IndexMsg.ShopId != null && shopId == IndexMsg.ShopId) || IndexMsg.TemplateType == (int)ChatMessagType.MaterialsStore) { string result = _webSocketService.SendMsg(IndexMsg, loginInfo); shopId = systemCache.Get("ShopId:" + loginInfo.UserId); if (shopId == null || (IndexMsg.ShopId != null && shopId == IndexMsg.ShopId) || IndexMsg.TemplateType == (int)ChatMessagType.MaterialsStore) { socket.Send(result); LogHelper.Info(loginInfo.Name + $"主动推首页列表消息: " + result); Console.WriteLine(loginInfo.Name + "主动推首页列表消息:" + result); } else { LogHelper.Info(shopId); LogHelper.Info(IndexMsg); LogHelper.Info(loginInfo.Name + "2主动推首页列表消息:不是当前店铺,不推此消息"); Console.WriteLine(loginInfo.Name + "2主动推首页列表消息:不是当前店铺,不推此消息"); } } else { LogHelper.Info(shopId); LogHelper.Info(IndexMsg); LogHelper.Info(loginInfo.Name + "主动推首页列表消息:不是当前店铺,不推此消息"); Console.WriteLine(loginInfo.Name + "主动推首页列表消息:不是当前店铺,不推此消息"); } } } else { LogHelper.Info($"主页列表消息:该用户没有在线: " + IndexMsg.UserId.ToString()); Console.WriteLine("主页列表消息:该用户没有在线: " + IndexMsg.UserId.ToString()); } IndexMsg = (RedisMessge)_myCodeCacheService.Popup(CacheKey.WebSocketQueueCacheKey); } //DingDingSendMsg($"这是一个轮回:" + DateTime.Now); //Console.WriteLine("这是一个轮回:" + DateTime.Now); } catch (Exception ex2) { LogHelper.Info($"首页消息出错:" + ex2.Message); LogHelper.Info(ex2); } Thread.Sleep(300); } }); task2.Start(); ////会员进店提醒 //Task task3 = new Task(() => //{ // while (1 == 1) // { // try // { // var keys = webSocketMemberIdKey.Keys.ToList(); // if (keys != null) // { // foreach (var key in keys) // { // var keyValue = webSocketMemberIdKey[key]; // if (string.IsNullOrWhiteSpace(keyValue)) // continue; // var msg = (RedisMessge)_myCodeCacheService.Popup(keyValue + CacheKey.WebSocketMemberQueueCacheKey); // if (msg != null) // { // var clientIpInfo = systemCache.Get("IP" + msg.UserId.ToString()); // if (clientIpInfo != null) // { // var socket = allSockets.FirstOrDefault(t => t.ConnectionInfo.ClientIpAddress + ":" + t.ConnectionInfo.ClientPort == clientIpInfo); // if (socket != null) // { // var loginInfo = systemCache.Get(socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort); // if (loginInfo != null) // { // var _webSocketService = UnityHelper.GetService(); // string result = _webSocketService.SendMsg(msg, loginInfo); // socket.Send(result); // LogHelper.Info(loginInfo.Name + $"主动推会员进店详情消息:" + result); // Console.WriteLine(loginInfo.Name + "主动推会员进店详情消息:" + result); // //LogHelper.Info("主动推详情消息:" + result); // } // } // } // else // { // LogHelper.Info($"主动推会员进店详情消息没有IP:" + msg.UserId.ToString()); // Console.WriteLine("主动推会员进店详情消息没有IP:" + msg.UserId.ToString()); // } // } // }; // } // } // catch (Exception ex3) // { // LogHelper.Info($"会员进店提醒出错:" + ex3.Message); // LogHelper.Info(ex3); // } // Thread.Sleep(1000); // } //}); //task3.Start(); ////每秒轮询调用会员进店提醒方法 //Task task4 = new Task(() => //{ // while (1 == 1) // { // DateTime time = DateTime.Now; // var _webSocketService = UnityHelper.GetService(); // try // { // searchTime = _webSocketService.SendMessageByFace(searchTime); // } // catch(Exception ex4) // { // LogHelper.Info($"每秒轮询调用会员进店提醒方法出错:" + ex4.Message); // LogHelper.Info(ex4); // } // var span = DateTime.Now - time; // if (1000d - span.TotalMilliseconds > 0) // { // var sss =(int)( 1000 - span.TotalMilliseconds); // Thread.Sleep(sss); // } // } //}); //task4.Start(); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex); LogHelper.Error("(238)出错:" + ex.Message); LogHelper.Error(ex); DingDingSendMsg($"(240)出错啦:" + ex.Message); allSockets.Clear(); allSockets = new List(); Thread.Sleep(300); } } int send = 1; int hour = 0; DateTime runTime = DateTime.Now; //把门店的使用数据储存到数据库 while (true) { try { if (procc < 0) procc = 0; ThreadPool.SetMinThreads(1, 1); ThreadPool.SetMaxThreads(maxPoolnum, maxPoolnum); int ii = 0; ThreadPool.GetAvailableThreads(out procc, out ii); if (DateTime.Now.Hour == hour && send == 1) { send = 0; DingDingSendMsg("正常运行中: " + DateTime.Now); } else if (DateTime.Now.Hour != hour) { hour = DateTime.Now.Hour; send = 1; } Console.WriteLine((10-procc)+"个线程在运行,憨鸠鸠又一日 " + DateTime.Now); var abc = ThreadPool.QueueUserWorkItem(new WaitCallback(rpShopUseAppletDataServiceSaveData), 1); //var _rpShopUseAppletDataService = UnityHelper.GetService(); //var temp1 = _myCodeCacheService.Popup(CacheKey.RpShopUseAppletDataKey2); //if (temp1 != null) //{ // var something = _myCodeCacheService.Popup(CacheKey.RpShopUseAppletDataKey); // if (something != null) // { // string json = JsonHelper.ToJson(something); // Console.WriteLine("获取到的参数 :" + json); // if (!string.IsNullOrWhiteSpace(json)) // _rpShopUseAppletDataService.SaveData(json); // } // var req1 = JsonHelper.ToObject(temp1.ToString()); // _rpShopUseAppletDataService.SelectSetData(req1.ApiUrl, req1.RequestDataStr, req1.Token); //} } catch (Exception ex) { Console.WriteLine(ex); LogHelper.Error("(452)出错:" + ex.Message); LogHelper.Error(ex); DingDingSendMsg($"(454)出错啦:" + ex.Message); } Thread.Sleep(1000); try { var _HuLiHuShao40Service = UnityHelper.GetService(); var something = _myCodeCacheService.Popup(CacheKey.RpHuLiHuShao); //if (something != null) //已经不要了 //{ // string json = JsonHelper.ToJson(something); // Console.WriteLine("年报月报获取到的参数 :" + json); // if (!string.IsNullOrWhiteSpace(json)) // _HuLiHuShao40Service.AutoSetReport(); //} } catch (Exception ex) { Console.WriteLine(ex); //LogHelper.Error("(471)年报月报出错:" + ex.Message); //LogHelper.Error(ex); //DingDingSendMsg($"(473)年报月报出错:" + ex.Message); } try { if (AddPoolStatus == 0 && _myCodeCacheService.Exists("Auto:GetShopFenXiReport2207")) { DateTime now = DateTime.Now; var tempJson = _myCodeCacheService.Get("Auto:GetShopFenXiReport2207"); var templist = JsonHelper.ToObject>(tempJson); _myCodeCacheService.Delete("Auto:GetShopFenXiReport2207"); var abc = ThreadPool.QueueUserWorkItem(new WaitCallback(AddPool), templist); //templist.ForEach(t => //{ // var abc = ThreadPool.QueueUserWorkItem(new WaitCallback(TaskFenXiReportToCache), t); //}); Console.WriteLine("执行提前查询方法:Auto:GetShopFenXiReport2207"); } else { _myCodeCacheService.Delete("Auto:GetShopFenXiReport2207"); } } catch (Exception ex) { Console.WriteLine(ex); } try { if (_myCodeCacheService.Exists("Auto:PoolTaskSave2308TodayData")) { var tempJson = _myCodeCacheService.Popup("Auto:PoolTaskSave2308TodayData"); var abc = ThreadPool.QueueUserWorkItem(new WaitCallback(PoolTaskSave2308TodayData), tempJson); Console.WriteLine("执行提前查询方法:Auto:PoolTaskSave2308TodayData"); } } catch (Exception ex) { Console.WriteLine(ex); } try { DateTime now = DateTime.Now; if ((now- runTime).TotalMinutes>=4) { runTime = now; //PoolTaskReport2308LargeScreen(1); var abc = ThreadPool.QueueUserWorkItem(new WaitCallback(PoolTaskReport2308LargeScreen), 1); Console.WriteLine("执行提前查询方法:刷202308的大投屏缓存"); } //PoolTaskReport2308LargeScreen } catch (Exception ex) { Console.WriteLine(ex); } GC.Collect(); } } //private static ConcurrentBag webSocketMemberIdKey; private static Dictionary webSocketMemberIdKey; private static DateTime searchTime = DateTime.Now; #region SendMsg(发送信息) private static Task DingDingSendMsg(string content) { string url = WebConfigUtils.GetAppSettingsInfo("DingDingApiUrl"); string _txt = "websocket" + WebConfigUtils.GetAppSettingsInfo("DingDingTxt"); WebUtils webUtils = new WebUtils(); var jsonObject = new { msgtype = "text", text = new { content = _txt + content } }; var jsonStr = JsonHelper.ToJson(jsonObject); try { var result = webUtils.DoPostJson(url, jsonStr); } catch { } return Task.CompletedTask; } #endregion public static string TaskFenXiReportToCache(object i) { string md5key = ""; try { int ii = 10; ThreadPool.GetAvailableThreads(out procc, out ii); int tempprocc = procc; Stopwatch sw = new Stopwatch(); GetShopFenXiReport2207 act = (GetShopFenXiReport2207)i; Console.WriteLine($@"{10- tempprocc}线程池执行方法:TaskFenXiReportToCache 开始" + act.UserId + " " + act.DuiBi + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); var _report2207Service = UnityHelper.GetService(); sw.Start(); md5key = _report2207Service.SetFenXiReportToCache(act.UserId, act.DuiBi); sw.Stop(); Console.WriteLine($@"{10- tempprocc}线程池执行方法:TaskFenXiReportToCache 结束,耗时" + sw.Elapsed.TotalSeconds + "秒" + act.UserId + " " + act.DuiBi + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); } catch (Exception ex) { md5key = "-1"; Console.WriteLine(ex); } return md5key; } public static void rpShopUseAppletDataServiceSaveData(object i) { try { int ii = 10; ThreadPool.GetAvailableThreads(out procc, out ii); int tempprocc = procc; Console.WriteLine((10- tempprocc) + "线程池执行方法:rpShopUseAppletDataServiceSaveData 开始" + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); Stopwatch sw = new Stopwatch(); sw.Start(); var _myCodeCacheService = UnityHelper.GetService(); var _rpShopUseAppletDataService = UnityHelper.GetService(); var temp1 = _myCodeCacheService.Popup(CacheKey.RpShopUseAppletDataKey2); if (temp1 != null) { var something = _myCodeCacheService.Popup(CacheKey.RpShopUseAppletDataKey); if (something != null) { string json = JsonHelper.ToJson(something); Console.WriteLine("获取到的参数 :" + json); if (!string.IsNullOrWhiteSpace(json)) _rpShopUseAppletDataService.SaveData(json); } var req1 = JsonHelper.ToObject(temp1.ToString()); _rpShopUseAppletDataService.SelectSetData(req1.ApiUrl, req1.RequestDataStr, req1.Token); } sw.Stop(); Console.WriteLine((10- tempprocc) + "线程池执行方法:rpShopUseAppletDataServiceSaveData 结束,耗时" + sw.Elapsed.TotalSeconds + "秒" + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); } catch (Exception ex) { Console.WriteLine(ex); } } public static void AddPool(object act) { if (AddPoolStatus == 1) { return; } AddPoolStatus = 1; try { List md5Key = new List(); Stopwatch sw = new Stopwatch(); sw.Start(); List templist = (List)act; var _report2207Service = UnityHelper.GetService(); templist.ForEach(t => { int ii = 0; ThreadPool.GetAvailableThreads(out procc, out ii); //temKey= TaskFenXiReportToCache(t); int tempprocc = procc; GetShopFenXiReport2207 act2 = (GetShopFenXiReport2207)t; Console.WriteLine($@"{10 - tempprocc}线程池执行方法:TaskFenXiReportToCache 开始" + act2.UserId + " " + act2.DuiBi + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); Stopwatch sw2 = new Stopwatch(); sw2.Start(); _report2207Service.SetFenXiReportToCache(act2.UserId, act2.DuiBi); sw2.Stop(); Console.WriteLine($@"{10 - tempprocc}线程池执行方法:TaskFenXiReportToCache 结束,耗时" + sw2.Elapsed.TotalSeconds + "秒" + act2.UserId + " " + act2.DuiBi + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); Thread.Sleep(2000); }); AddPoolStatus = 0; sw.Stop(); Console.WriteLine((10 - procc) + "线程池执行方法:商品分析对比计算 结束,耗时" + sw.Elapsed.TotalSeconds + "秒" + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); templist.Clear(); templist = null; GC.Collect(); } catch (Exception ex) { Console.WriteLine(ex); } } public static void PoolTaskSave2308TodayData(object i) { try { int ii = 10; ThreadPool.GetAvailableThreads(out procc, out ii); int tempprocc = procc; Console.WriteLine((10- tempprocc) + "线程池执行方法:PoolTaskSave2308TodayData 开始" + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); Stopwatch sw = new Stopwatch(); sw.Start(); var _report2308Service = UnityHelper.GetService(); _report2308Service.TaskSave2308TodayData(Guid.Parse(i.ToString())); sw.Stop(); Console.WriteLine((10- tempprocc) + "线程池执行方法:PoolTaskSave2308TodayData 结束,耗时" + sw.Elapsed.TotalSeconds + "秒" + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); } catch (Exception ex) { Console.WriteLine(ex); } } public static void PoolTaskReport2308LargeScreen(object i) { try { int ii = 10; ThreadPool.GetAvailableThreads(out procc, out ii); int tempprocc = procc; Console.WriteLine((10- tempprocc) + "线程池执行方法:2023年8月份的大投屏缓存 开始" + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); Stopwatch sw = new Stopwatch(); sw.Start(); string url = WebConfigUtils.GetAppSettingsInfo("LxmAdminApiUrl"); WebUtils webUtils = new WebUtils(); var _myCodeCacheService = UnityHelper.GetService(); var searchstring = _myCodeCacheService.Get("timeSearch2308"); string search1 = ""; TimeSearchAct2308 search = null; if (searchstring !=null && !string.IsNullOrWhiteSpace(searchstring.ToString())) { search1 = searchstring.ToString(); //楚恩的框架存的缓存,值直接转字符串再序列号即可 search = JsonHelper.ToObject(search1); } if (search == null) { DateTime now = DateTime.Now; search = new TimeSearchAct2308(); search.BeginYearMonth =now.Year + "-01"; search.EndYearMonth = now.Year + "-" + now.Month; } search.Key = "0CB1C571-EADB-4C14-9F3E-664738078574"; var jsonStr = JsonHelper.ToJson(search); try { //计算主推品项系列销量分析存到redis 1 string apiUrl = url + "/api/Admin/Report2308LargeScreen/GetZhuTuiFenXiToRedis"; var result = webUtils.DoPostJson(apiUrl, jsonStr); } catch(Exception ex) { int dasd = 0; } try { //计算新品上市销售量分析分析存到redis 2 string apiUrl = url + "/api/Admin/Report2308LargeScreen/GetXinPinFenXiToRedis"; var result = webUtils.DoPostJson(apiUrl, jsonStr); } catch { } try { //计算家居产品销售量排行榜存到redis 3 string apiUrl = url + "/api/Admin/Report2308LargeScreen/GetJiaJuXiaoLiangToRedis"; var result = webUtils.DoPostJson(apiUrl, jsonStr); } catch { } try { //产品销售总额分析到redis 4 string apiUrl = url + "/api/Admin/Report2308LargeScreen/GetShangPinXiaoShouFenXiToRedis"; var result = webUtils.DoPostJson(apiUrl, jsonStr); } catch { } try { //计算叠加品项销售量排行榜存到redis 5 string apiUrl = url + "/api/Admin/Report2308LargeScreen/GetDieJiaPinXiaoLiangToRedis"; var result = webUtils.DoPostJson(apiUrl, jsonStr); } catch { } try { //彩妆销售top10到redis 6 string apiUrl = url + "/api/Admin/Report2308LargeScreen/GetCaiZhuangTop10ToRedis"; var result = webUtils.DoPostJson(apiUrl, jsonStr); } catch { } try { //计算主推品全国门店覆盖率存到redis 7 string apiUrl = url + "/api/Admin/Report2308LargeScreen/GetMenDianFuGaiLvToRedis"; var result = webUtils.DoPostJson(apiUrl, jsonStr); } catch { } try { //计算叠加品项全国门店覆盖率存到redis 8 string apiUrl = url + "/api/Admin/Report2308LargeScreen/GetDieJiaPinPinFuGaiLvToRedis"; var result = webUtils.DoPostJson(apiUrl, jsonStr); } catch { } sw.Stop(); Console.WriteLine((10- tempprocc) + "线程池执行方法:2023年8月份的大投屏缓存 结束,耗时" + sw.Elapsed.TotalSeconds + "秒" + " 线程ID:" + Thread.CurrentThread.ManagedThreadId); } catch (Exception ex) { Console.WriteLine(ex); } } } }