private HDayAADTViewModel GetFirst(HDayAADTViewModel model) { HDayAADTViewModel HdayInfo = new HDayAADTViewModel(); HdayInfo.LineType = 0; HdayInfo.ExNat = model.ExNat; HdayInfo.EnNat = model.EnNat; HdayInfo.NatSum = model.NatSum; HdayInfo.ExEqu = model.ExEqu; HdayInfo.EnEqu = model.EnEqu; HdayInfo.EquSum = model.EquSum; HdayInfo.CrowDeg = model.CrowDeg; HdayInfo.SmaEx = model.SmaEx; HdayInfo.SmaEn = model.SmaEn; HdayInfo.SmaSum = model.SmaSum; HdayInfo.MedEn = model.MedEn; HdayInfo.MedEx = model.MedEx; HdayInfo.MedSum = model.MedSum; HdayInfo.LarEx = model.LarEx; HdayInfo.LarEn = model.LarEn; HdayInfo.LarSum = model.LarSum; HdayInfo.HeaEn = model.HeaEn; HdayInfo.HeaEx = model.HeaEx; HdayInfo.HeaSum = model.HeaSum; HdayInfo.SupEn = model.SupEn; HdayInfo.SupEx = model.SupEx; HdayInfo.SupSum = model.SupSum; HdayInfo.EnExTrukNum = model.EnExTrukNum; HdayInfo.CarTrukPer = model.CarTrukPer; HdayInfo.SupTruNum = model.SupTruNum; HdayInfo.SupTruPer = model.SupTruPer; return(HdayInfo); }
/// <summary> /// 修改功能 /// </summary> /// <param name="args"></param> /// <returns></returns> public CustomResult Update(UHDayRoadStaViewModel args) { using (DataSubmittedEntities db = new DataSubmittedEntities()) { using (TransactionScope transaction = new TransactionScope()) { CustomResult pReturnValue = new CustomResult(); List <UpdateHDayRoadStaViewModel> list = args.DataInfo.Where(a => a.LineType != 0).ToList(); try { foreach (UpdateHDayRoadStaViewModel model in list) { var listHDayRoadSta = db.RP_HDayAADTSta.Where(a => a.CalcuTime == args.DataDate && a.LineType == model.LineType).ToList(); foreach (RP_HDayAADTSta hd in listHDayRoadSta) { // hd.LineType = model.LineType; hd.ExNat = model.ExNat; hd.EnNat = model.EnNat; hd.ExEqu = model.ExEqu; hd.EnEqu = model.EnEqu; //拥挤度-“拥挤度”=交通量(当量交通量)合计/设计交通量,保留四位小数; if (hd.ExEqu != null && hd.EnEqu != null) { HDayAADTViewModel model1 = new HDayAADTViewModel(); model1.LineType = model.LineType; Nullable <double> crowDeg = double.Parse(string.Format("{0:0.0000}", (hd.ExEqu + hd.EnEqu) / model1.DeTra)); hd.CrowDeg = crowDeg; } hd.SmaEx = model.SmaEx; hd.SmaEn = model.SmaEn; hd.MedEx = model.MedEx; hd.MedEn = model.MedEn; hd.LarEx = model.LarEx; hd.LarEn = model.LarEn; hd.HeaEx = model.HeaEx; hd.HeaEn = model.HeaEn; hd.SupEx = model.SupEx; hd.SupEn = model.SupEn; hd.EnExTrukNum = model.EnExTrukNum; //客车货车比例-客车货车比例=(交通量(自然交通量)合计-进出京货车数量)/进出京货车数量*100%,保留四位小数; if (hd.ExNat != null && hd.EnNat != null && hd.EnExTrukNum != null && hd.EnExTrukNum != null) { if (hd.EnExTrukNum != 0) { Nullable <double> carTrukPer = double.Parse(string.Format("{0:0.0000}", (hd.ExNat.Value + hd.EnNat.Value - hd.EnExTrukNum.Value) / hd.EnExTrukNum.Value)); hd.CarTrukPer = carTrukPer; } else { hd.CarTrukPer = 0; } } //进出京大货车以上车型数量-进出京大货车以上车型数量”=大型车(合计)+重型车(合计)+超大型车(合计)。 if (hd.LarEx != null && hd.LarEn != null && hd.HeaEx != null && hd.HeaEn != null && hd.SupEx != null && hd.SupEn != null) { Nullable <double> supTruNum = hd.LarEx.Value + hd.LarEn.Value + hd.HeaEx.Value + hd.HeaEn.Value + hd.SupEx.Value + hd.SupEn.Value; hd.SupTruNum = supTruNum; } //大货车以上占货车交通量比例-大货车以上占货车交通量比例(%)=进出京大货车以上车型的数量/进出京货车数量*100%,保留四位小数。 if (hd.SupTruNum != null && hd.EnExTrukNum != null) { if (hd.EnExTrukNum.Value != 0) { Nullable <double> supTruPer = double.Parse(string.Format("{0:0.0000}", hd.SupTruNum.Value / hd.EnExTrukNum.Value)); hd.SupTruPer = supTruPer; } else { hd.SupTruPer = 0; } } hd.UpdDate = DateTime.Now; hd.State = "1"; if (SessionManage.GetLoginUser() != null) { hd.UpdBy = SessionManage.GetLoginUser().UserName; } } db.SaveChanges(); } transaction.Complete(); pReturnValue.ResultKey = (byte)EResult.Succeed; pReturnValue.ResultValue = TipInfo.UpdateSuccess; return(pReturnValue); } catch (Exception ex) { Common.SystemLog.GetInstance().Log.Info(TipInfo.UpdateDataRepeat, ex); pReturnValue.ResultKey = (byte)EResult.Fail; pReturnValue.ResultValue = TipInfo.UpdateDataRepeat; return(pReturnValue); } } } }
/// <summary> /// 修改工作簿内容 /// </summary> /// <param name="readworkbook"></param> /// <param name="para"></param> /// <returns></returns> public IWorkbook GenerateSheet(IWorkbook readworkbook, QueryParameters para) { //获取工作簿 ISheet sheet = readworkbook.GetSheetAt(0); //设置日期 if (para.ReportType == 18) { SetReportDate(sheet, 1, 14, para.StartTime.Value, para.ReportType); } using (DataSubmittedEntities db = new DataSubmittedEntities()) { //设置表头 var holidayName = db.OT_Dic.Where(a => a.Id == para.HolidayId).Select(a => a.Name).ToList(); if (!string.IsNullOrEmpty(holidayName[0])) { SetValue(sheet, 0, 0, string.Format("{0}假期高速公路交通流量统计表", holidayName[0])); } //数据集合 List <HDayAADTViewModel> pHdayAADT = db.RP_HDayAADTSta.Where(s => s.CalcuTime == para.StartTime).Select(s => new HDayAADTViewModel() { LineType = s.LineType, ExNat = s.ExNat, EnNat = s.EnNat, NatSum = s.ExNat + s.EnNat, ExEqu = s.ExEqu, EnEqu = s.EnEqu, EquSum = s.ExEqu + s.EnEqu, CrowDeg = s.CrowDeg, SmaEx = s.SmaEx, SmaEn = s.SmaEn, SmaSum = s.SmaEx + s.SmaEn, MedEn = s.MedEn, MedEx = s.MedEx, MedSum = s.MedEx + s.MedEn, LarEx = s.LarEx, LarEn = s.LarEn, LarSum = s.LarEn + s.LarEx, HeaEn = s.HeaEn, HeaEx = s.HeaEx, HeaSum = s.HeaEx + s.HeaEn, SupEn = s.SupEn, SupEx = s.SupEx, SupSum = s.SupEn + s.SupEx, EnExTrukNum = s.EnExTrukNum, CarTrukPer = s.CarTrukPer, SupTruNum = s.SupTruNum, SupTruPer = s.SupTruPer }).ToList().OrderBy(s => s.Sorting).ToList(); if (pHdayAADT.Count > 0) { for (int i = 0; i < pHdayAADT.Count; i++) { SetValue(sheet, i + 5, 7, pHdayAADT[i].NatSum.ToString()); SetValue(sheet, i + 5, 8, pHdayAADT[i].ExNat.ToString()); SetValue(sheet, i + 5, 9, pHdayAADT[i].EnNat.ToString()); SetValue(sheet, i + 5, 10, pHdayAADT[i].EquSum.ToString()); SetValue(sheet, i + 5, 11, pHdayAADT[i].ExEqu.ToString()); SetValue(sheet, i + 5, 12, pHdayAADT[i].EnEqu.ToString()); SetValue(sheet, i + 5, 14, pHdayAADT[i].CrowDeg.ToString()); SetValue(sheet, i + 5, 15, pHdayAADT[i].SmaSum.ToString()); SetValue(sheet, i + 5, 16, pHdayAADT[i].SmaEx.ToString()); SetValue(sheet, i + 5, 17, pHdayAADT[i].SmaEn.ToString()); SetValue(sheet, i + 5, 18, pHdayAADT[i].MedSum.ToString()); SetValue(sheet, i + 5, 19, pHdayAADT[i].MedEx.ToString()); SetValue(sheet, i + 5, 20, pHdayAADT[i].MedEn.ToString()); SetValue(sheet, i + 5, 21, pHdayAADT[i].LarSum.ToString()); SetValue(sheet, i + 5, 22, pHdayAADT[i].LarEx.ToString()); SetValue(sheet, i + 5, 23, pHdayAADT[i].LarEn.ToString()); SetValue(sheet, i + 5, 24, pHdayAADT[i].HeaSum.ToString()); SetValue(sheet, i + 5, 25, pHdayAADT[i].HeaEx.ToString()); SetValue(sheet, i + 5, 26, pHdayAADT[i].HeaEn.ToString()); SetValue(sheet, i + 5, 27, pHdayAADT[i].SupSum.ToString()); SetValue(sheet, i + 5, 28, pHdayAADT[i].SupEx.ToString()); SetValue(sheet, i + 5, 29, pHdayAADT[i].SupEn.ToString()); SetValue(sheet, i + 5, 30, pHdayAADT[i].EnExTrukNum.ToString()); if (i == 5 && string.IsNullOrEmpty(pHdayAADT[i].CarTrukPer.ToString())) { SetValue(sheet, i + 5, 31, 0); } else { SetValue(sheet, i + 5, 31, pHdayAADT[i].CarTrukPer.ToString()); } SetValue(sheet, i + 5, 32, pHdayAADT[i].SupTruNum.ToString()); if (i == 5 && string.IsNullOrEmpty(pHdayAADT[i].SupTruPer.ToString())) { SetValue(sheet, i + 5, 33, 0); } else { SetValue(sheet, i + 5, 33, pHdayAADT[i].SupTruPer.ToString()); } } } if (pHdayAADT.Count(s => s.LineType == 3) > 0) { HDayAADTViewModel pHday = pHdayAADT.Where(s => s.LineType == 3).FirstOrDefault(); SetValue(sheet, 4, 7, pHday.NatSum.ToString()); SetValue(sheet, 4, 8, pHday.ExNat.ToString()); SetValue(sheet, 4, 9, pHday.EnNat.ToString()); SetValue(sheet, 4, 10, pHday.EquSum.ToString()); SetValue(sheet, 4, 11, pHday.ExEqu.ToString()); SetValue(sheet, 4, 12, pHday.EnEqu.ToString()); SetValue(sheet, 4, 14, pHday.CrowDeg.ToString()); SetValue(sheet, 4, 15, pHday.SmaSum.ToString()); SetValue(sheet, 4, 16, pHday.SmaEx.ToString()); SetValue(sheet, 4, 17, pHday.SmaEn.ToString()); SetValue(sheet, 4, 18, pHday.MedSum.ToString()); SetValue(sheet, 4, 19, pHday.MedEx.ToString()); SetValue(sheet, 4, 20, pHday.MedEn.ToString()); SetValue(sheet, 4, 21, pHday.LarSum.ToString()); SetValue(sheet, 4, 22, pHday.LarEx.ToString()); SetValue(sheet, 4, 23, pHday.LarEn.ToString()); SetValue(sheet, 4, 24, pHday.HeaSum.ToString()); SetValue(sheet, 4, 25, pHday.HeaEx.ToString()); SetValue(sheet, 4, 26, pHday.HeaEn.ToString()); SetValue(sheet, 4, 27, pHday.SupSum.ToString()); SetValue(sheet, 4, 28, pHday.SupEx.ToString()); SetValue(sheet, 4, 29, pHday.SupEn.ToString()); SetValue(sheet, 4, 30, pHday.EnExTrukNum.ToString()); SetValue(sheet, 4, 31, pHday.CarTrukPer.ToString()); SetValue(sheet, 4, 32, pHday.SupTruNum.ToString()); SetValue(sheet, 4, 33, pHday.SupTruPer.ToString()); } } return(readworkbook); }
/// <summary> /// 查询 /// </summary> /// <param name="para"></param> /// <returns></returns> public IReportViewModel GetListByPra(QueryParameters para) { QueryHDayAADTViewModel pReturnData = new QueryHDayAADTViewModel(); try { using (DataSubmittedEntities db = new DataSubmittedEntities()) { InsertNull(para.StartTime.Value); //获取报表18查询集合 List <HDayAADTViewModel> pHdayAADT = db.RP_HDayAADTSta.Where(s => s.CalcuTime == para.StartTime).Select(s => new HDayAADTViewModel() { LineType = s.LineType, ExNat = s.ExNat, EnNat = s.EnNat, NatSum = s.ExNat + s.EnNat, ExEqu = s.ExEqu, EnEqu = s.EnEqu, EquSum = s.ExEqu + s.EnEqu, CrowDeg = s.CrowDeg, SmaEx = s.SmaEx, SmaEn = s.SmaEn, SmaSum = s.SmaEx + s.SmaEn, MedEn = s.MedEn, MedEx = s.MedEx, MedSum = s.MedEx + s.MedEn, LarEx = s.LarEx, LarEn = s.LarEn, LarSum = s.LarEn + s.LarEx, HeaEn = s.HeaEn, HeaEx = s.HeaEx, HeaSum = s.HeaEx + s.HeaEn, SupEn = s.SupEn, SupEx = s.SupEx, SupSum = s.SupEn + s.SupEx, EnExTrukNum = s.EnExTrukNum, CarTrukPer = s.CarTrukPer, SupTruNum = s.SupTruNum, SupTruPer = s.SupTruPer }).ToList(); if (pHdayAADT.Count > 0) { pReturnData.IsEdit = 1; pReturnData.ReportData = pHdayAADT; } else { pReturnData.IsEdit = 0; for (int i = 1; i < 7; i++)//添加6条空数据 { HDayAADTViewModel pHdayInfo = new HDayAADTViewModel(); pHdayInfo.LineType = i; pHdayAADT.Add(pHdayInfo); } } //添加第一条(G2) HDayAADTViewModel pHdayInfofirst = pHdayAADT.Where(s => s.LineType == 3).SingleOrDefault(); pHdayAADT.Add(GetFirst(pHdayInfofirst)); //升序排序 pReturnData.ReportData = pHdayAADT.OrderBy(s => s.Sorting).ToList(); //判断当前统计站类型,数据是否完整 if (GetNoDataList(para).Count() > 0) { pReturnData.IsFull = 0;//不完整 } else { pReturnData.IsFull = 1;//完整 } return(pReturnData); } } catch (Exception ex) { SystemLog.GetInstance().Info(ex.Message); return(pReturnData); } }
/// <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); } }