예제 #1
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);
        }
예제 #2
0
        /// <summary>
        ///  预测导出--如果需要将入出口数据进行区分,则分别放在两个list的集合中,若不需区分,则将数据放入list1中,list2为空即可
        /// </summary>
        /// <param name="readworkbook">待修改工作簿</param>
        /// <param name="para">参数类</param>
        /// <param name="list1">数据集合1</param>
        /// <param name="list2">数据集合2(可空)</param>
        /// <returns></returns>
        public IWorkbook GenerateSheet(IWorkbook readworkbook, QueryParameters para, List <IReportViewModel> list1, List <IReportViewModel> list2)
        {
            //获取工作簿
            ISheet sheet = readworkbook.GetSheetAt(0);

            //设置日期
            SetReportDate(sheet, 1, 8, DateTime.Parse(DateTime.Now.ToShortDateString()), para.ReportType);
            using (DataSubmittedEntities db = new DataSubmittedEntities())
            {
                HDayTraInfoViewModel pInfo = null;
                if (list1.Count > 0)
                {
                    pInfo = list1.First() as HDayTraInfoViewModel;
                }
                if (pInfo != null)
                {
                    for (int i = 0; i < 2; i++)//报表8包括两条,其中一条为合计数据
                    {
                        if (pInfo.LineSum.HasValue)
                        {
                            SetValue(sheet, i + 5, 2, pInfo.LineSum.ToString());
                        }
                        if (pInfo.LineExSum.HasValue)
                        {
                            SetValue(sheet, i + 5, 3, pInfo.LineExSum.ToString());
                        }
                        if (pInfo.LineEnSum.HasValue)
                        {
                            SetValue(sheet, i + 5, 4, pInfo.LineEnSum.ToString());
                        }
                        if (pInfo.FeeSum.HasValue)
                        {
                            SetValue(sheet, i + 5, 5, pInfo.FeeSum.ToString());
                        }
                        if (pInfo.SmaCarFeeNum.HasValue)
                        {
                            SetValue(sheet, i + 5, 6, pInfo.SmaCarFeeNum.ToString());
                        }
                        if (pInfo.ExSmaCarFee.HasValue)
                        {
                            SetValue(sheet, i + 5, 7, pInfo.ExSmaCarFee.ToString());
                        }
                        if (pInfo.EnSmaCarFee.HasValue)
                        {
                            SetValue(sheet, i + 5, 8, pInfo.EnSmaCarFee.ToString());
                        }
                        if (pInfo.SmaCarFee.HasValue)
                        {
                            SetValue(sheet, i + 5, 9, pInfo.SmaCarFee.ToString());
                        }
                        if (pInfo.ChagSumNum.HasValue)
                        {
                            SetValue(sheet, i + 5, 10, pInfo.ChagSumNum.ToString());
                        }
                        if (pInfo.ExChagNum.HasValue)
                        {
                            SetValue(sheet, i + 5, 11, pInfo.ExChagNum.ToString());
                        }
                        if (pInfo.EnChagNum.HasValue)
                        {
                            SetValue(sheet, i + 5, 12, pInfo.EnChagNum.ToString());
                        }
                        if (pInfo.ChagAmount.HasValue)
                        {
                            SetValue(sheet, i + 5, 13, pInfo.ChagAmount.ToString());
                        }
                        if (pInfo.GreNum.HasValue)
                        {
                            SetValue(sheet, i + 5, 14, pInfo.GreNum.ToString());
                        }
                        if (pInfo.GreFee.HasValue)
                        {
                            SetValue(sheet, i + 5, 15, pInfo.GreFee.ToString());
                        }
                        //SetValue(sheet, i + 5, 16, pInfo.TollStaName.ToString());//收费站名称
                        if ((pInfo.StaExSum + pInfo.StaEnSum).HasValue)
                        {
                            SetValue(sheet, i + 5, 17, (pInfo.StaExSum + pInfo.StaEnSum).ToString());
                        }
                        if (pInfo.StaExSum.HasValue)
                        {
                            SetValue(sheet, i + 5, 18, pInfo.StaExSum.ToString());
                        }
                        if (pInfo.StaEnSum.HasValue)
                        {
                            SetValue(sheet, i + 5, 19, pInfo.StaEnSum.ToString());
                        }
                        if (i == 0)//合计
                        {
                            if (pInfo.WorkPeoNum.HasValue)
                            {
                                SetValue(sheet, i + 5, 20, pInfo.WorkPeoNum.ToString());
                            }
                            SetValue(sheet, i + 5, 21, pInfo.InfoNum);
                            SetValue(sheet, i + 5, 22, pInfo.SitState);
                        }
                    }
                }
            }
            return(readworkbook);
        }
예제 #3
0
        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public IReportViewModel GetListByPra(QueryParameters para)
        {
            using (DataSubmittedEntities db = new DataSubmittedEntities())
            {
                if (db.RP_AADTSta.Count(s => s.CalculTime == para.StartTime.Value) <= 0)
                {
                    InsertNull(para.StartTime.Value);
                }

                QueryHDayTraInfoViewModel   pReturnData  = new QueryHDayTraInfoViewModel();
                List <HDayTraInfoViewModel> pAADTStaList = db.RP_AADTSta.Where(s => s.CalculTime == para.StartTime.Value).ToList().Select(s => new HDayTraInfoViewModel()
                {
                    Num          = 14,
                    LineSum      = s.LineSum,
                    LineExSum    = s.LineExSum,
                    LineEnSum    = s.LineEnSum,
                    FeeSum       = s.FeeSum,
                    SmaCarFeeNum = s.SmaCarFeeNum,
                    ExSmaCarFee  = s.ExSmaCarFee,
                    EnSmaCarFee  = s.EnSmaCarFee,
                    SmaCarFee    = s.SmaCarFee,
                    ChagSumNum   = s.ChagSumNum,
                    ExChagNum    = s.ExChagNum,
                    EnChagNum    = s.EnChagNum,
                    ChagAmount   = s.ChagAmount,
                    TollStaName  = SystemConst.TollStaName,
                    GreNum       = s.GreNum,
                    GreFee       = s.GreFee,
                    StaExSum     = s.StaExSum,
                    StaEnSum     = s.StaEnSum,
                    StaSum       = s.StaEnSum + s.StaExSum,
                    WorkPeoNum   = s.WorkPeoNum,
                    InfoNum      = s.InfoNum,
                    SitState     = s.SitState,
                    RoadName     = SystemConst.RoadName2
                }).ToList();
                //添加合计
                List <HDayTraInfoViewModel> pAADTStaListSum = db.RP_AADTSta.Where(s => s.CalculTime == para.StartTime.Value).ToList().Select(s => new HDayTraInfoViewModel()
                {
                    LineSum      = s.LineSum,
                    LineExSum    = s.LineExSum,
                    LineEnSum    = s.LineEnSum,
                    FeeSum       = s.FeeSum,
                    SmaCarFeeNum = s.SmaCarFeeNum,
                    ExSmaCarFee  = s.ExSmaCarFee,
                    EnSmaCarFee  = s.EnSmaCarFee,
                    SmaCarFee    = s.SmaCarFee,
                    ChagSumNum   = s.ChagSumNum,
                    ExChagNum    = s.ExChagNum,
                    EnChagNum    = s.EnChagNum,
                    ChagAmount   = s.ChagAmount,
                    GreNum       = s.GreNum,
                    GreFee       = s.GreFee,
                    StaExSum     = s.StaExSum,
                    StaEnSum     = s.StaEnSum,
                    StaSum       = s.StaEnSum + s.StaExSum,
                    RoadName     = SystemConst.ReportCount
                }).ToList();
                pAADTStaList.AddRange(pAADTStaListSum);
                if (pAADTStaList.Count == 0)//如果没有数据,进行添加
                {
                    for (int i = 0; i < 2; i++)
                    {
                        HDayTraInfoViewModel info = new HDayTraInfoViewModel();
                        info.RoadName = SystemConst.ReportCount;
                        if (i == 0)
                        {
                            info.RoadName    = SystemConst.RoadName2;
                            info.TollStaName = SystemConst.TollStaName;
                            info.Num         = 14;
                        }
                        pAADTStaList.Add(info);
                    }
                }
                else if (pAADTStaList.Count > 2)//如果大于两条,则进行删除
                {
                    pAADTStaList.RemoveRange(2, pAADTStaList.Count - 2);
                }
                //判断当前统计站类型,数据是否完整
                if (GetNoDataList(para).Count() > 0)
                {
                    pReturnData.IsFull = 0;//不完整
                }
                else
                {
                    pReturnData.IsFull = 1;//完整
                }
                pReturnData.ReportData = pAADTStaList.OrderByDescending(s => s.Num).ToList();
                return(pReturnData);
            }
        }