示例#1
0
        /// <summary>
        /// 报表18获取数据源方法
        /// </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}:开始获取18报表数据", startTime));
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //北京段包含出入口收费站
                    List <int> BJStation = StationConfiguration.GetBJStaion();
                    DateTime   pdt       = DateTime.Parse(dt.ToShortDateString());
                    //获取当日北京段数据源,不包括合计数据
                    List <DS_DataSource> pBJCollection = db.DS_DataSource.Where(s => DbFunctions.TruncateTime(s.CalcuTime) == pdt && s.VehType != 0 && BJStation.Contains(s.StaID.Value)).ToList();

                    //判断数据是否已存在
                    RP_HDayAADTSta pHDayStaInfo = null;
                    //5种路线类型
                    for (int i = 1; i < 7; i++)
                    {
                        List <RP_HDayAADTSta> pList = db.RP_HDayAADTSta.Where(p => p.CalcuTime == pdt && p.LineType == i).ToList();
                        if (pList.Count > 0)//已存在,则更新
                        {
                            pHDayStaInfo         = pList.FirstOrDefault();
                            pHDayStaInfo.UpdDate = DateTime.Now;
                            pHDayStaInfo.State   = "1";
                        }
                        else//不存在,添加
                        {
                            pHDayStaInfo         = new RP_HDayAADTSta();
                            pHDayStaInfo.Id      = Guid.NewGuid();
                            pHDayStaInfo.CrtDate = DateTime.Now;
                            pHDayStaInfo.State   = "0";
                        }
                        pHDayStaInfo.CalcuTime = pdt;
                        switch (i)
                        {
                        //观测点1
                        case 1:
                        {
                            this.SetInfo(pBJCollection, pHDayStaInfo, StationConfiguration.GetEnObs1(), StationConfiguration.GetExObs1(), 50000, i);
                            break;
                        }

                        //观测点2
                        case 2:
                        {
                            this.SetInfo(pBJCollection, pHDayStaInfo, StationConfiguration.GetEnObs2(), StationConfiguration.GetExObs2(), 50000, i);
                            break;
                        }

                        //观测点3
                        case 3:
                        {
                            this.SetInfo(pBJCollection, pHDayStaInfo, StationConfiguration.GetEnObs3(), StationConfiguration.GetExObs3(), 50000, i);
                            break;
                        }

                        //收费站马驹桥
                        case 4:
                        {
                            this.SetInfo(pBJCollection, pHDayStaInfo, new List <int> {
                                    (int)StationConfiguration.StationID.MJQ, (int)StationConfiguration.StationID.MJQD
                                }, new List <int> {
                                    (int)StationConfiguration.StationID.MJQ
                                }, 35000, i);
                            break;
                        }

                        //收费站大羊坊
                        case 5:
                        {
                            this.SetInfo(pBJCollection, pHDayStaInfo, new List <int> {
                                    (int)StationConfiguration.StationID.DYF
                                }, new List <int> {
                                    (int)StationConfiguration.StationID.DYF
                                }, 60000, i);
                            break;
                        }

                        case 6:    //空数据
                        {
                            pHDayStaInfo.LineType = i;
                            break;
                        }
                        }
                        if (pList.Count <= 0)
                        {
                            db.RP_HDayAADTSta.Add(pHDayStaInfo);
                        }
                    }
                    using (TransactionScope tran = new TransactionScope())
                    {
                        db.SaveChanges();
                        tran.Complete();
                    }
                }
                string endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                SystemLog.GetInstance().Log.Info(string.Format("{0}:结束获取18报表数据", endTime));
                SystemLog.GetInstance().Log.Info(string.Format("统计18报表数据耗时{0}秒", (DateTime.Parse(endTime) - DateTime.Parse(startTime)).TotalSeconds));
                //显示执行该方法的线程ID
                //SystemLog.GetInstance().Log.Info(string.Format("调用18Update的线程ID为:{0}", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(1000);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }