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 < 9) { try { string Month = DateTime.Now.ToString("yyyyMM"); string Date = DateTime.Now.ToString("yyyyMMdd"); string check = function.ReadInstance("/Operate/" + Date + ".txt"); if (string.IsNullOrEmpty(check)) { function.WritePage("/Operate/", "" + Date + ".txt", DateTime.Now.ToString("HH:mm:ss")); WebCMSEntities db = new WebCMSEntities(); //统计发货量 DataTable dt = CustomerSqlConn.dtable("select CONCAT('update Users set ThisMonthSend=(select count(Id) from StoreStockChange where CreateDate>=\\'" + DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00\\' and TransType in (10,11) and OpId=',Id,') where Id=',Id,';') from Users where UserType=1", MysqlConn.SqlConnStr); foreach(DataRow dr in dt.Rows) { CustomerSqlConn.op(dr[0].ToString(), MysqlConn.SqlConnStr); } dt = CustomerSqlConn.dtable("select distinct CONCAT('update Users set ThisMonthSend=(select count(Id) from StoreStockChange where CreateDate>=\\'" + DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00\\' and TransType in (10,11) and StoreId in (select Id from StoreHouse where UserId=',QueryCount,') and OpId=',OpId,') where Id=', QueryCount,';') from StoreForOperate where Sort=0 and Status>-1", MysqlConn.OpSqlConnStr); foreach(DataRow dr in dt.Rows) { CustomerSqlConn.op(dr[0].ToString(), MysqlConn.SqlConnStr); } //统计库存 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(); db.Dispose(); } } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "运营中心重置本月发货量异常"); } } Thread.Sleep(800000); } } #endregion } }