/// <summary>
        /// 预测导出--如果需要将入出口数据进行区分,则分别放在两个list的集合中,若不需区分,则将数据放入list1中,list2为空即可
        /// </summary>
        /// <param name="readworkbook"></param>
        /// <param name="para"></param>
        /// <param name="list1"></param>
        /// <param name="list2"></param>
        /// <returns></returns>
        public NPOI.SS.UserModel.IWorkbook GenerateSheet(NPOI.SS.UserModel.IWorkbook readworkbook, Common.QueryParameters para, List <Common.ViewModels.IReportViewModel> list1, List <Common.ViewModels.IReportViewModel> list2)
        {
            //获取工作簿
            if (readworkbook != null)
            {
                ISheet sheet = readworkbook.GetSheetAt(0);
                //设置日期
                SetReportDate(sheet, 0, 13, DateTime.Parse(DateTime.Now.ToShortDateString()), para.ReportType);
                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    if (list1 != null && list1.Count > 0)
                    {
                        ForecastEnExViewModel pInfo = list1.First() as ForecastEnExViewModel;

                        //高速
                        SetValue(sheet, 5, 1, pInfo.EnSmaCar.ToString()); //小型客车
                        SetValue(sheet, 5, 2, pInfo.EnOthCar.ToString()); //其他客车
                        SetValue(sheet, 5, 3, pInfo.EnTruk.ToString());   //货车数
                        SetValue(sheet, 5, 4, pInfo.EnGre.ToString());    //绿色通道数

                        SetValue(sheet, 5, 5, pInfo.ExSmaCar.ToString()); //小型客车
                        SetValue(sheet, 5, 6, pInfo.ExOthCar.ToString()); //其他客车
                        SetValue(sheet, 5, 7, pInfo.ExTruk.ToString());   //货车数
                        SetValue(sheet, 5, 8, 0);                         //pInfo.EnGre.ToString());//绿色通道数

                        //普通
                        SetValue(sheet, 5, 9, 0);  //小型客车
                        SetValue(sheet, 5, 10, 0); //其他客车
                        SetValue(sheet, 5, 11, 0); //高速入境货车数
                        SetValue(sheet, 5, 12, 0); //绿色通道数

                        SetValue(sheet, 5, 13, 0); //小型客车
                        SetValue(sheet, 5, 14, 0); //其他客车
                        SetValue(sheet, 5, 15, 0); //高速入境货车数
                        SetValue(sheet, 5, 16, 0); //绿色通道数
                    }
                }
            }
            return(readworkbook);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 预测导出--如果需要将入出口数据进行区分,则分别放在两个list的集合中,若不需区分,则将数据放入list1中,list2为空即可
        /// </summary>
        /// <param name="readworkbook"></param>
        /// <param name="para"></param>
        /// <param name="list1"></param>
        /// <param name="list2"></param>
        /// <returns></returns>
        public NPOI.SS.UserModel.IWorkbook GenerateSheet(NPOI.SS.UserModel.IWorkbook readworkbook, Common.QueryParameters para, List <Common.ViewModels.IReportViewModel> list1, List <Common.ViewModels.IReportViewModel> list2)
        {
            //获取工作簿
            if (readworkbook != null)
            {
                ISheet sheet = readworkbook.GetSheetAt(0);

                using (DataSubmittedEntities db = new DataSubmittedEntities())
                {
                    if (list1 != null && list1.Count > 0)
                    {
                        ForecastEnExViewModel pInfo = list1.First() as ForecastEnExViewModel;

                        //高速入境
                        SetValue(sheet, 5, 1, pInfo.EnSmaCar.ToString()); //小型客车
                        SetValue(sheet, 5, 2, pInfo.EnOthCar.ToString()); //其他客车
                        SetValue(sheet, 5, 3, pInfo.EnTruk.ToString());   //高速入境货车数
                        SetValue(sheet, 5, 4, 0);                         //pInfo.EnGre.ToString());//绿色通道数
                    }
                }
            }
            return(readworkbook);
        }
Ejemplo n.º 3
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);
        }