private Dictionary<Guid, int> CountOverSpeed(ReportSummaryParam param) { var listVm = GetOverSpeedReportViewModel(new OverSpeedReportWCFPara() { BeginTime = param.BeginTime, EndTime = param.EndTime, LicenceNumberList = param.Vehicles.Select(s => s.LicenceNumber).ToArray(), VehicleCodeList = param.VehicleCodes.ToArray() }); Dictionary<Guid, int> dic = new Dictionary<Guid, int>(); if (!listVm.IsNullOrEmpty()) { dic = listVm.ToDictionary(s => s.VehicleCode, s => s.OverSpeedCount); } return dic; }
/// <summary> /// 报表汇总 /// </summary> /// <param name="param"></param> /// <returns></returns> public List<ReportSummaryVM> CountReport(ReportSummaryParam param) { try { ReportMileageWCFPara mileageParam = new ReportMileageWCFPara() { BeginTime = param.BeginTime, EndTime = param.EndTime, tenantCode = param.TenantCode, VehicleCode = param.Vehicles.Select(s => s.VehicleCode).ToArray(), LicenceNumber = param.Vehicles.Select(s => s.LicenceNumber).ToArray() }; //List<ReportMileageViewModel> listMileage = this.GetMileage(mileageParam);执行使用8.22s //查询车辆里程的代码优化 List<ReportMileageViewModel> listMileage = this.GetNewMileage(mileageParam);//执行使用5.74s IAlertReportBase reportBase = new AlertReportBase(); var ltVehicleCode = param.Vehicles.Select(s => s.VehicleCode).ToList(); Dictionary<Guid, VCountStopCar> dicStop = new StopCarReportService().Count(ltVehicleCode, param.BeginTime, param.EndTime, StopCar_Time, param.TenantCode); Dictionary<Guid, int> dicRob = reportBase.Count<ERobAlertReport>(ltVehicleCode, param.BeginTime, param.EndTime); Dictionary<Guid, int> dicPowerdown = reportBase.Count<EPowerDownAlertReport>(ltVehicleCode, param.BeginTime, param.EndTime); Dictionary<Guid, int> dicOverSpeed = CountOverSpeed(param); var dicParam = new Dictionary<string, object>(); dicParam.Add("IsInArea", true); //入区域条件 dicParam.Add("IsDelayStay", false); //非延迟出区域 Dictionary<Guid, int> dicArea = reportBase.Count<EAreaAlertReport>(ltVehicleCode, param.BeginTime, param.EndTime, dicParam); return CrateReportSummaryVM(param.Vehicles, listMileage, dicStop, dicPowerdown, dicRob, dicOverSpeed, dicArea); } catch (Exception ex) { Logger.Error(ex.Message, ex); return null; } }