/// <summary> /// 添加合计 /// </summary> /// <param name="pHdayExInfo"></param> /// <returns></returns> private HDayExViewModel GetSum(HDayExViewModel pHdayExInfo) { //合计 HDayExViewModel pHdayExSumInfo = new HDayExViewModel(); pHdayExSumInfo.Num = 17; pHdayExSumInfo.Sum = pHdayExInfo.Sum; pHdayExSumInfo.LastSum = pHdayExInfo.LastSum; pHdayExSumInfo.Growth = pHdayExInfo.Growth; pHdayExSumInfo.RoadName = "总计"; pHdayExSumInfo.Tra1 = pHdayExInfo.Tra1; pHdayExSumInfo.Tra2 = pHdayExInfo.Tra2; pHdayExSumInfo.Tra3 = pHdayExInfo.Tra3; pHdayExSumInfo.Tra4 = pHdayExInfo.Tra4; pHdayExSumInfo.Tra5 = pHdayExInfo.Tra5; pHdayExSumInfo.Tra6 = pHdayExInfo.Tra6; pHdayExSumInfo.Tra7 = pHdayExInfo.Tra7; pHdayExSumInfo.Tra8 = pHdayExInfo.Tra8; pHdayExSumInfo.Tra9 = pHdayExInfo.Tra9; pHdayExSumInfo.Tra10 = pHdayExInfo.Tra10; pHdayExSumInfo.Tra11 = pHdayExInfo.Tra11; pHdayExSumInfo.Tra12 = pHdayExInfo.Tra12; pHdayExSumInfo.Tra13 = pHdayExInfo.Tra13; pHdayExSumInfo.Tra14 = pHdayExInfo.Tra14; pHdayExSumInfo.Tra15 = pHdayExInfo.Tra15; return pHdayExSumInfo; }
/// <summary> /// 查询 /// </summary> /// <param name="para"></param> /// <returns></returns> public IReportViewModel GetListByPra(QueryParameters para) { QueryHDayExViewModel pReturnData = new QueryHDayExViewModel(); List<HDayExViewModel> pTList = new List<HDayExViewModel>(); int pDataCount = 0; if (para.EndTime.Value >= para.StartTime.Value) { pDataCount = (para.EndTime.Value - para.StartTime.Value).Days + 1; } //添加标头 pReturnData.TitleList = new List<string>(); pReturnData.TitleList.Add("序号"); pReturnData.TitleList.Add("高速名称"); //日期天数 pReturnData.CountDay = pDataCount; for (int i = 0; i < 15; i++) { //日期 pReturnData.TitleList.Add(para.StartTime.Value.AddDays(i).ToString("M月d日")); } pReturnData.TitleList.Add("合计"); pReturnData.TitleList.Add("去年同期总流量"); pReturnData.TitleList.Add("同比增幅"); try { using (DataSubmittedEntities db = new DataSubmittedEntities()) { HDayExViewModel pHdayExInfo = new HDayExViewModel(); pHdayExInfo.RoadName = SystemConst.RoadName; for (int n = 0; n < pDataCount; n++) { DateTime? pDt = para.StartTime.Value.AddDays(n); //如果所选日期数据不存在,则进行添加 if (db.RP_HDayAADT.Where(s => DbFunctions.TruncateTime(s.CalcuTime) == pDt).ToList().Count <= 0) { if (pDt <= DateTime.Now) { InsertNull(pDt.Value); } } List<RP_HDayAADT> pHourAADTList = db.RP_HDayAADT.Where(s => DbFunctions.TruncateTime(s.CalcuTime) == pDt).ToList(); if (pHourAADTList.Count == 1) { //通过反射取字段名 Type myType = pHdayExInfo.GetType(); PropertyInfo pinfo = myType.GetProperty("Tra" + (n + 1)); //给字段赋值 double pTemp = pHourAADTList.SingleOrDefault().Out.Value; pinfo.SetValue(pHdayExInfo, pTemp); } } pHdayExInfo.Num = 15; pHdayExInfo.Sum = db.RP_HDayAADT.Where(s => DbFunctions.TruncateTime(s.CalcuTime) >= para.StartTime.Value && DbFunctions.TruncateTime(s.CalcuTime) <= para.EndTime.Value).Sum(s => s.Out); pHdayExInfo.LastSum = db.RP_HDayAADT.Where(s => DbFunctions.TruncateTime(s.CalcuTime) >= para.LastYearStart.Value && DbFunctions.TruncateTime(s.CalcuTime) <= para.LastYearEnd.Value).Sum(s => s.Out); if (pHdayExInfo.Sum.HasValue && pHdayExInfo.LastSum.HasValue && pHdayExInfo.LastSum != 0 && pHdayExInfo.LastSum != 0.0) pHdayExInfo.Growth = Math.Round((pHdayExInfo.Sum.Value - pHdayExInfo.LastSum.Value) / pHdayExInfo.LastSum.Value, 2); pTList.Add(pHdayExInfo); //添加合计 pTList.Add(GetSum(pHdayExInfo)); pReturnData.ReportData = pTList.OrderBy(s => s.Num).ToList(); //报表数据 //判断当前统计站类型,数据是否完整 if (GetNoDataList(para).Count() > 0) pReturnData.IsFull = 0;//不完整 else pReturnData.IsFull = 1;//完整 } } catch (Exception ex) { SystemLog.GetInstance().Info(ex.Message); } return pReturnData; }