/// <summary> /// 1.2.3.4获取更新方法 /// </summary> /// <param name="dt"></param> /// <param name="HourPer"></param> public void Update(DateTime dt, int HourPer) { try { string startTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); SystemLog.GetInstance().Log.Info(string.Format("{0}:开始获取1,2,3,4报表数据", startTime)); using (DataSubmittedEntities db = new DataSubmittedEntities()) { DateTime pdt = DateTime.Parse(dt.ToShortDateString()); //获取北京段收费站列表 List <int> BJStation = StationConfiguration.GetBJStaion(); //获取天津段收费站列表 List <int> TJStation = StationConfiguration.GetStaionList2(); //获取北京段各车型合计数据VehType == 0表示合计//数据库中只存放每种车型的合计,有则更新,无则添加 IEnumerable <DS_DataSource> pBJDataSource = db.DS_DataSource.Where(p => DbFunctions.TruncateTime(p.CalcuTime) == DbFunctions.TruncateTime(dt) && BJStation.Contains(p.StaID.Value) && p.VehType == 0); //获取天津段各车型合计数据 IEnumerable <DS_DataSource> pTJDataSource = db.DS_DataSource.Where(p => DbFunctions.TruncateTime(p.CalcuTime) == DbFunctions.TruncateTime(dt) && TJStation.Contains(p.StaID.Value) && p.VehType == 0); //定义实体列表 List <RP_Daily> plist = new List <RP_Daily>(); //统计北京段 plist.AddRange(this.CalcuRP(1, pBJDataSource, pdt, BJStation)); //统计天津段 plist.AddRange(this.CalcuRP(3, pTJDataSource, pdt, TJStation)); //统计大羊坊 IEnumerable <DS_DataSource> pDYF = pBJDataSource.Where(s => s.StaID == (int)StationConfiguration.StationID.DYF); plist.AddRange(this.CalcuRP(15, pDYF, pdt, BJStation.Where(s => s.Equals(15)).ToList())); //统计泗村店 IEnumerable <DS_DataSource> pSCD = pTJDataSource.Where(s => s.StaID == (int)StationConfiguration.StationID.SCD); plist.AddRange(this.CalcuRP(33, pSCD, pdt, TJStation.Where(s => s.Equals(33)).ToList())); //添加 if (plist.Count > 0) { using (TransactionScope transac = new TransactionScope()) { db.RP_Daily.AddRange(plist); db.SaveChanges(); transac.Complete(); } } } string endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); SystemLog.GetInstance().Log.Info(string.Format("{0}:结束获取1,2,3,4报表数据", endTime)); SystemLog.GetInstance().Log.Info(string.Format("统计1,2,3,4报表数据耗时{0}秒", (DateTime.Parse(endTime) - DateTime.Parse(startTime)).TotalSeconds)); //显示执行该方法的线程ID //SystemLog.GetInstance().Log.Info(string.Format("调用1,2,3,4Update的线程ID为:{0}", Thread.CurrentThread.ManagedThreadId)); Thread.Sleep(1000); } catch (Exception ex) { throw ex; } }