public List<StopCarReportVM> GetStopCarReport(StopCarReportParam param) { try { Dictionary<Guid, VCountStopCar> dicStop = new StopCarReportService().Count(param.VehicleCodes, param.BeginTime, param.EndTime, param.Second, param.TenantCode); if (dicStop == null) { dicStop = new Dictionary<Guid, VCountStopCar>(); } List<StopCarReportVM> ltVM = new List<StopCarReportVM>(); param.Vehicles = param.Vehicles.OrderBy(s => s.LicenceNumber).ToList(); foreach (var item in param.Vehicles) { StopCarReportVM vm = new StopCarReportVM(); vm.Index = ltVM.Count + 1; vm.VehicleCode = item.VehicleCode; vm.LicenceNumber = item.LicenceNumber; if (dicStop.ContainsKey(item.VehicleCode)) { VCountStopCar v = dicStop[item.VehicleCode]; vm.CountTime = v.CountTime; vm.Count = v.Count; } ltVM.Add(vm); } return ltVM; } catch (Exception ex) { Logger.Error(ex.Message); return null; } }
/// <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; } }