Exemplo n.º 1
0
        /// <summary>
        /// 根据查询条件获取数据
        /// </summary>
        /// <param name="para">查询条件类,站类型也需要</param>
        /// <returns></returns>
        public IReportViewModel GetListByPra(QueryParameters para)
        {
            //查询返回实体
            QueryHourAADTViewModel pReturn = new QueryHourAADTViewModel();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //补充空数据
                    InsertNull(para.StartTime.Value);
                    List <int>         pStationNames = StationConfiguration.GetBJStaion();
                    List <RP_HourAADT> pHourAADTList = db.RP_HourAADT.Where(s => s.CalcuTime == para.StartTime).ToList();
                    RP_HourAADT        pHourAADTInfo = new RP_HourAADT();
                    //创建或更新合计
                    CreateOrUpdateSum(para);
                    //报表数据
                    pReturn.ReportData = GetViewModelInfo(para);
                    //判断当前统计站类型,数据是否完整
                    if (GetNoDataList(para).Count() > 0)
                    {
                        pReturn.IsFull = 0;//不完整
                    }
                    else
                    {
                        pReturn.IsFull = 1;//完整
                    }
                }
            }
            catch (Exception ex)
            {
                SystemLog.GetInstance().Info(ex.Message);
            }
            return(pReturn);
        }
        /// <summary>
        /// 更新实体信息
        /// </summary>
        /// <param name="sourcelist">数据源列表</param>
        /// <param name="info">实体信息</param>
        /// <param name="statype">统计类型</param>
        /// <param name="dt">数据日期</param>
        /// <param name="ishas">记录是否已存在</param>
        private void UpdateInfo(IEnumerable <DS_DataSource> sourcelist, RP_EnEx info, int statype, DateTime dt, bool ishas)
        {
            //北京段只包含出口收费站
            List <int> outBJStation = StationConfiguration.GetOutBJStaion();

            if (ishas)//已存在,则更新
            {
                info.UpdDate = DateTime.Now;
                info.State   = "1";
            }
            else//不存在,添加
            {
                info.Id      = Guid.NewGuid();
                info.CrtDate = DateTime.Now;
                info.State   = "0";
            }
            //给实体字段赋值
            //0:小型客车,1:其他客车,2:货车,3:绿通
            info.EnSmaCar = sourcelist.Where(s => s.CalcuType == 0).Sum(s => s.OutNum.Value);
            info.EnOthCar = sourcelist.Where(s => s.CalcuType == 1).Sum(s => s.OutNum.Value);
            info.EnTruk   = sourcelist.Where(s => s.CalcuType == 2).Sum(s => s.OutNum.Value);
            //泗村店,入境“绿色通道”数据项填写“0”
            info.EnGre     = 0;
            info.StaType   = statype;
            info.CalcuTime = dt;
            //泗村店不统计出镜,,北京段出境绿通为0,不包含马驹桥东入口
            if (statype == (int)StationConfiguration.StationType.BeiJingDuan)
            {
                info.ExSmaCar = sourcelist.Where(s => outBJStation.Contains(s.StaID.Value) && s.CalcuType == 0).Sum(s => s.InNum.Value);
                info.ExOthCar = sourcelist.Where(s => outBJStation.Contains(s.StaID.Value) && s.CalcuType == 1).Sum(s => s.InNum.Value);
                info.ExTruk   = sourcelist.Where(s => outBJStation.Contains(s.StaID.Value) && s.CalcuType == 2).Sum(s => s.InNum.Value);
                info.ExGre    = 0;
                info.EnGre    = sourcelist.Where(s => s.CalcuType == 3).Sum(s => s.OutNum.Value);
            }
        }
Exemplo n.º 3
0
        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}:开始获取13,14报表数据", startTime));
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    DateTime pDt = DateTime.Parse(dt.ToShortDateString());
                    //报表13,14收费站
                    List <int> BJStation = StationConfiguration.GetBJStaion();
                    //获取今年当日数据//p.VehType == 0 表示合计数据,
                    List <DS_DataSource> pCollection = db.DS_DataSource.Where(p => p.CalcuTime == dt && p.VehType == 0 && p.HourPer == HourPer && BJStation.Contains(p.StaID.Value)).ToList();

                    bool pIsHas = false;
                    //北京段数据
                    RP_HourAADT        pHoursTraffic = null;
                    List <RP_HourAADT> pBJList       = db.RP_HourAADT.Where(p => p.CalcuTime == pDt && p.HourPer == (byte)HourPer).ToList();
                    if (pBJList.Count > 0)
                    {
                        pHoursTraffic = pBJList.FirstOrDefault();
                        //每种状态需要重新赋值,防止公用同一个变量,值不明确
                        pIsHas = true;
                    }
                    else
                    {
                        pHoursTraffic = new RP_HourAADT();
                        pIsHas        = false;
                    }
                    //更新实体
                    UpdateInfo(pCollection, pHoursTraffic, HourPer, pDt, pIsHas);

                    using (TransactionScope transaction = new TransactionScope())
                    {
                        //更新或添加
                        if (!pIsHas)
                        {
                            db.RP_HourAADT.Add(pHoursTraffic);
                        }
                        db.SaveChanges();
                        //提交事务
                        transaction.Complete();
                    }
                }
                string endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                SystemLog.GetInstance().Log.Info(string.Format("{0}:结束获取,13,14报表数据", endTime));
                SystemLog.GetInstance().Log.Info(string.Format("统计13,14报表数据耗时{0}秒", (DateTime.Parse(endTime) - DateTime.Parse(startTime)).TotalSeconds));
                //显示执行该方法的线程ID
                //SystemLog.GetInstance().Log.Info(string.Format("调用13,14Update的线程ID为:{0}", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(1000);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public static void sol3(string hardCodedConfigFilePath)
 {
     var xdoc = XElement.Load(hardCodedConfigFilePath);
     var config = xdoc.Descendants("Stations").Elements("add").FirstOrDefault();
     // Check that attributes exist ...
     var stationConfiguration = new StationConfiguration(config.Attribute("Comment").Value
                         , config.Attribute("FtpUsername").Value
                         , config.Attribute("FtpPassword").Value
                         , config.Attribute("DestinationFolderPath").Value);
 }
 public static void sol2(string hardCodedConfigFilePath)
 {
     string xmlDocumentText = File.ReadAllText(hardCodedConfigFilePath);
     var doc = new XmlDocument();
     doc.LoadXml(xmlDocumentText);
     var attr = doc.DocumentElement["StationsSection"].ChildNodes[0].ChildNodes[0].Attributes;
     // Check that attributes exist ... 
     var stationConfiguration = new StationConfiguration(attr["Comment"].Value
                                                         , attr["FtpUsername"].Value
                                                         , attr["FtpPassword"].Value
                                                         , attr["DestinationFolderPath"].Value);
 }
Exemplo n.º 6
0
 /// <summary>
 /// 初始化实体数据
 /// </summary>
 /// <param name="pBJCollection">数据源集合</param>
 /// <param name="pHDayStaInfo">RP_HDayAADTSta实体</param>
 /// <param name="enstations">进京收费站列表</param>
 /// <param name="exstations">出京收费站列表</param>
 /// <param name="equval">设计交通量</param>
 /// <param name="type">路线名称类型</param>
 /// <returns>RP_HDayAADTSta实体</returns>
 private void SetInfo(List <DS_DataSource> collection, RP_HDayAADTSta info, List <int> enstations, List <int> exstations, int equval, int type)
 {
     //货车车型集合
     int[] truks = StationConfiguration.GetTruks();
     //大货车以上车型
     int[] overtruks = StationConfiguration.GetOverTruks();
     //出京自然交通辆
     info.ExNat = collection.Where(s => exstations.Contains(s.StaID.Value)).Sum(s => s.InNum);
     //进京自然交通辆
     info.EnNat = collection.Where(s => enstations.Contains(s.StaID.Value)).Sum(s => s.OutNum);
     //出京当量交通辆
     info.ExEqu = this.GetEqu(collection, exstations, 0);
     //进京当量交通辆
     info.EnEqu   = this.GetEqu(collection, enstations, 1);
     info.CrowDeg = double.Parse(string.Format("{0:0.0000}", (info.ExEqu + info.EnEqu) / equval));//拥挤度
     //小型车出京
     info.SmaEx = collection.Where(s => exstations.Contains(s.StaID.Value) && (s.VehType == 1 || s.VehType == 11)).Sum(s => s.InNum);
     //小型车进京
     info.SmaEn = collection.Where(s => enstations.Contains(s.StaID.Value) && (s.VehType == 1 || s.VehType == 11)).Sum(s => s.OutNum);
     //中型车出京
     info.MedEx = collection.Where(s => exstations.Contains(s.StaID.Value) && (s.VehType == 2 || s.VehType == 12)).Sum(s => s.InNum);
     //中型车进京
     info.MedEn = collection.Where(s => enstations.Contains(s.StaID.Value) && (s.VehType == 2 || s.VehType == 12)).Sum(s => s.OutNum);
     //大型车出京
     info.LarEx = collection.Where(s => exstations.Contains(s.StaID.Value) && (s.VehType == 3 || s.VehType == 13)).Sum(s => s.InNum);
     //大型车进京
     info.LarEn = collection.Where(s => enstations.Contains(s.StaID.Value) && (s.VehType == 3 || s.VehType == 13)).Sum(s => s.OutNum);
     //重型车出京
     info.HeaEx = collection.Where(s => exstations.Contains(s.StaID.Value) && (s.VehType == 4 || s.VehType == 14)).Sum(s => s.InNum);
     //重型车进京
     info.HeaEn = collection.Where(s => enstations.Contains(s.StaID.Value) && (s.VehType == 4 || s.VehType == 14)).Sum(s => s.OutNum);
     //超大型车出京
     info.SupEx = collection.Where(s => exstations.Contains(s.StaID.Value) && s.VehType == 15).Sum(s => s.InNum);
     //超大型车进京
     info.SupEn = collection.Where(s => enstations.Contains(s.StaID.Value) && s.VehType == 15).Sum(s => s.OutNum);
     //进出京货车数量
     info.EnExTrukNum = collection.Where(s => enstations.Contains(s.StaID.Value) && truks.Contains(s.VehType.Value)).Sum(s => s.OutNum)
                        + collection.Where(s => exstations.Contains(s.StaID.Value) && truks.Contains(s.VehType.Value)).Sum(s => s.InNum);
     //客车货车比例
     //int ptemp = int.Parse(pHDayStaInfo.EnExTrukNum.ToString());
     info.CarTrukPer = double.Parse(string.Format("{0:0.0000}", (info.ExNat + info.EnNat - info.EnExTrukNum) / info.EnExTrukNum));
     //进出京大货车以上车型的数量
     info.SupTruNum = collection.Where(s => enstations.Contains(s.StaID.Value) && overtruks.Contains(s.VehType.Value)).Sum(s => s.OutNum)
                      + collection.Where(s => exstations.Contains(s.StaID.Value) && overtruks.Contains(s.VehType.Value)).Sum(s => s.InNum);
     //大货车以上占货车交通量比例
     info.SupTruPer = double.Parse(string.Format("{0:0.0000}", info.SupTruNum / info.EnExTrukNum));
     //路线名称类型
     info.LineType = type;
 }
        /// <summary>
        ///更新每日报送数据15.16.17
        /// </summary>
        public void Update(DateTime dt, int HourPer)
        {
            string startTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

            SystemLog.GetInstance().Log.Info(string.Format("{0}:开始获取15,16,17报表数据", startTime));
            using (DataSubmittedEntities db = new DataSubmittedEntities())
            {
                DateTime pdt = DateTime.Parse(dt.ToShortDateString());
                //北京段相同数据是否存在
                List <RP_NatSta> pBJlist = db.RP_NatSta.Where(p =>
                                                              p.CalcuTime == pdt &&
                                                              p.HourPer == (byte?)HourPer &&
                                                              p.StaType == (int)StationConfiguration.StationType.BeiJingDuan).ToList();
                bool BJHasTime = pBJlist.Count > 0;
                //大羊坊相同数据是否存在
                List <RP_NatSta> pDYFlist = db.RP_NatSta.Where(p =>
                                                               p.CalcuTime == pdt &&
                                                               p.HourPer == (byte?)HourPer &&
                                                               p.StaType == (int)StationConfiguration.StationID.DYF).ToList();
                bool DYFHasTime = pDYFlist.Count > 0;
                IList <RP_NatSta> pNaturalEntities = new List <RP_NatSta>();

                List <int> BJStation    = StationConfiguration.GetBJStaion();
                List <int> outBJStation = StationConfiguration.GetOutBJStaion();
                //p.VehType != 0 表示不包括合计数据,
                IEnumerable <DS_DataSource> pStagingCollection = db.DS_DataSource.Where(p =>
                                                                                        p.CalcuTime == dt &&
                                                                                        p.VehType != 0 &&
                                                                                        p.HourPer == HourPer &&
                                                                                        BJStation.Contains(p.StaID.Value));


                RP_NatSta pNaturalTrafficBJ = null; //北京段
                RP_NatSta pNaturalTraffic   = null; //大羊坊
                //北京段
                //如果相同日期,相同时间段,相同统计站类型数据已存在则进行更新
                if (!BJHasTime)
                {
                    pNaturalTrafficBJ    = new RP_NatSta();//北京段
                    pNaturalTrafficBJ.Id = Guid.NewGuid();
                }
                else
                {
                    pNaturalTrafficBJ = pBJlist[0];
                }
                pNaturalTrafficBJ.EnNum     = pStagingCollection.Sum(s => s.OutNum);
                pNaturalTrafficBJ.ExNum     = pStagingCollection.Where(s => outBJStation.Contains(s.StaID.Value)).Sum(s => s.InNum);
                pNaturalTrafficBJ.Sum       = pNaturalTrafficBJ.EnNum + pNaturalTrafficBJ.ExNum;
                pNaturalTrafficBJ.StaType   = (int)StationConfiguration.StationType.BeiJingDuan;
                pNaturalTrafficBJ.CalcuTime = DateTime.Parse(dt.ToShortDateString());
                pNaturalTrafficBJ.HourPer   = (byte)HourPer;
                pNaturalTrafficBJ.CrtDate   = DateTime.Now;
                pNaturalTrafficBJ.RunStae   = SystemConst.RunningStatus;
                pNaturalTrafficBJ.State     = "0";
                //大羊坊
                //如果相同日期,相同时间段,相同统计站类型数据已存在则进行更新
                if (!DYFHasTime)
                {
                    pNaturalTraffic    = new RP_NatSta();//大羊坊
                    pNaturalTraffic.Id = Guid.NewGuid();
                }
                else
                {
                    pNaturalTraffic = pDYFlist[0];
                }
                pNaturalTraffic.EnNum     = pStagingCollection.Where(s => s.StaID == (int)StationConfiguration.StationID.DYF).Sum(s => s.OutNum);
                pNaturalTraffic.ExNum     = pStagingCollection.Where(s => s.StaID == (int)StationConfiguration.StationID.DYF).Sum(s => s.InNum);
                pNaturalTraffic.Sum       = pNaturalTraffic.EnNum + pNaturalTraffic.ExNum;
                pNaturalTraffic.StaType   = (int)StationConfiguration.StationID.DYF;
                pNaturalTraffic.CrtDate   = DateTime.Now;
                pNaturalTraffic.HourPer   = (byte)HourPer;
                pNaturalTraffic.CalcuTime = DateTime.Parse(dt.ToShortDateString());
                pNaturalTraffic.RunStae   = SystemConst.RunningStatus;
                pNaturalTraffic.State     = "0";

                pNaturalEntities.Add(pNaturalTrafficBJ);
                pNaturalEntities.Add(pNaturalTraffic);
                using (TransactionScope transaction = new TransactionScope())
                {
                    //如果都不存在,则添加
                    if (!DYFHasTime && !BJHasTime)
                    {
                        db.RP_NatSta.AddRange(pNaturalEntities);
                    }
                    else if (!DYFHasTime && BJHasTime)
                    {
                        db.RP_NatSta.Add(pNaturalTraffic);
                    }
                    else if (DYFHasTime && !BJHasTime)
                    {
                        db.RP_NatSta.Add(pNaturalTrafficBJ);
                    }

                    db.SaveChanges();
                    //提交事务
                    transaction.Complete();
                }
                string endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                SystemLog.GetInstance().Log.Info(string.Format("{0}:结束获取15.16.17报表数据", endTime));
                SystemLog.GetInstance().Log.Info(string.Format("统计15,16,17报表数据耗时{0}秒", (DateTime.Parse(endTime) - DateTime.Parse(startTime)).TotalSeconds));
                //显示执行该方法的线程ID
                //SystemLog.GetInstance().Log.Info(string.Format("调用15,16,17Update的线程ID为:{0}", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(1000);
            }
        }
        /// <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;
            }
        }
Exemplo n.º 9
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;
            }
        }
        /// <summary>
        /// 更新或获取报表5,6数据
        /// </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}:开始获取5,6报表数据", startTime));
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    DateTime pDt = DateTime.Parse(dt.ToShortDateString());
                    //北京段包含出入口收费站
                    List <int> BJStation = StationConfiguration.GetBJStaion();

                    //获取数据//p.VehType == 0 表示合计数据,
                    IEnumerable <DS_DataSource> pCollection = db.DS_DataSource.Where(p =>
                                                                                     DbFunctions.TruncateTime(p.CalcuTime) == DbFunctions.TruncateTime(dt) &&
                                                                                     p.VehType == 0);
                    //判断北京段数据是否已存在,StaType:1表示北京段,33表示泗村店
                    RP_EnEx pBJEnExInfo  = null;
                    RP_EnEx pSCDEnExInfo = null;
                    bool    pIsHas       = false;
                    //北京段数据
                    List <RP_EnEx> pBJList = db.RP_EnEx.Where(p => p.CalcuTime == pDt && p.StaType == (int)StationConfiguration.StationType.BeiJingDuan).ToList();
                    if (pBJList.Count > 0)
                    {
                        pBJEnExInfo = pBJList.FirstOrDefault();
                        //每种状态需要重新赋值,防止公用同一个变量,值不明确
                        pIsHas = true;
                    }
                    else
                    {
                        pBJEnExInfo = new RP_EnEx();
                        pIsHas      = false;
                    }
                    //更新北京段实体信息
                    UpdateInfo(pCollection.Where(s => BJStation.Contains(s.StaID.Value)), pBJEnExInfo, (int)StationConfiguration.StationType.BeiJingDuan, pDt, pIsHas);

                    //泗村店数据
                    List <RP_EnEx> pSCDList = db.RP_EnEx.Where(p => p.CalcuTime == pDt && p.StaType == (int)StationConfiguration.StationID.SCD).ToList();
                    if (pSCDList.Count > 0)
                    {
                        pSCDEnExInfo = pSCDList.FirstOrDefault();
                        pIsHas       = true;
                    }
                    else
                    {
                        pSCDEnExInfo = new RP_EnEx();
                        pIsHas       = false;
                    }
                    //更新泗村店实体信息
                    UpdateInfo(pCollection.Where(s => s.StaID.Value == (int)StationConfiguration.StationID.SCD), pSCDEnExInfo, (int)StationConfiguration.StationID.SCD, pDt, pIsHas);

                    //更新或添加到数据库
                    using (TransactionScope trans = new TransactionScope())
                    {
                        //如果不存在,则添加,否则则更新
                        if (pBJList.Count <= 0)
                        {
                            db.RP_EnEx.Add(pBJEnExInfo);
                        }
                        if (pSCDList.Count <= 0)
                        {
                            db.RP_EnEx.Add(pSCDEnExInfo);
                        }
                        db.SaveChanges();
                        trans.Complete();
                    }
                }
                string endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                SystemLog.GetInstance().Log.Info(string.Format("{0}:结束获取5,6报表数据", endTime));
                SystemLog.GetInstance().Log.Info(string.Format("统计5,6报表数据耗时{0}秒", (DateTime.Parse(endTime) - DateTime.Parse(startTime)).TotalSeconds));
                //显示执行该方法的线程ID
                //SystemLog.GetInstance().Log.Info(string.Format("调用5,6Update的线程ID为:{0}", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(1000);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// 获取或更新报表11,12源数据
        /// </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}:开始获取11,12报表数据", startTime));
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //获取报表12配置的假期信息
                    List <OT_HDayConfig> pdayconfigs = db.OT_HDayConfig.Where(s => s.Id == 12).ToList();
                    OT_HDayConfig        pdayconfig  = new OT_HDayConfig();
                    if (pdayconfigs.Count > 0)
                    {
                        pdayconfig = pdayconfigs.First();
                    }
                    DateTime pDt = DateTime.Parse(dt.ToShortDateString());
                    //报表11,12收费站
                    List <int> TJStation = StationConfiguration.GetStaionList();
                    //获取今年当日数据//p.VehType == 0 表示合计数据,
                    IEnumerable <DS_DataSource> pCollection = db.DS_DataSource.Where(p =>
                                                                                     DbFunctions.TruncateTime(p.CalcuTime) == DbFunctions.TruncateTime(dt) &&
                                                                                     p.VehType == 0 && TJStation.Contains(p.StaID.Value));

                    //今年数据
                    IEnumerable <DS_DataSource> pHdayCollection = db.DS_DataSource.Where(p =>
                                                                                         (DbFunctions.TruncateTime(p.CalcuTime) <= pdayconfig.HDayEnd.Value &&
                                                                                          DbFunctions.TruncateTime(p.CalcuTime) >= pdayconfig.HDayStart.Value) &&
                                                                                         p.VehType == 0 && TJStation.Contains(p.StaID.Value));

                    //每日数据
                    List <RP_HDayAADT> pList     = db.RP_HDayAADT.Where(p => p.CalcuTime == pDt).ToList();
                    RP_HDayAADT        pAADTInfo = null;
                    bool pIsHas = false;
                    if (pList.Count > 0)
                    {
                        pAADTInfo = pList.FirstOrDefault();
                        pIsHas    = true;
                    }
                    else
                    {
                        pAADTInfo = new RP_HDayAADT();
                    }
                    //更新实体
                    UpdateInfo(pCollection, pAADTInfo, pDt, pIsHas, pHdayCollection);
                    using (TransactionScope transaction = new TransactionScope())
                    {
                        //如果不存在,则添加,否则则更新
                        if (!pIsHas)
                        {
                            db.RP_HDayAADT.Add(pAADTInfo);
                        }
                        db.SaveChanges();
                        transaction.Complete();
                    }
                }
                string endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                SystemLog.GetInstance().Log.Info(string.Format("{0}:结束获取11,12报表数据", endTime));
                SystemLog.GetInstance().Log.Info(string.Format("统计11,12报表数据耗时{0}秒", (DateTime.Parse(endTime) - DateTime.Parse(startTime)).TotalSeconds));
                //显示执行该方法的线程ID
                //SystemLog.GetInstance().Log.Info(string.Format("调用11,12Update的线程ID为:{0}", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(1000);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// 8.9.10数据源更新方法
        /// </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}:开始获取8,9,10报表数据", startTime));
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    DateTime             plasttime   = new DateTime();
                    List <OT_HDayConfig> pdayconfigs = db.OT_HDayConfig.Where(s => s.Id == 9).ToList();
                    OT_HDayConfig        pdayconfig  = new OT_HDayConfig();
                    if (pdayconfigs.Count > 0)
                    {
                        pdayconfig = pdayconfigs.First();
                        if (pdayconfig.HDayStart.HasValue && pdayconfig.HDayEnd.HasValue)
                        {
                            int ptemp = 0;
                            //判断当天是否在假期配置时间范围内
                            DateTime ptempdt = DateTime.Parse(dt.ToShortDateString());
                            if (ptempdt >= pdayconfig.HDayStart.Value && ptempdt <= pdayconfig.HDayEnd)
                            {
                                //间隔的天数
                                ptemp = (ptempdt - pdayconfig.HDayStart.Value).Days;
                            }
                            if (pdayconfig.CompStart.HasValue)
                            {
                                plasttime = pdayconfig.CompStart.Value.AddDays(ptemp);
                            }
                        }
                    }

                    List <RP_AADTSta> pOlds = db.RP_AADTSta.Where(s => s.CalculTime == plasttime).ToList();
                    //判断去年同期是否存在
                    RP_AADTSta oldinfo = new RP_AADTSta();
                    if (pOlds.Count > 0)
                    {
                        oldinfo = pOlds.First();
                    }
                    DateTime pdt = DateTime.Parse(dt.ToShortDateString());
                    //北京段包含出入口收费站
                    List <int> BJStation = StationConfiguration.GetBJStaion();
                    //北京段只包含出口收费站
                    List <int> outBJStation = StationConfiguration.GetOutBJStaion();
                    //获取北京段数据//p.VehType == 0 表示合计数据,
                    IEnumerable <DS_DataSource> pBJCollection = db.DS_DataSource.Where(p =>
                                                                                       DbFunctions.TruncateTime(p.CalcuTime) == DbFunctions.TruncateTime(dt) &&
                                                                                       p.VehType == 0 &&
                                                                                       BJStation.Contains(p.StaID.Value));
                    //判断数据是否已存在
                    RP_AADTSta        pAADTStaInfo = null;
                    List <RP_AADTSta> pList        = db.RP_AADTSta.Where(p => p.CalculTime == pdt).ToList();
                    if (pList.Count > 0)//已存在,则更新
                    {
                        pAADTStaInfo         = pList.FirstOrDefault();
                        pAADTStaInfo.UpdDate = DateTime.Now;
                        pAADTStaInfo.State   = "1";
                    }
                    else//不存在,添加
                    {
                        pAADTStaInfo         = new RP_AADTSta();
                        pAADTStaInfo.Id      = Guid.NewGuid();
                        pAADTStaInfo.CrtDate = DateTime.Now;
                        pAADTStaInfo.State   = "0";
                    }
                    //涉及到金额的单位全部转为万元,保留两位小数
                    //出京路线总交通量,不包括绿通
                    pAADTStaInfo.LineExSum = pBJCollection.Where(s => outBJStation.Contains(s.StaID.Value) && s.CalcuType != 3).Sum(s => s.InNum);
                    //入京路线总交通量,不包括绿通
                    pAADTStaInfo.LineEnSum = pBJCollection.Where(s => BJStation.Contains(s.StaID.Value) && s.CalcuType != 3).Sum(s => s.OutNum);
                    pAADTStaInfo.LineSum   = pAADTStaInfo.LineEnSum + pAADTStaInfo.LineExSum;
                    //总交通量同比增幅
                    if (oldinfo.LineSum.HasValue)
                    {
                        pAADTStaInfo.SumGrow = double.Parse(string.Format("{0:0.00}", (pAADTStaInfo.LineSum - oldinfo.LineSum) / oldinfo.LineSum));
                    }
                    //出进京比
                    pAADTStaInfo.ExEnPer = double.Parse(string.Format("{0:0.00}", (pAADTStaInfo.LineExSum / pAADTStaInfo.LineEnSum)));
                    //收费/免征总金额
                    pAADTStaInfo.FeeSum = Math.Round(pBJCollection.Sum(s => s.RecMoney.Value) / 10000, 2);
                    //出京小型客车免费通行交通量
                    pAADTStaInfo.ExSmaCarFee = pBJCollection.Where(s => s.CalcuType == 0 && outBJStation.Contains(s.StaID.Value)).Sum(s => s.InNum);
                    //进京小型客车免费通行交通量
                    pAADTStaInfo.EnSmaCarFee = pBJCollection.Where(s => s.CalcuType == 0).Sum(s => s.OutNum);
                    //小型客车免费通行交通量(合计)
                    pAADTStaInfo.SmaCarFeeNum = pAADTStaInfo.ExSmaCarFee + pAADTStaInfo.EnSmaCarFee;
                    //小型客车交通量同比增幅
                    if (oldinfo.SmaCarFeeNum.HasValue)
                    {
                        pAADTStaInfo.SmaCarCompGrow = double.Parse(string.Format("{0:0.00}", (pAADTStaInfo.SmaCarFeeNum - oldinfo.SmaCarFeeNum) / oldinfo.SmaCarFeeNum));
                    }//小型客车免费金额
                    pAADTStaInfo.SmaCarFee = Math.Round(pBJCollection.Where(s => s.CalcuType.Value == 0).Sum(s => s.RecMoney.Value) / 10000, 2);
                    //出京收费车辆
                    pAADTStaInfo.ExChagNum = pBJCollection.Where(s => outBJStation.Contains(s.StaID.Value) && (s.CalcuType == 1 || s.CalcuType == 2)).Sum(s => s.InNum);
                    //进京收费车辆
                    pAADTStaInfo.EnChagNum = pBJCollection.Where(s => s.CalcuType == 1 || s.CalcuType == 2).Sum(s => s.OutNum);
                    //收费车辆合计
                    pAADTStaInfo.ChagSumNum = pAADTStaInfo.ExChagNum + pAADTStaInfo.EnChagNum;
                    //收费额度
                    pAADTStaInfo.ChagAmount = Math.Round(pBJCollection.Where(s => s.CalcuType == 1 || s.CalcuType == 2).Sum(s => s.RecMoney.Value) / 10000, 2);
                    //绿色通道车辆数
                    pAADTStaInfo.GreNum = pBJCollection.Where(s => s.CalcuType == 3).Sum(s => s.OutNum);
                    //绿色通道免收费金额
                    pAADTStaInfo.GreFee = Math.Round(pBJCollection.Where(s => s.CalcuType == 3).Sum(s => s.RecMoney.Value) / 10000, 2);
                    //出京总交通量(站)
                    pAADTStaInfo.StaExSum = pBJCollection.Where(s => s.StaID == (int)StationConfiguration.StationID.DYF).Sum(s => s.InNum);
                    //进京总交通量(站)
                    pAADTStaInfo.StaEnSum   = pBJCollection.Where(s => s.StaID == (int)StationConfiguration.StationID.DYF).Sum(s => s.OutNum);
                    pAADTStaInfo.CalculTime = pdt;

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