using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading; using MySystem.PxcModels; using Library; namespace MySystem { /// /// 运营中心定时程序 /// public class OperateService { public readonly static OperateService Instance = new OperateService(); private OperateService() { } #region 每天统计一次数据 public void Start() { Thread th = new Thread(doSomething); th.IsBackground = true; th.Start(); } public void doSomething() { while (true) { if (DateTime.Now.Hour > 0 && DateTime.Now.Hour < 4) { try { string Month = DateTime.Now.ToString("yyyyMM"); string Date = DateTime.Now.ToString("yyyyMMdd"); string check = function.ReadInstance("/Operate/" + Month + ".txt"); if (string.IsNullOrEmpty(check)) { function.WritePage("/Operate/", "" + Month + ".txt", DateTime.Now.ToString("HH:mm:ss")); WebCMSEntities db = new WebCMSEntities(); OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities(); //统计发货量 Dictionary OpData = new Dictionary(); if(DateTime.Now.Day == 1) { var list = opdb.SendMonthSummary.Select(m => new { m.TradeMonth, m.OpId, m.SendCount }).Where(m => m.TradeMonth == Month).ToList(); foreach(var sub in list) { if(OpData.ContainsKey(sub.OpId)) { OpData[sub.OpId] += sub.SendCount; } else { OpData.Add(sub.OpId, sub.SendCount); } } foreach(int OpId in OpData.Keys) { Users user = db.Users.FirstOrDefault(m => m.Id == OpId); if(user != null) { user.ThisMonthSend = OpData[OpId]; } } db.SaveChanges(); } OpData.Clear(); var datelist = opdb.SendDaySummary.Select(m => new { m.TradeDate, m.OpId, m.SendCount }).Where(m => m.TradeDate == Date).ToList(); foreach(var sub in datelist) { if(OpData.ContainsKey(sub.OpId)) { OpData[sub.OpId] += sub.SendCount; } else { OpData.Add(sub.OpId, sub.SendCount); } } foreach(int OpId in OpData.Keys) { Users user = db.Users.FirstOrDefault(m => m.Id == OpId); if(user != null) { user.ThisMonthSend += OpData[OpId]; } } db.SaveChanges(); //统计库存 Dictionary StoreList = db.StoreHouse.Select(m => new { m.UserId, m.LaveNum }).Where(m => m.LaveNum > 0).GroupBy(m => m.UserId).Select(m => new { UserId = m.Key, Count = m.Count() }).ToDictionary(m => m.UserId, m => m.Count); foreach(int UserId in StoreList.Keys) { Users user = db.Users.FirstOrDefault(m => m.Id == UserId); if(user != null) { user.StoreStock += StoreList[UserId]; } } db.SaveChanges(); opdb.Dispose(); db.Dispose(); } } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "运营中心重置本月发货量异常"); } } Thread.Sleep(800000); } } #endregion } }