コード例 #1
0
        /// <summary>
        /// 获取同期流量
        /// </summary>
        /// <param name="dt">数据日期</param>
        /// <returns></returns>
        public double?GetSameSum(DateTime dt)
        {
            double?pSameSum = null;

            using (DataSubmittedEntities db = new DataSubmittedEntities())
            {
                DateTime plasttime = new DateTime();
                //获取报表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();
                    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_HDayAADT> pOlds = db.RP_HDayAADT.Where(s => s.CalcuTime <= plasttime && s.CalcuTime >= pdayconfig.CompStart.Value).ToList();
                pSameSum = pOlds.Sum(s => s.Sum.Value);
            }
            return(pSameSum);
        }
コード例 #2
0
        /// <summary>
        /// 添加报表备注
        /// </summary>
        /// <param name="sheet">工作表</param>
        /// <param name="rownum">行数</param>
        /// <param name="cellnum">列数</param>
        /// <param name="value">值</param>
        protected void SetReportRemark(ISheet sheet, int rownum, int cellnum, int reporttype)
        {
            OT_HDayConfig holiday = HolidayConfig.GetInstance().GetById(reporttype);

            if (holiday != null)
            {
                SetValue(sheet, rownum, cellnum, holiday.RptRemark);
            }
        }
コード例 #3
0
        /// <summary>
        /// 修改配置信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public CustomResult UpdateConfig(HolidayConfigViewModel model)
        {
            OT_HDayConfig modelHC = new OT_HDayConfig();

            modelHC.CheckFloat = model.CheckFloat;
            modelHC.CompEnd    = model.ComparedEndTime;
            modelHC.CompStart  = model.ComparedStartTime;
            modelHC.ConfigName = model.ConfigName;
            modelHC.ForeDate   = model.ForecastDate;
            modelHC.ForeFloat  = model.ForecastFloat;
            modelHC.Id         = model.HolidayConfigId;
            modelHC.HDayEnd    = model.HolidayEndTime;
            modelHC.HDayId     = model.HolidayId;
            modelHC.HDayStart  = model.HolidayStartTime;
            modelHC.RptRemark  = model.ReportRemark;

            return(holidayConfig.Update(modelHC));
        }
コード例 #4
0
        /// <summary>
        /// 根据报表配置ID读取(假期和非假期表都存在HolidayConfig表)
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public OT_HDayConfig GetById(int id)
        {
            OT_HDayConfig pHolidayConfig = null;

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    List <OT_HDayConfig> list = db.OT_HDayConfig.Where(s => s.Id == id).ToList();
                    if (list.Count > 0)
                    {
                        pHolidayConfig = list[0];
                    }
                }
            }
            catch (Exception ex)
            {
                SystemLog.GetInstance().Error(ex);
                pHolidayConfig = null;
            }
            return(pHolidayConfig);
        }
コード例 #5
0
 /// <summary>
 /// 报表17备注
 /// </summary>
 /// <param name="sheet"></param>
 /// <param name="reporttype"></param>
 private void SetRemark(ISheet sheet, int reporttype)
 {
     try
     {
         //17备注备注规则,二者用分号分隔,符合全为英文下的,如果不包含两个人的信息则不加分号示例:负责人:张三 联系电话:022-6583411 手机:18888888888;填表人:张四 联系电话:022-6583411 手机:18888888888
         OT_HDayConfig holiday = HolidayConfig.GetInstance().GetById(reporttype);
         if (holiday != null)
         {
             string[] remark   = new string[] { };
             string   officer  = string.Empty;
             string   preparer = string.Empty;
             //包含两个人的信息
             if (holiday.RptRemark.IndexOf(';') != -1)
             {
                 remark = holiday.RptRemark.Split(';');
                 if (remark[0].Substring(0, 3).ToString() == "负责人")
                 {
                     officer  = remark[0];
                     preparer = remark[1];
                 }
                 else
                 {
                     preparer = remark[0];
                     officer  = remark[1];
                 }
             }
             else
             {
                 if (holiday.RptRemark.Split(' ')[0].Substring(0, 3).ToString() == "负责人")
                 {
                     officer = holiday.RptRemark;
                 }
                 else
                 {
                     preparer = holiday.RptRemark;
                 }
             }
             if (!string.IsNullOrEmpty(officer))
             {
                 string[] pTempOfficer = officer.Split(' ');
                 for (int i = 0; i < pTempOfficer.Count(); i++)
                 {
                     if (pTempOfficer[i].Substring(0, 3) == "负责人")
                     {
                         //负责人
                         SetValue(sheet, 6, 2, pTempOfficer[i]);
                     }
                     else if (pTempOfficer[i].Substring(0, 4) == "联系电话")
                     {
                         //负责人联系电话
                         SetValue(sheet, 6, 4, pTempOfficer[i].Substring(5));
                     }
                     else if (pTempOfficer[i].Substring(0, 2) == "手机")
                     {
                         //负责人手机
                         SetValue(sheet, 6, 6, pTempOfficer[i].Substring(3));
                     }
                 }
             }
             if (!string.IsNullOrEmpty(preparer))
             {
                 string[] pTempPreparer = preparer.Split(' ');
                 for (int i = 0; i < pTempPreparer.Count(); i++)
                 {
                     //if (pTempPreparer[i].Substring(0, 3) == "填表人")
                     //{
                     //    //填表人
                     //    SetValue(sheet, 7, 2, pTempPreparer[i]);
                     //}
                     //else
                     if (pTempPreparer[i].Substring(0, 4) == "联系电话")
                     {
                         //填表人联系电话
                         SetValue(sheet, 7, 4, pTempPreparer[i].Substring(5));
                     }
                     else if (pTempPreparer[i].Substring(0, 2) == "手机")
                     {
                         //填表人手机
                         SetValue(sheet, 7, 6, pTempPreparer[i].Substring(3));
                     }
                 }
             }
             if (SessionManage.GetLoginUser() != null)
             {
                 //填表人
                 SetValue(sheet, 7, 2, "填表人:" + SessionManage.GetLoginUser().UserName);
             }
         }
     }
     catch (Exception ex)
     {
         SystemLog.GetInstance().Info(ex.Message);
     }
 }
コード例 #6
0
        /// <summary>
        /// 校正
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public Common.CustomResult CalibrationData(Common.QueryParameters para)
        {
            CustomResult pReturnValue = new CustomResult();
            double       pFloating    = 1 + para.FloatingRange * 0.01;

            using (DataSubmittedEntities db = new DataSubmittedEntities())
            {
                //判断报表浮动百分比配置是否正确
                OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                if (pds == null)
                {
                    pReturnValue.ResultKey   = (byte)EResult.Fail;
                    pReturnValue.ResultValue = TipInfo.CalibrationFaileNoConfig;
                    return(pReturnValue);
                }
                if (Math.Abs(para.FloatingRange) > (double)pds.CheckFloat.Value)
                {
                    pReturnValue.ResultKey   = (byte)EResult.Fail;
                    pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.CheckFloat.Value + "%-正" + pds.CheckFloat.Value + "%之间";
                    return(pReturnValue);
                }
                //判断校正数据日期是否合理
                if (para.LastYearStart < para.StartTime && para.StartTime < DateTime.Now.AddDays(1))
                {
                    //获取参考日期符合校正时间段的数据,因为只校正一天的数据,所以只查询开始数据的日期就可以
                    List <RP_EnEx> pRefNaturalList = db.RP_EnEx.Where(s => s.CalcuTime == para.LastYearStart && s.StaType == para.StationType).ToList();
                    //如果参考日期数据为0 则返回失败
                    if (pRefNaturalList == null || pRefNaturalList.Count == 0)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileRefNoData;
                        return(pReturnValue);
                    }
                    //需要校正的数据
                    var pCheckNaturalList = db.RP_EnEx.Where(s => s.CalcuTime == para.StartTime && s.StaType == para.StationType).ToList();
                    //如果需要校正的数据为空则返回失败
                    if (pCheckNaturalList == null || pCheckNaturalList.Count == 0)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileNoData;
                        return(pReturnValue);
                    }
                    using (TransactionScope tran = new TransactionScope())
                    {
                        //校正数据
                        RP_EnEx pCheckInfo = pCheckNaturalList.First();
                        //参考数据
                        RP_EnEx pRefInfo = pRefNaturalList.First();

                        if (pRefInfo.EnOthCar != null)
                        {
                            pCheckInfo.EnOthCar = Math.Round(pRefInfo.EnOthCar.Value * pFloating);
                        }
                        if (pCheckInfo.EnSmaCar != null)
                        {
                            pCheckInfo.EnSmaCar = Math.Round(pRefInfo.EnSmaCar.Value * pFloating);
                        }
                        if (pCheckInfo.EnTruk != null)
                        {
                            pCheckInfo.EnTruk = Math.Round(pRefInfo.EnTruk.Value * pFloating);
                        }

                        if (SessionManage.GetLoginUser() != null)
                        {
                            pCheckInfo.UpdBy = SessionManage.GetLoginUser().UserName;
                        }
                        pCheckInfo.UpdDate = DateTime.Now;
                        pCheckInfo.State   = "1";
                        try
                        {
                            db.SaveChanges();
                            tran.Complete();
                            pReturnValue.ResultKey   = (byte)EResult.Succeed;
                            pReturnValue.ResultValue = TipInfo.CalibrationSuccess;
                        }
                        catch (Exception e)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaile + e.Message.ToString();
                            SystemLog.GetInstance().Error(TipInfo.CalibrationFaile, e);
                            return(pReturnValue);
                        }
                    }
                }
                else
                {
                    pReturnValue.ResultKey   = (byte)EResult.Fail;
                    pReturnValue.ResultValue = TipInfo.CalibrationFaileDate;
                }
            }
            return(pReturnValue);
        }
コード例 #7
0
        /// <summary>
        /// 15,16,17根据查询条件获取数据
        /// </summary>
        /// <param name="para">查询条件类</param>
        /// <returns></returns>
        public IReportViewModel GetListByPra(QueryParameters para)
        {
            QueryNaturalInfoViewModel pReturn = new QueryNaturalInfoViewModel();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //添加合计
                    new TrafficStatisticalSum().CreateOrUpdateSum(para, (int)para.StationType);
                    //某类报表所涉及的收费站名称
                    string[] pStationNames = null;

                    if (para.ReportType == 17)
                    {
                        //报表17所包含的站名称
                        pStationNames = db.OT_Station.Where(s => s.Num == para.StationType.Value.ToString()).Select(s => s.Name).ToArray();

                        pReturn.ReportData = db.RP_NatSta.Where(s => s.CalcuTime == para.StartTime && s.StaType == para.StationType && s.HourPer == 24).ToList().Select(s => new NaturalInfoViewModel
                        {
                            HourPer       = 0,
                            DayTraffic    = double.Parse(string.Format("{0:0.0000}", s.Sum * 0.0001)),
                            InDayTraffic  = double.Parse(string.Format("{0:0.0000}", s.EnNum * 0.0001)),
                            OutDayTraffic = double.Parse(string.Format("{0:0.0000}", s.ExNum * 0.0001)),
                            RunningStatus = s.RunStae,
                            Remark        = s.Rek
                        }).ToList();
                        if (pReturn.ReportData.Count == 0)
                        {
                            pReturn.ReportData.Add(new NaturalInfoViewModel
                            {
                                HourPer       = 0,
                                RoadName      = SystemConst.RoadName,
                                DayTraffic    = null,
                                InDayTraffic  = null,
                                OutDayTraffic = null,
                                RunningStatus = SystemConst.RunningStatus,
                                Remark        = ""
                            });
                            pReturn.ReportData.Add(new NaturalInfoViewModel
                            {
                                HourPer       = 24,
                                RoadName      = SystemConst.RoadName,
                                DayTraffic    = null,
                                InDayTraffic  = null,
                                OutDayTraffic = null,
                                RunningStatus = "",
                                Remark        = ""
                            });
                        }
                        else
                        {
                            pReturn.ReportData.Add(new NaturalInfoViewModel
                            {
                                HourPer       = 24,
                                RoadName      = SystemConst.RoadName,
                                DayTraffic    = double.Parse(string.Format("{0:0.0000}", pReturn.ReportData[0].DayTraffic)),
                                InDayTraffic  = double.Parse(string.Format("{0:0.0000}", pReturn.ReportData[0].InDayTraffic)),
                                OutDayTraffic = double.Parse(string.Format("{0:0.0000}", pReturn.ReportData[0].OutDayTraffic)),
                                RunningStatus = pReturn.ReportData[0].RunningStatus,
                                Remark        = pReturn.ReportData[0].Remark
                            });
                        }
                    }
                    else
                    {
                        //报表15,16所包含的站名称
                        pStationNames = db.OT_Station.Where(s => s.District == para.StationType.Value).Select(s => s.Name).ToArray();
                        //获取查询日期当天所有已上传的数据,包括合计
                        pReturn.ReportData = db.RP_NatSta.Where(s => s.CalcuTime == para.StartTime && s.StaType == para.StationType).Select(s => new NaturalInfoViewModel
                        {
                            HourPer       = (byte)s.HourPer,
                            DayTraffic    = (double)s.Sum,
                            InDayTraffic  = (double)s.EnNum,
                            OutDayTraffic = (double)s.ExNum,
                            RunningStatus = s.RunStae,
                            Remark        = s.Rek
                        }).ToList();

                        //补充数据
                        IEnumerable <NaturalInfoViewModel> pNa = pReturn.ReportData.Where(s => s.HourPer != 24);
                        int pMaxTimeHour = -1; //补充在此之后的数据
                        int pMinTimeHour = -1; //补充在此之前的数据
                        if (pNa.Count() > 0)
                        {
                            pMinTimeHour = (int)pNa.Min(s => s.HourPer);
                            pMaxTimeHour = (int)pNa.Max(s => s.HourPer);
                        }
                        else
                        {
                            pReturn.ReportData.Add(new NaturalInfoViewModel
                            {
                                HourPer       = 24,
                                DayTraffic    = null,
                                InDayTraffic  = null,
                                OutDayTraffic = null,
                                RunningStatus = SystemConst.RunningStatus,
                                Remark        = ""
                            });
                        }
                        if (pMinTimeHour != -1 && pMinTimeHour != 0)
                        {
                            for (int i = 0; i < pMinTimeHour; i++)
                            {
                                InsertNull(para.StartTime.Value, (byte)i, para.StationType.Value);
                                pReturn.ReportData.Add(new NaturalInfoViewModel
                                {
                                    HourPer       = (byte)i,
                                    DayTraffic    = 0,
                                    InDayTraffic  = 0,
                                    OutDayTraffic = 0,
                                    RunningStatus = SystemConst.RunningStatus,
                                    Remark        = ""
                                });
                            }
                        }
                        //查看统计的最小时间和最大时间直接,数据是否统计上来
                        for (int i = pMinTimeHour + 1; i < pMaxTimeHour; i++)
                        {
                            if (db.RP_NatSta.Where(s => s.CalcuTime == para.StartTime && s.StaType == para.StationType && s.HourPer == (byte)i).Count() <= 0)
                            {
                                InsertNull(para.StartTime.Value, (byte)i, para.StationType.Value);
                                pReturn.ReportData.Add(new NaturalInfoViewModel
                                {
                                    HourPer       = (byte)i,
                                    DayTraffic    = 0,
                                    InDayTraffic  = 0,
                                    OutDayTraffic = 0,
                                    RunningStatus = SystemConst.RunningStatus,
                                    Remark        = ""
                                });
                            }
                        }
                        if (pMaxTimeHour < 23)
                        {
                            int pTemp = DateTime.Now.Hour;
                            for (int i = (int)pMaxTimeHour + 1; i < 24; i++)
                            {
                                //如果查询日期小于服务器时间,并且无数据上来,则认为是系统异常没有统计到数据,则将数据补充到数据库。
                                if (para.StartTime < DateTime.Now.Date)
                                {
                                    InsertNull(para.StartTime.Value, (byte)i, para.StationType.Value);
                                    pReturn.ReportData.Add(new NaturalInfoViewModel
                                    {
                                        HourPer       = (byte)i,
                                        DayTraffic    = 0,
                                        InDayTraffic  = 0,
                                        OutDayTraffic = 0,
                                        RunningStatus = SystemConst.RunningStatus,
                                        Remark        = ""
                                    });
                                }
                            }
                            if (para.StartTime == DateTime.Now.Date)
                            {
                                for (int n = 0; n < pTemp; n++)
                                {
                                    if (db.RP_NatSta.Where(s => s.CalcuTime == para.StartTime && s.StaType == para.StationType && s.HourPer == (byte)n).Count() <= 0)
                                    {
                                        InsertNull(para.StartTime.Value, (byte)n, para.StationType.Value);
                                        pReturn.ReportData.Add(new NaturalInfoViewModel
                                        {
                                            HourPer       = (byte)n,
                                            DayTraffic    = 0,
                                            InDayTraffic  = 0,
                                            OutDayTraffic = 0,
                                            RunningStatus = SystemConst.RunningStatus,
                                            Remark        = ""
                                        });
                                    }
                                }
                                for (int m = pTemp; m < 24; m++)
                                {
                                    pReturn.ReportData.Add(new NaturalInfoViewModel
                                    {
                                        HourPer       = (byte)m,
                                        DayTraffic    = null,
                                        InDayTraffic  = null,
                                        OutDayTraffic = null,
                                        RunningStatus = SystemConst.RunningStatus,
                                        Remark        = ""
                                    });
                                }
                            }
                        }

                        //按序号排序
                        pReturn.ReportData = pReturn.ReportData.OrderBy(s => s.HourPer).ToList();

                        //获取当前统计类型不包含的收费站列表
                        IEnumerable <OT_ErrorStation> pNoaccept = db.OT_ErrorStation.Where(i =>
                                                                                           pStationNames.Contains(i.StaName)).ToList().Where(s => s.CalcuTime == para.StartTime);

                        if (pNoaccept.Count() > 0)
                        {
                            pReturn.IsFull = 0;//不完整
                        }
                        else
                        {
                            pReturn.IsFull = 1;//完整
                        }
                    }
                    //获取报表备注
                    OT_HDayConfig holiday = HolidayConfig.GetInstance().GetById(para.ReportType);
                    if (holiday != null)
                    {
                        if (holiday.RptRemark != null)
                        {
                            pReturn.ReportRemark = holiday.RptRemark;
                        }
                        else
                        {
                            pReturn.ReportRemark = "";
                        }
                    }
                    else
                    {
                        pReturn.ReportRemark = "";
                    }
                }
            }
            catch (Exception e)
            {
                SystemLog.GetInstance().Info(e);
            }
            return(pReturn);
        }
コード例 #8
0
        /// <summary>
        /// 校正数据
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public CustomResult CalibrationData(QueryParameters para)
        {
            CustomResult pReturnValue = new CustomResult();
            QueryNaturalInfoViewModel queryNatural = new QueryNaturalInfoViewModel();

            //判断选择校正时间段的有效性
            string[] calibrationDataHour = new string[24];
            if (para.StartHour <= para.EndHour)
            {
                for (int i = para.StartHour; i <= para.EndHour; i++)
                {
                    calibrationDataHour[i] = i.ToString();
                }
            }
            else
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.CalibrationFaileHour;
                return(pReturnValue);
            }
            double           pFloating       = para.FloatingRange * 0.01;
            List <RP_NatSta> pNaturalTraList = new List <RP_NatSta>();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //判断报表浮动百分比配置是否正确
                    OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                    if (pds == null)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileNoConfig;
                        return(pReturnValue);
                    }
                    if (Math.Abs(para.FloatingRange) > (double)pds.CheckFloat.Value)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.CheckFloat.Value + "%-正" + pds.CheckFloat.Value + "%之间";
                        return(pReturnValue);
                    }
                    //获取参考日期符合校正时间段的数据,因为只校正一天的数据,所以只查询开始数据的日期就可以
                    List <NaturalInfoViewModel> pRefNaturalList = db.RP_NatSta.Where(s => s.CalcuTime == para.LastYearStart && s.StaType == para.StationType && calibrationDataHour.Contains(s.HourPer.Value.ToString())).ToList().Select(s => new NaturalInfoViewModel
                    {
                        HourPer       = (byte)s.HourPer,
                        DayTraffic    = (double)s.Sum,
                        InDayTraffic  = (double)s.EnNum,
                        OutDayTraffic = (double)s.ExNum,
                        RunningStatus = s.RunStae,
                        Remark        = s.Rek
                    }).ToList();
                    //如果参考日期数据为0 则返回失败
                    if (pRefNaturalList.Count == 0)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileRefNoData;
                        return(pReturnValue);
                    }
                    //判断校正数据日期是否合理
                    if (para.LastYearStart < para.StartTime && para.StartTime < DateTime.Now.AddDays(1))
                    {
                        //需要校正的数据
                        var pCheckNaturalList = db.RP_NatSta.Where(s => s.CalcuTime == para.StartTime && s.StaType == para.StationType && calibrationDataHour.Contains(s.HourPer.Value.ToString())).ToList();
                        if (pCheckNaturalList.Count == 0)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaileNoData;
                            return(pReturnValue);
                        }
                        using (TransactionScope tran = new TransactionScope())
                        {
                            foreach (var item in pCheckNaturalList)
                            {
                                IEnumerable <NaturalInfoViewModel> plist = pRefNaturalList.Where(i => i.HourPer == item.HourPer);
                                if (plist.Count() > 0)
                                {
                                    NaturalInfoViewModel pTemp = plist.First();
                                    item.EnNum     = (int)(pTemp.InDayTraffic + pTemp.InDayTraffic * pFloating);
                                    item.ExNum     = (int)(pTemp.OutDayTraffic + pTemp.OutDayTraffic * pFloating);
                                    item.Sum       = item.EnNum + item.ExNum;
                                    item.RunStae   = pTemp.RunningStatus;
                                    item.CalcuTime = para.StartTime.Value;
                                    item.StaType   = para.StationType;
                                    if (SessionManage.GetLoginUser() != null)
                                    {
                                        item.UpdBy = SessionManage.GetLoginUser().UserName;
                                    }
                                    item.UpdDate = DateTime.Now;
                                    item.State   = "1";
                                }
                            }
                            db.SaveChanges();
                            tran.Complete();
                            pReturnValue.ResultKey   = (byte)EResult.Succeed;
                            pReturnValue.ResultValue = TipInfo.CalibrationSuccess;
                        }
                    }
                    else
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileDate;
                    }
                }
                return(pReturnValue);
            }
            catch (Exception e)
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.CalibrationFaile + e.Message.ToString();
                SystemLog.GetInstance().Error(TipInfo.CalibrationFaile, e);
                return(pReturnValue);
            }
        }
コード例 #9
0
        /// <summary>
        /// 校正
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public CustomResult CalibrationData(QueryParameters para)
        {
            CustomResult      pReturnValue    = new CustomResult();
            double            pFloating       = 1 + para.FloatingRange * 0.01;
            List <RP_AADTSta> pNaturalTraList = new List <RP_AADTSta>();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //判断报表浮动百分比配置是否正确
                    OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                    if (pds == null)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileNoConfig;
                        return(pReturnValue);
                    }
                    if (Math.Abs(para.FloatingRange) > (double)pds.CheckFloat.Value)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.CheckFloat.Value + "%-正" + pds.CheckFloat.Value + "%之间";
                        return(pReturnValue);
                    }
                    //判断校正数据日期是否合理
                    if (para.LastYearStart < para.StartTime && para.StartTime < DateTime.Now.AddDays(1))
                    {
                        //获取参考日期符合校正时间段的数据,因为只校正一天的数据,所以只查询开始数据的日期就可以
                        List <RP_AADTSta> pRefNaturalList = db.RP_AADTSta.Where(s => s.CalculTime == para.LastYearStart).ToList();
                        //如果参考日期数据为0 则返回失败
                        if (pRefNaturalList.Count == 0)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaileRefNoData;
                            return(pReturnValue);
                        }
                        //需要校正的数据
                        var pCheckNaturalList = db.RP_AADTSta.Where(s => s.CalculTime == para.StartTime).ToList();
                        //如果需要校正的数据为空则返回失败
                        if (pCheckNaturalList.Count == 0)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaileNoData;
                            return(pReturnValue);
                        }
                        using (TransactionScope tran = new TransactionScope())
                        {
                            //校正数据
                            RP_AADTSta pCheckInfo = pCheckNaturalList.First();
                            //参考数据
                            RP_AADTSta pRefInfo = pRefNaturalList.First();

                            //出京总交通量(路线)
                            if (pRefInfo.LineExSum.HasValue)
                            {
                                pCheckInfo.LineExSum = Math.Round(pRefInfo.LineExSum.Value * pFloating);
                            }
                            //进京总交通量(路线)
                            if (pRefInfo.LineEnSum.HasValue)
                            {
                                pCheckInfo.LineEnSum = Math.Round(pRefInfo.LineEnSum.Value * pFloating);
                            }
                            //总交通量(路线)
                            pCheckInfo.LineSum = pCheckInfo.LineExSum + pCheckInfo.LineEnSum;
                            //总交通量同比增幅
                            pCheckInfo.SumGrow = double.Parse(string.Format("{0:0.00}", (pCheckInfo.LineSum - pRefInfo.LineSum) / pRefInfo.LineSum));
                            //出进京比
                            pCheckInfo.ExEnPer = double.Parse(string.Format("{0:0.00}", pCheckInfo.LineExSum / pCheckInfo.LineEnSum));
                            //免、收费总金额
                            if (pRefInfo.FeeSum.HasValue)
                            {
                                pCheckInfo.FeeSum = Math.Round(pRefInfo.FeeSum.Value * (decimal)pFloating, 2);
                            }
                            //出京小型客车免费通行交通量
                            if (pRefInfo.FeeSum.HasValue)
                            {
                                pCheckInfo.ExSmaCarFee = Math.Round(pRefInfo.ExSmaCarFee.Value * pFloating);
                            }
                            //进京小型客车免费通行交通量
                            if (pRefInfo.FeeSum.HasValue)
                            {
                                pCheckInfo.EnSmaCarFee = Math.Round(pRefInfo.EnSmaCarFee.Value * pFloating);
                            }
                            //小型客车免费通行交通量(合计)
                            if (pRefInfo.ExSmaCarFee.HasValue)
                            {
                                pCheckInfo.SmaCarFeeNum = pRefInfo.ExSmaCarFee.Value + pRefInfo.EnSmaCarFee.Value;
                            }
                            //小型客车交通量同比增幅
                            pCheckInfo.SmaCarCompGrow = double.Parse(string.Format("{0:0.00}", (pCheckInfo.SmaCarFeeNum - pRefInfo.SmaCarFeeNum) / pRefInfo.SmaCarFeeNum));
                            //小型客车免费金额
                            if (pRefInfo.SmaCarFee.HasValue)
                            {
                                pCheckInfo.SmaCarFee = Math.Round(pRefInfo.SmaCarFee.Value * (decimal)pFloating, 2);
                            }
                            //收费车辆(合计)
                            if (pRefInfo.ChagSumNum.HasValue)
                            {
                                pCheckInfo.ChagSumNum = Math.Round(pRefInfo.ChagSumNum.Value * pFloating);
                            }
                            //出京收费车辆
                            if (pRefInfo.ExChagNum.HasValue)
                            {
                                pCheckInfo.ExChagNum = Math.Round(pRefInfo.ExChagNum.Value * pFloating);
                            }
                            //进京收费车辆
                            if (pRefInfo.EnChagNum.HasValue)
                            {
                                pCheckInfo.EnChagNum = Math.Round(pRefInfo.EnChagNum.Value * pFloating);
                            }
                            //收费额度
                            if (pRefInfo.ChagAmount.HasValue)
                            {
                                pCheckInfo.ChagAmount = Math.Round(pRefInfo.ChagAmount.Value * (decimal)pFloating, 2);
                            }
                            //绿色通道车辆数
                            if (pRefInfo.GreNum.HasValue)
                            {
                                pCheckInfo.GreNum = Math.Round(pRefInfo.GreNum.Value * pFloating);
                            }
                            //绿色通道免收费金额
                            if (pRefInfo.GreFee.HasValue)
                            {
                                pCheckInfo.GreFee = Math.Round(pRefInfo.GreFee.Value * (decimal)pFloating, 2);
                            }
                            //出京总交通量(站)
                            if (pRefInfo.StaExSum.HasValue)
                            {
                                pCheckInfo.StaExSum = Math.Round(pRefInfo.StaExSum.Value * pFloating);
                            }
                            //进京总交通量(站)
                            if (pRefInfo.StaEnSum.HasValue)
                            {
                                pCheckInfo.StaEnSum = Math.Round(pRefInfo.StaEnSum.Value * pFloating);
                            }
                            if (SessionManage.GetLoginUser() != null)
                            {
                                pCheckInfo.UpdBy = SessionManage.GetLoginUser().UserName;
                            }
                            pCheckInfo.UpdDate = DateTime.Now;
                            pCheckInfo.State   = "1";

                            db.SaveChanges();
                            tran.Complete();
                            pReturnValue.ResultKey   = (byte)EResult.Succeed;
                            pReturnValue.ResultValue = TipInfo.CalibrationSuccess;
                        }
                    }
                    else
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileDate;
                    }
                }
                return(pReturnValue);
            }
            catch (Exception e)
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.CalibrationFaile + e.Message.ToString();
                SystemLog.GetInstance().Error(TipInfo.CalibrationFaile, e);
                return(pReturnValue);
            }
        }
コード例 #10
0
        /// <summary>
        /// 预测
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public CustomResult ForecastData(QueryParameters para)
        {
            CustomResult pReturnValue = new CustomResult();
            //浮动范围
            double            pFloating = 1 + para.FloatingRange * 0.01;
            List <RP_AADTSta> pForeList = new List <RP_AADTSta>();
            //预测数据集合
            List <IReportViewModel> pInList = new List <IReportViewModel>();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //判断报表浮动百分比配置是否存在
                    OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                    if (pds == null)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ForecastFaileNoConfig;
                        return(pReturnValue);
                    }
                    //判断报表预测浮动百分比配置是否正确
                    if (Math.Abs(para.FloatingRange) > (double)pds.ForeFloat.Value)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.ForeFloat.Value + "%-正" + pds.ForeFloat.Value + "%之间";
                        return(pReturnValue);
                    }
                    //获取参考日期符合的数据
                    List <RP_AADTSta> pRefInfoList = db.RP_AADTSta.Where(s => s.CalculTime == para.StartTime).ToList();
                    //如果参考日期数据为0 则返回失败
                    if (pRefInfoList.Count == 0)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ForecastFaileFaileRefNoData;
                        return(pReturnValue);
                    }

                    //预测数据
                    HDayTraInfoViewModel pInfo = new HDayTraInfoViewModel();
                    //预测数据集合
                    List <IReportViewModel> plist = new List <IReportViewModel>();
                    //参考数据
                    RP_AADTSta pRefInfo = pRefInfoList.First();

                    //出京总交通量(路线)
                    pInfo.LineExSum = Math.Round(pRefInfo.LineExSum.Value * pFloating);
                    //进京总交通量(路线)
                    pInfo.LineEnSum = Math.Round(pRefInfo.LineEnSum.Value * pFloating);
                    //总交通量(路线)
                    pInfo.LineSum = pInfo.LineExSum + pInfo.LineEnSum;
                    //免、收费总金额
                    pInfo.FeeSum = Math.Round(pRefInfo.FeeSum.Value * (decimal)pFloating, 2);
                    //出京小型客车免费通行交通量
                    pInfo.ExSmaCarFee = Math.Round(pRefInfo.ExSmaCarFee.Value * pFloating);
                    //进京小型客车免费通行交通量
                    pInfo.EnSmaCarFee = Math.Round(pRefInfo.EnSmaCarFee.Value * pFloating);
                    //小型客车免费通行交通量(合计)
                    pInfo.SmaCarFeeNum = pRefInfo.ExSmaCarFee.Value + pRefInfo.EnSmaCarFee.Value;
                    //小型客车免费金额
                    pInfo.SmaCarFee = Math.Round(pRefInfo.SmaCarFee.Value * (decimal)pFloating, 2);
                    //收费车辆(合计)
                    pInfo.ChagSumNum = Math.Round(pRefInfo.ChagSumNum.Value * pFloating);
                    //出京收费车辆
                    pInfo.ExChagNum = Math.Round(pRefInfo.ExChagNum.Value * pFloating);
                    //进京收费车辆
                    pInfo.EnChagNum = Math.Round(pRefInfo.EnChagNum.Value * pFloating);
                    //收费额度
                    pInfo.ChagAmount = Math.Round(pRefInfo.ChagAmount.Value * (decimal)pFloating, 2);
                    //绿色通道车辆数
                    pInfo.GreNum = Math.Round(pRefInfo.GreNum.Value * pFloating);
                    //绿色通道免收费金额
                    pInfo.GreFee = Math.Round(pRefInfo.GreFee.Value * (decimal)pFloating, 2);
                    //出京总交通量(站)
                    pInfo.StaExSum = Math.Round(pRefInfo.StaExSum.Value * pFloating);
                    //进京总交通量(站)
                    pInfo.StaEnSum = Math.Round(pRefInfo.StaEnSum.Value * pFloating);
                    plist.Add(pInfo);
                    string path = Export(para, plist);
                    pReturnValue.ResultKey   = (byte)EResult.Succeed;
                    pReturnValue.ResultValue = path;
                }
            }
            catch (Exception e)
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.ForecastFail + e.Message.ToString();
                SystemLog.GetInstance().Error(TipInfo.ForecastFail, e);
                return(pReturnValue);
            }
            return(pReturnValue);
        }
コード例 #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;
            }
        }
コード例 #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;
            }
        }
コード例 #13
0
        /// <summary>
        /// 修改假期配置
        /// </summary>
        /// <param name="args">配置信息实体</param>
        /// <returns>影响行数</returns>
        public CustomResult Update(OT_HDayConfig model)
        {
            using (DataSubmittedEntities db = new DataSubmittedEntities())
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    CustomResult pReturnValue = new CustomResult();
                    var          list         = db.OT_HDayConfig.Where(a => a.Id == model.Id).ToList();
                    if (list != null && list.Count > 0)
                    {
                        if (model.CheckFloat != null && model.CheckFloat > 0)
                        {
                            list[0].CheckFloat = model.CheckFloat;
                        }

                        if (model.CompEnd != null)
                        {
                            list[0].CompEnd = model.CompEnd;
                        }

                        if (model.CompStart != null)
                        {
                            list[0].CompStart = model.CompStart;
                        }

                        if (!string.IsNullOrEmpty(model.ConfigName))
                        {
                            list[0].ConfigName = model.ConfigName;
                        }

                        if (model.ForeDate != null)
                        {
                            list[0].ForeDate = model.ForeDate;
                        }

                        if (model.ForeFloat != null && model.ForeFloat > 0)
                        {
                            list[0].ForeFloat = model.ForeFloat;
                        }

                        if (model.HDayEnd != null)
                        {
                            list[0].HDayEnd = model.HDayEnd;
                        }

                        if (model.HDayId != null && model.HDayId > 0)
                        {
                            list[0].HDayId = model.HDayId;
                        }

                        if (model.HDayStart != null)
                        {
                            list[0].HDayStart = model.HDayStart;
                        }

                        if (!string.IsNullOrEmpty(model.RptRemark))
                        {
                            list[0].RptRemark = model.RptRemark;
                        }

                        pReturnValue = Result.SaveUpdateResult(db, transaction);
                    }
                    else
                    {
                        pReturnValue.ResultKey   = (byte)EResult.IsNull1;
                        pReturnValue.ResultValue = Wttech.DataSubmitted.Common.Resources.TipInfo.Inexist;
                    }
                    return(pReturnValue);
                }
            }
        }
コード例 #14
0
        /// <summary>
        /// 校正
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public CustomResult CalibrationData(QueryParameters para)
        {
            CustomResult pReturnValue = new CustomResult();
            double       pFloating    = 1 + para.FloatingRange * 0.01;

            List <RP_HDayAADTSta> pNaturalTraList = new List <RP_HDayAADTSta>();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //判断报表浮动百分比配置是否正确
                    OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                    if (pds == null)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileNoConfig;
                        return(pReturnValue);
                    }
                    if (Math.Abs(para.FloatingRange) > (double)pds.CheckFloat.Value)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.CheckFloat.Value + "%-正" + pds.CheckFloat.Value + "%之间";
                        return(pReturnValue);
                    }
                    //判断校正数据日期是否合理
                    if (para.LastYearStart < para.StartTime && para.StartTime < DateTime.Now.AddDays(1))
                    {
                        //获取参考日期符合校正时间段的数据,因为只校正一天的数据,所以只查询开始数据的日期就可以
                        List <RP_HDayAADTSta> pRefNaturalList = db.RP_HDayAADTSta.Where(s => s.CalcuTime == para.LastYearStart).ToList();
                        //如果参考日期数据为0 则返回失败
                        if (pRefNaturalList.Count == 0)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaileRefNoData;
                            return(pReturnValue);
                        }
                        //需要校正的数据
                        var pCheckNaturalList = db.RP_HDayAADTSta.Where(s => s.CalcuTime == para.StartTime).ToList();
                        //如果需要校正的数据为空则返回失败
                        if (pCheckNaturalList.Count == 0)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaileNoData;
                            return(pReturnValue);
                        }
                        using (TransactionScope tran = new TransactionScope())
                        {
                            ////校正数据
                            //RP_HDayAADTSta pCheckInfo = pCheckNaturalList.First();
                            ////参考数据
                            //RP_HDayAADTSta pRefInfo = pRefNaturalList.First();

                            foreach (RP_HDayAADTSta pCheckInfo in pCheckNaturalList) //校正数据
                            {
                                foreach (RP_HDayAADTSta pRefInfo in pRefNaturalList) //参考数据
                                {
                                    if (pRefInfo.LineType != 0 && pCheckInfo.LineType == pRefInfo.LineType)
                                    {
                                        //出京自然交通辆
                                        if (pRefInfo.ExNat != null)
                                        {
                                            pCheckInfo.ExNat = Math.Round(pRefInfo.ExNat.Value * pFloating);
                                        }
                                        //进京自然交通辆
                                        if (pRefInfo.EnNat != null)
                                        {
                                            pCheckInfo.EnNat = Math.Round(pRefInfo.EnNat.Value * pFloating);
                                        }
                                        //出京当量交通辆
                                        if (pRefInfo.ExEqu != null)
                                        {
                                            pCheckInfo.ExEqu = Math.Round(pRefInfo.ExEqu.Value * pFloating);
                                        }
                                        //进京当量交通辆
                                        if (pRefInfo.EnEqu != null)
                                        {
                                            pCheckInfo.EnEqu = Math.Round(pRefInfo.EnEqu.Value * pFloating);
                                        }
                                        //拥挤度-“拥挤度”=交通量(当量交通量)合计/设计交通量,保留四位小数;
                                        if (pCheckInfo.ExEqu != null && pCheckInfo.EnEqu != null)
                                        {
                                            HDayAADTViewModel model = new HDayAADTViewModel();
                                            model.LineType     = pRefInfo.LineType;
                                            pCheckInfo.CrowDeg = double.Parse(string.Format("{0:0.0000}", (pCheckInfo.ExEqu + pCheckInfo.EnEqu) / model.DeTra));
                                        }
                                        //小型车出京
                                        if (pRefInfo.SmaEx != null)
                                        {
                                            pCheckInfo.SmaEx = Math.Round(pRefInfo.SmaEx.Value * pFloating);
                                        }
                                        //小型车进京
                                        if (pRefInfo.SmaEn != null)
                                        {
                                            pCheckInfo.SmaEn = Math.Round(pRefInfo.SmaEn.Value * pFloating);
                                        }
                                        //中型车出京
                                        if (pRefInfo.MedEx != null)
                                        {
                                            pCheckInfo.MedEx = Math.Round(pRefInfo.MedEx.Value * pFloating);
                                        }
                                        //中型车进京
                                        if (pRefInfo.MedEn != null)
                                        {
                                            pCheckInfo.MedEn = Math.Round(pRefInfo.MedEn.Value * pFloating);
                                        }
                                        //大型车出京
                                        if (pRefInfo.LarEx != null)
                                        {
                                            pCheckInfo.LarEx = Math.Round(pRefInfo.LarEx.Value * pFloating);
                                        }
                                        //大型车进京
                                        if (pRefInfo.LarEn != null)
                                        {
                                            pCheckInfo.LarEn = Math.Round(pRefInfo.LarEn.Value * pFloating);
                                        }
                                        //重型车出京
                                        if (pRefInfo.HeaEx != null)
                                        {
                                            pCheckInfo.HeaEx = Math.Round(pRefInfo.HeaEx.Value * pFloating);
                                        }
                                        //重型车进京
                                        if (pRefInfo.HeaEn != null)
                                        {
                                            pCheckInfo.HeaEn = Math.Round(pRefInfo.HeaEn.Value * pFloating);
                                        }
                                        //超大型车出京
                                        if (pRefInfo.SupEx != null)
                                        {
                                            pCheckInfo.SupEx = Math.Round(pRefInfo.SupEx.Value * pFloating);
                                        }
                                        //超大型车进京
                                        if (pRefInfo.SupEn != null)
                                        {
                                            pCheckInfo.SupEn = Math.Round(pRefInfo.SupEn.Value * pFloating);
                                        }
                                        //进出京大货车以上车型数量-进出京大货车以上车型数量”=大型车(合计)+重型车(合计)+超大型车(合计)。
                                        if (pCheckInfo.LarEx != null && pCheckInfo.LarEn != null && pCheckInfo.HeaEx != null && pCheckInfo.HeaEn != null && pCheckInfo.SupEx != null && pCheckInfo.SupEn != null)
                                        {
                                            pCheckInfo.SupTruNum = pCheckInfo.LarEx + pCheckInfo.LarEn + pCheckInfo.HeaEx + pCheckInfo.HeaEn + pCheckInfo.SupEx + pCheckInfo.SupEn;
                                        }
                                        //进出京货车数量
                                        if (pRefInfo.EnExTrukNum != null)
                                        {
                                            pCheckInfo.EnExTrukNum = Math.Round(pRefInfo.EnExTrukNum.Value * pFloating);
                                        }
                                        //客车货车比例-客车货车比例=(交通量(自然交通量)合计-进出京货车数量)/进出京货车数量*100%,保留四位小数;
                                        if (pCheckInfo.ExNat != null && pCheckInfo.EnNat != null && pCheckInfo.EnExTrukNum != null && pCheckInfo.EnExTrukNum != null && pCheckInfo.EnExTrukNum != 0)
                                        {
                                            pCheckInfo.CarTrukPer = double.Parse(string.Format("{0:0.0000}", (pCheckInfo.ExNat + pCheckInfo.EnNat - pCheckInfo.EnExTrukNum) / pCheckInfo.EnExTrukNum));
                                        }
                                        //大货车以上占货车交通量比例-大货车以上占货车交通量比例(%)=进出京大货车以上车型的数量/进出京货车数量*100%,保留四位小数。
                                        if (pCheckInfo.SupTruNum != null && pCheckInfo.EnExTrukNum != null && pCheckInfo.EnExTrukNum != 0)
                                        {
                                            pCheckInfo.SupTruPer = double.Parse(string.Format("{0:0.0000}", pCheckInfo.SupTruNum / pCheckInfo.EnExTrukNum));
                                        }
                                        if (SessionManage.GetLoginUser() != null)
                                        {
                                            pCheckInfo.UpdBy = SessionManage.GetLoginUser().UserName;
                                        }
                                        pCheckInfo.UpdDate = DateTime.Now;
                                        pCheckInfo.State   = "1";
                                        break;
                                    }
                                }
                            }
                            db.SaveChanges();
                            tran.Complete();
                            pReturnValue.ResultKey   = (byte)EResult.Succeed;
                            pReturnValue.ResultValue = TipInfo.CalibrationSuccess;
                        }
                    }
                    else
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileDate;
                    }
                }
                return(pReturnValue);
            }
            catch (Exception e)
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.CalibrationFaile + e.Message.ToString();
                SystemLog.GetInstance().Error(TipInfo.CalibrationFaile, e);
                return(pReturnValue);
            }
        }
コード例 #15
0
        /// <summary>
        /// 校正数据
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public CustomResult CalibrationData(QueryParameters para)
        {
            CustomResult pReturnValue = new CustomResult();

            //判断选择校正时间段的有效性
            string[] calibrationDataHour = new string[24];
            if (para.StartHour <= para.EndHour)
            {
                for (int i = para.StartHour; i <= para.EndHour; i++)
                {
                    calibrationDataHour[i] = i.ToString();
                }
            }
            else
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.CalibrationFaileHour;
                return(pReturnValue);
            }
            double           pFloating       = 1 + para.FloatingRange * 0.01;
            List <RP_NatSta> pNaturalTraList = new List <RP_NatSta>();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //判断报表浮动百分比配置是否正确
                    OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                    if (pds == null)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileNoConfig;
                        return(pReturnValue);
                    }
                    if (Math.Abs(para.FloatingRange) > (double)pds.CheckFloat.Value)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.CheckFloat.Value + "%-正" + pds.CheckFloat.Value + "%之间";
                        return(pReturnValue);
                    }
                    //获取参考日期符合校正时间段的数据,因为只校正一天的数据,所以只查询开始数据的日期就可以
                    List <RP_HourAADT> pRefHourAADTList = db.RP_HourAADT.Where(s => s.CalcuTime == para.LastYearStart && calibrationDataHour.Contains(s.HourPer.ToString())).ToList();
                    //如果参考日期数据为0 则返回失败
                    if (pRefHourAADTList.Count <= 0)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileRefNoData;
                        return(pReturnValue);
                    }
                    //判断时间范围是否相同
                    if ((para.LastYearEnd - para.LastYearStart) == (para.EndTime - para.StartTime))
                    {
                        //需要校正的数据
                        var pCheckHourAADTList = db.RP_HourAADT.Where(s => s.CalcuTime == para.StartTime && calibrationDataHour.Contains(s.HourPer.ToString())).ToList();
                        if (pCheckHourAADTList.Count <= 0)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaileNoData;
                            return(pReturnValue);
                        }
                        using (TransactionScope tran = new TransactionScope())
                        {
                            foreach (var item in pCheckHourAADTList)
                            {
                                List <RP_HourAADT> plist = pRefHourAADTList.Where(i => i.HourPer == item.HourPer).ToList();
                                if (plist.Count() > 0)
                                {
                                    RP_HourAADT pTemp = plist.First();
                                    item.Dyf_EnOut  = Math.Round(pTemp.Dyf_EnOut.Value * pFloating);
                                    item.Dyf_ExIn   = Math.Round(pTemp.Dyf_ExIn.Value * pFloating);
                                    item.Mjqd_EnIn  = Math.Round(pTemp.Mjqd_EnIn.Value * pFloating);
                                    item.Mjqd_EnOut = Math.Round(pTemp.Mjqd_EnOut.Value * pFloating);
                                    item.Mjqx_ExIn  = Math.Round(pTemp.Mjqx_ExIn.Value * pFloating);
                                    item.Mjqx_EnOut = Math.Round(pTemp.Mjqx_EnOut.Value * pFloating);
                                    item.Cy_EnOut   = Math.Round(pTemp.Cy_EnOut.Value * pFloating);
                                    item.Cy_ExIn    = Math.Round(pTemp.Cy_ExIn.Value * pFloating);
                                    item.CalcuTime  = para.StartTime.Value;

                                    if (SessionManage.GetLoginUser() != null)
                                    {
                                        item.UpdBy = SessionManage.GetLoginUser().UserName;
                                    }
                                    item.UpdDate = DateTime.Now;
                                    item.State   = "1";
                                }
                            }
                            db.SaveChanges();
                            tran.Complete();
                            pReturnValue.ResultKey   = (byte)EResult.Succeed;
                            pReturnValue.ResultValue = TipInfo.CalibrationSuccess;
                        }
                    }
                    else
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationRangeFaile;
                    }
                }
            }
            catch (Exception e)
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.CalibrationFaile + e.Message.ToString();
                SystemLog.GetInstance().Error(TipInfo.CalibrationFaile, e);
                return(pReturnValue);
            }
            return(pReturnValue);
        }
コード例 #16
0
        /// <summary>
        /// 预测数据
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public CustomResult ForecastData(QueryParameters para)
        {
            CustomResult pReturnValue = new CustomResult();
            //浮动范围
            double          pFloating  = para.FloatingRange * 0.01;
            List <RP_Daily> pDailyList = new List <RP_Daily>();
            //预测数据集合
            List <IReportViewModel> pOutList = new List <IReportViewModel>();
            List <IReportViewModel> pInList  = new List <IReportViewModel>();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //判断报表浮动百分比配置是否存在
                    OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                    if (pds == null)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ForecastFaileNoConfig;
                        return(pReturnValue);
                    }
                    //判断报表预测浮动百分比配置是否正确
                    if (Math.Abs(para.FloatingRange) > (double)pds.ForeFloat.Value)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.ForeFloat.Value + "%-正" + pds.ForeFloat.Value + "%之间";
                        return(pReturnValue);
                    }
                    //获取参考日期符合的数据
                    List <RP_Daily> pRefDataDailyInfo = db.RP_Daily.Where(s => s.CalcuTime == para.StartTime && s.StaType == para.StationType).ToList();
                    //如果参考日期数据为0 则返回失败
                    if (pRefDataDailyInfo.Count == 0)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ForecastFaileFaileRefNoData;
                        return(pReturnValue);
                    }

                    foreach (RP_Daily info in pRefDataDailyInfo)
                    {
                        DataDailyInfoViewModel pOutInfo = new DataDailyInfoViewModel();
                        DataDailyInfoViewModel pInInfo  = new DataDailyInfoViewModel();
                        pInInfo.VehNum   = (float)Math.Round((double)(info.InNum + info.InNum * pFloating), 0);
                        pOutInfo.VehNum  = (float)Math.Round((double)(info.OutNum + info.OutNum * pFloating), 0);
                        pInInfo.VehType  = info.VehType.ToString();
                        pOutInfo.VehType = info.VehType.ToString();
                        pOutInfo.CarChag = Math.Round((decimal)(info.ChagFee + info.ChagFee * (decimal)pFloating) / 10000, 2);
                        pOutList.Add(pOutInfo);
                        pInList.Add(pInInfo);
                    }
                    string path = Export(para, pOutList, pInList);
                    pReturnValue.ResultKey   = (byte)EResult.Succeed;
                    pReturnValue.ResultValue = path;
                }
            }
            catch (Exception e)
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.ForecastFail + e.Message.ToString();
                SystemLog.GetInstance().Error(TipInfo.ForecastFail, e);
                return(pReturnValue);
            }
            return(pReturnValue);
        }
コード例 #17
0
        /// <summary>
        /// 校正数据
        /// </summary>
        /// <param name="args">校正日期,参考日期,浮动百分比</param>
        /// <returns></returns>
        public CustomResult CalibrationData(QueryParameters para)
        {
            CustomResult pReturnValue = new CustomResult();
            // QueryNaturalInfoViewModel queryNatural = new QueryNaturalInfoViewModel();

            //校正浮动范围
            double          pFloating  = para.FloatingRange * 0.01;
            List <RP_Daily> pDailyList = new List <RP_Daily>();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //判断报表浮动百分比配置是否存在
                    OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                    if (pds == null)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileNoConfig;
                        return(pReturnValue);
                    }
                    //判断报表浮动百分比配置是否正确
                    if (Math.Abs(para.FloatingRange) > (double)pds.CheckFloat.Value)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负%" + pds.CheckFloat.Value + "-正%" + pds.CheckFloat.Value + "之间";
                        return(pReturnValue);
                    }
                    //获取参考日期符合校正时间段的数据,因为只校正一天的数据,所以只查询开始数据的日期就可以
                    List <RP_Daily> pRefDataDailyInfo = db.RP_Daily.Where(s => s.CalcuTime == para.LastYearStart && s.StaType == para.StationType).ToList();
                    //如果参考日期数据为0 则返回失败
                    if (pRefDataDailyInfo.Count == 0)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileRefNoData;
                        return(pReturnValue);
                    }
                    //判断校正数据日期是否合理
                    if (para.LastYearStart < para.StartTime && para.StartTime < DateTime.Now.AddDays(1))
                    {
                        //需要校正的数据
                        var pCheckList = db.RP_Daily.Where(s => s.CalcuTime == para.StartTime && s.StaType == para.StationType).ToList();
                        //如果校正数据不存在则返回失败
                        if (pCheckList.Count == 0)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaileNoData;
                            return(pReturnValue);
                        }
                        using (TransactionScope tran = new TransactionScope())
                        {
                            foreach (var item in pCheckList)
                            {
                                IEnumerable <RP_Daily> plist = pRefDataDailyInfo.Where(i => i.VehType == item.VehType);
                                if (plist.Count() > 0)
                                {
                                    RP_Daily pTemp = plist.First();
                                    item.InNum     = (int)(pTemp.InNum + pTemp.InNum * pFloating);
                                    item.OutNum    = (int)(pTemp.OutNum + pTemp.OutNum * pFloating);
                                    item.ChagFee   = pTemp.ChagFee.Value + pTemp.ChagFee.Value * decimal.Parse(pFloating.ToString());
                                    item.CalcuTime = para.StartTime.Value;
                                    item.StaType   = para.StationType;
                                    if (SessionManage.GetLoginUser() != null)
                                    {
                                        item.UpdBy = SessionManage.GetLoginUser().UserName;
                                    }
                                    item.UpdDate = DateTime.Now;
                                    item.State   = 1;
                                }
                            }
                            db.SaveChanges();
                            tran.Complete();
                            pReturnValue.ResultKey   = (byte)EResult.Succeed;
                            pReturnValue.ResultValue = TipInfo.CalibrationSuccess;
                        }
                    }
                    else
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileDate;
                    }
                }
                return(pReturnValue);
            }
            catch (Exception e)
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.CalibrationFaile + e.Message.ToString();
                SystemLog.GetInstance().Error(TipInfo.CalibrationFaile, e);
                return(pReturnValue);
            }
        }
コード例 #18
0
        /// <summary>
        /// 校正
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public Common.CustomResult CalibrationData(Common.QueryParameters para)
        {
            CustomResult pReturnValue = new CustomResult();
            double       pFloating    = 1 + para.FloatingRange * 0.01;

            using (DataSubmittedEntities db = new DataSubmittedEntities())
            {
                //判断报表浮动百分比配置是否正确
                OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                if (pds == null)
                {
                    pReturnValue.ResultKey   = (byte)EResult.Fail;
                    pReturnValue.ResultValue = TipInfo.CalibrationFaileNoConfig;
                    return(pReturnValue);
                }
                if (Math.Abs(para.FloatingRange) > (double)pds.CheckFloat.Value)
                {
                    pReturnValue.ResultKey   = (byte)EResult.Fail;
                    pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.CheckFloat.Value + "%-正" + pds.CheckFloat.Value + "%之间";
                    return(pReturnValue);
                }
                //判断时间范围是否相同
                if ((para.LastYearEnd - para.LastYearStart) == (para.EndTime - para.StartTime))
                {
                    //获取参考日期符合校正时间段的数据
                    List <RP_HDayAADT> pRefNaturalList = db.RP_HDayAADT.Where(a => a.CalcuTime >= para.LastYearStart & a.CalcuTime <= para.LastYearEnd).OrderBy(a => a.CalcuTime).ToList();
                    //如果参考日期数据为0 则返回失败
                    if (pRefNaturalList == null || pRefNaturalList.Count == 0)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileRefNoData;
                        return(pReturnValue);
                    }
                    //需要校正的数据
                    var pCheckNaturalList = db.RP_HDayAADT.Where(a => a.CalcuTime >= para.StartTime & a.CalcuTime <= para.EndTime).OrderBy(a => a.CalcuTime).ToList();
                    //如果需要校正的数据为空则返回失败
                    if (pCheckNaturalList == null || pCheckNaturalList.Count == 0)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileNoData;
                        return(pReturnValue);
                    }
                    using (TransactionScope tran = new TransactionScope())
                    {
                        for (int i = 0; i < pCheckNaturalList.Count; i++)
                        {
                            if (pRefNaturalList[i].JC != null)
                            {
                                pCheckNaturalList[i].JC = Math.Round(pRefNaturalList[i].JC.Value * pFloating);
                            }
                            if (pRefNaturalList[i].JZL != null)
                            {
                                pCheckNaturalList[i].JZL = Math.Round(pRefNaturalList[i].JZL.Value * pFloating);
                            }
                            if (pRefNaturalList[i].KG != null)
                            {
                                pCheckNaturalList[i].KG = Math.Round(pRefNaturalList[i].KG.Value * pFloating);
                            }
                            if (pRefNaturalList[i].TGB != null)
                            {
                                pCheckNaturalList[i].TGB = Math.Round(pRefNaturalList[i].TGB.Value * pFloating);
                            }
                            if (pRefNaturalList[i].TGX != null)
                            {
                                pCheckNaturalList[i].TGX = Math.Round(pRefNaturalList[i].TGX.Value * pFloating);
                            }
                            if (pRefNaturalList[i].TGXF != null)
                            {
                                pCheckNaturalList[i].TGXF = Math.Round(pRefNaturalList[i].TGXF.Value * pFloating);
                            }
                            if (pRefNaturalList[i].YC != null)
                            {
                                pCheckNaturalList[i].YC = Math.Round(pRefNaturalList[i].YC.Value * pFloating);
                            }
                            if (pRefNaturalList[i].YXBD != null)
                            {
                                pCheckNaturalList[i].YXBD = Math.Round(pRefNaturalList[i].YXBD.Value * pFloating);
                            }
                            if (pRefNaturalList[i].YXBX != null)
                            {
                                pCheckNaturalList[i].YXBX = Math.Round(pRefNaturalList[i].YXBX.Value * pFloating);
                            }
                            if (SessionManage.GetLoginUser() != null)
                            {
                                pCheckNaturalList[i].UpdBy = SessionManage.GetLoginUser().UserName;
                            }
                            pCheckNaturalList[i].UpdDate = DateTime.Now;
                            pCheckNaturalList[i].State   = "1";
                        }
                        try
                        {
                            db.SaveChanges();
                            tran.Complete();
                            pReturnValue.ResultKey   = (byte)EResult.Succeed;
                            pReturnValue.ResultValue = TipInfo.CalibrationSuccess;
                        }
                        catch (Exception e)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaile + e.Message.ToString();
                            SystemLog.GetInstance().Error(TipInfo.CalibrationFaile, e);
                            return(pReturnValue);
                        }
                    }
                }
                else
                {
                    pReturnValue.ResultKey   = (byte)EResult.Fail;
                    pReturnValue.ResultValue = TipInfo.CalibrationRangeFaile;
                }
            }
            return(pReturnValue);
        }
コード例 #19
0
        /// <summary>
        /// 预测
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public Common.CustomResult ForecastData(Common.QueryParameters para)
        {
            CustomResult pReturnValue = new CustomResult();
            //浮动范围
            double pFloating = 1 + para.FloatingRange * 0.01;
            // List<RP_EnEx> pForeList = new List<RP_EnEx>();
            //预测数据集合
            List <IReportViewModel> pInList = new List <IReportViewModel>();

            using (DataSubmittedEntities db = new DataSubmittedEntities())
            {
                //判断报表浮动百分比配置是否存在
                OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                if (pds == null)
                {
                    pReturnValue.ResultKey   = (byte)EResult.Fail;
                    pReturnValue.ResultValue = TipInfo.ForecastFaileNoConfig;
                    return(pReturnValue);
                }
                //判断报表预测浮动百分比配置是否正确
                if (Math.Abs(para.FloatingRange) > (double)pds.ForeFloat.Value)
                {
                    pReturnValue.ResultKey   = (byte)EResult.Fail;
                    pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.ForeFloat.Value + "%-正" + pds.ForeFloat.Value + "%之间";
                    return(pReturnValue);
                }
                //获取参考日期符合的数据
                List <RP_EnEx> pRefInfoList = db.RP_EnEx.Where(s => s.CalcuTime == para.StartTime && s.StaType == para.StationType).ToList();
                //如果参考日期数据为0 则返回失败
                if (pRefInfoList == null || pRefInfoList.Count == 0)
                {
                    pReturnValue.ResultKey   = (byte)EResult.Fail;
                    pReturnValue.ResultValue = TipInfo.ForecastFaileFaileRefNoData;
                    return(pReturnValue);
                }

                //预测数据
                ForecastEnExViewModel pInfo = new ForecastEnExViewModel();
                //预测数据集合
                List <IReportViewModel> plist = new List <IReportViewModel>();
                //参考数据
                RP_EnEx pRefInfo = pRefInfoList.First();

                if (pRefInfo.EnOthCar != null)
                {
                    pInfo.EnOthCar = Math.Round(pRefInfo.EnOthCar.Value * pFloating);
                }
                if (pInfo.EnSmaCar != null)
                {
                    pInfo.EnSmaCar = Math.Round(pRefInfo.EnSmaCar.Value * pFloating);
                }
                if (pInfo.EnTruk != null)
                {
                    pInfo.EnTruk = Math.Round(pRefInfo.EnTruk.Value * pFloating);
                }
                try
                {
                    plist.Add(pInfo);
                    string path = Export(para, plist);
                    pReturnValue.ResultKey   = (byte)EResult.Succeed;
                    pReturnValue.ResultValue = path;
                }
                catch (Exception e)
                {
                    pReturnValue.ResultKey   = (byte)EResult.Fail;
                    pReturnValue.ResultValue = TipInfo.ForecastFail + e.Message.ToString();
                    SystemLog.GetInstance().Error(TipInfo.ForecastFail, e);
                    return(pReturnValue);
                }
            }
            return(pReturnValue);
        }
コード例 #20
0
        /// <summary>
        /// 校正数据
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public CustomResult CalibrationData(QueryParameters para)
        {
            CustomResult pReturnValue = new CustomResult();
            double       pFloating    = 1 + para.FloatingRange * 0.01;

            List <RP_HDayAADT> pHDayAADT = new List <RP_HDayAADT>();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //判断报表浮动百分比配置是否正确
                    OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                    if (pds == null)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationFaileNoConfig;
                        return(pReturnValue);
                    }
                    if (Math.Abs(para.FloatingRange) > (double)pds.CheckFloat.Value)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.CheckFloat.Value + "%-正" + pds.CheckFloat.Value + "%之间";
                        return(pReturnValue);
                    }
                    //判断时间范围是否相同
                    if ((para.LastYearEnd - para.LastYearStart) == (para.EndTime - para.StartTime))
                    {
                        //获取参考日期符合校正时间段的数据
                        List <RP_HDayAADT> pRefList = db.RP_HDayAADT.Where(s => s.CalcuTime >= para.LastYearStart && s.CalcuTime <= para.LastYearEnd).ToList();
                        //如果参考日期数据为0 则返回失败
                        if (pRefList.Count == 0)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaileRefNoData;
                            return(pReturnValue);
                        }
                        //需要校正的数据
                        var pCheckList = db.RP_HDayAADT.Where(s => s.CalcuTime >= para.StartTime && s.CalcuTime <= para.EndTime).ToList();
                        //如果需要校正的数据为空则返回失败
                        if (pCheckList.Count == 0)
                        {
                            pReturnValue.ResultKey   = (byte)EResult.Fail;
                            pReturnValue.ResultValue = TipInfo.CalibrationFaileNoData;
                            return(pReturnValue);
                        }
                        using (TransactionScope tran = new TransactionScope())
                        {
                            ////校正数据
                            //RP_HDayAADTSta pCheckInfo = pCheckNaturalList.First();
                            ////参考数据
                            //RP_HDayAADTSta pRefInfo = pRefNaturalList.First();

                            foreach (RP_HDayAADT pCheckInfo in pCheckList) //校正数据
                            {
                                foreach (RP_HDayAADT pRefInfo in pRefList) //参考数据
                                {
                                    if (pRefInfo.CalcuTime == pRefInfo.CalcuTime)
                                    {
                                        pCheckInfo.Out = Math.Round(pRefInfo.Out.Value * pFloating);
                                        if (SessionManage.GetLoginUser() != null)
                                        {
                                            pCheckInfo.UpdBy = SessionManage.GetLoginUser().UserName;
                                        }
                                        pCheckInfo.UpdDate = DateTime.Now;
                                        pCheckInfo.State   = "1";
                                        break;
                                    }
                                }
                            }
                            db.SaveChanges();
                            tran.Complete();
                            pReturnValue.ResultKey   = (byte)EResult.Succeed;
                            pReturnValue.ResultValue = TipInfo.CalibrationSuccess;
                        }
                    }
                    else
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.CalibrationRangeFaile;
                    }
                }
                return(pReturnValue);
            }
            catch (Exception e)
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.CalibrationFaile + e.Message.ToString();
                SystemLog.GetInstance().Error(TipInfo.CalibrationFaile, e);
                return(pReturnValue);
            }
        }
コード例 #21
0
        /// <summary>
        /// 预测
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public CustomResult ForecastData(QueryParameters para)
        {
            if (listExport != null)
            {
                listExport.Clear();
            }
            CustomResult pReturnValue = new CustomResult();
            //浮动范围
            double pFloating = 1 + para.FloatingRange * 0.01;
            List <RoadRunSitViewModel> pForeList = new List <RoadRunSitViewModel>();
            //预测数据集合
            List <IReportViewModel> pInList = new List <IReportViewModel>();

            try
            {
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    //判断报表浮动百分比配置是否存在
                    OT_HDayConfig pds = HolidayConfig.GetInstance().GetById(para.ReportType);
                    if (pds == null)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ForecastFaileNoConfig;
                        return(pReturnValue);
                    }
                    //判断报表预测浮动百分比配置是否正确
                    if (Math.Abs(para.FloatingRange) > (double)pds.ForeFloat.Value)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ErrorInfo + "范围应在负" + pds.ForeFloat.Value + "%-正" + pds.ForeFloat.Value + "%之间";
                        return(pReturnValue);
                    }

                    //获取参考日期符合的数据
                    List <RP_AADTSta> pRefInfoList = db.RP_AADTSta.Where(s => s.CalculTime == para.StartTime).ToList();
                    //如果参考日期数据为0 则返回失败
                    if (pRefInfoList == null || pRefInfoList.Count == 0)
                    {
                        pReturnValue.ResultKey   = (byte)EResult.Fail;
                        pReturnValue.ResultValue = TipInfo.ForecastFaileFaileRefNoData;
                        return(pReturnValue);
                    }

                    //预测数据
                    RoadRunSitViewModel info = new RoadRunSitViewModel();
                    //预测数据集合
                    List <IReportViewModel> plist = new List <IReportViewModel>();

                    //参考数据
                    foreach (RP_AADTSta pRefInfo in pRefInfoList)
                    {
                        //出京总交通量(路线)
                        info.LineExSum = Math.Round(pRefInfo.LineExSum == null ? 0 : pRefInfo.LineExSum.Value * pFloating, 2);
                        //进京总交通量(路线)
                        info.LineEnSum = Math.Round(pRefInfo.LineEnSum == null ? 0 : pRefInfo.LineEnSum.Value * pFloating, 2);
                        //总交通量(路线)
                        info.LineSum = info.LineExSum + info.LineEnSum;
                        //小型客车免费通行交通量(合计)
                        info.SmaCarFeeNum = Math.Round(pRefInfo.ExSmaCarFee == null ? 0 : pRefInfo.ExSmaCarFee.Value + pRefInfo.EnSmaCarFee == null ? 0 : pRefInfo.EnSmaCarFee.Value, 2);
                        //小型客车免费金额
                        info.SmaCarFee = Math.Round(pRefInfo.SmaCarFee == null ? 0 : pRefInfo.SmaCarFee.Value * (decimal)pFloating, 2);
                        //收费车辆(合计)
                        info.ChagSumNum = Math.Round(pRefInfo.ChagSumNum == null ? 0 : pRefInfo.ChagSumNum.Value * pFloating, 2);
                        //数据日期
                        info.CalculTime = (pRefInfo.CalculTime).Month + "月" + (pRefInfo.CalculTime).Day + "日";
                        //出进京比“出进京比”=出京交通量/进京交通量,保留两位小数。
                        if (info.LineEnSum != 0)
                        {
                            info.ExEnPer = Math.Round(info.LineExSum / info.LineEnSum, 2);
                        }
                        //“同比增幅”=(本年数据-去年数据)/去年数据*100%,保留两位小数。

                        //小型客车交通量同比增幅
                        info.SmaCarCompGrow = pRefInfo.SmaCarCompGrow == null ? "0.00" : Math.Round(pRefInfo.SmaCarCompGrow.Value, 2).ToString();
                        //总交通量同比增幅
                        info.SumGrow = pRefInfo.SumGrow == null ? "0.00" : Math.Round(pRefInfo.SumGrow.Value, 2).ToString();

                        plist.Add(info);
                    }
                    string path = Export(para, plist);
                    pReturnValue.ResultKey   = (byte)EResult.Succeed;
                    pReturnValue.ResultValue = path;
                }
            }
            catch (Exception e)
            {
                pReturnValue.ResultKey   = (byte)EResult.Fail;
                pReturnValue.ResultValue = TipInfo.ForecastFail + e.Message.ToString();
                SystemLog.GetInstance().Error(TipInfo.ForecastFail, e);
                return(pReturnValue);
            }
            return(pReturnValue);
        }