public async Task <PopularResult <List <VeComStaDto> > > GetVeComStaAsync(VeComStaQueryDto dto) { var result = new PopularResult <List <VeComStaDto> >(); var oilCostQuery = _oilCostRepoitory.Where(x => x.RefuelingTime >= dto.StartTime && x.RefuelingTime <= dto.EndTime).GroupBy(x => x.VehicleId).Select(x => new { VeId = x.Key, OilCost = x.Sum(i => i.Expend) }); var mileageQuery = _vehicleMileageRepository.Where(x => x.RecordDate >= dto.StartTime && x.RecordDate <= dto.EndTime).GroupBy(x => x.VehicleId).Select(x => new { VeId = x.Key, Mileage = (x.Max(i => i.Mileage) - x.Min(i => i.Mileage)) }); var maintenanceExpendQuery = _maintenanceRepository.Where(x => x.RecordTime >= dto.StartTime && x.RecordTime <= dto.EndTime).GroupBy(x => x.VehicleId).Select(x => new { VeId = x.Key, maintenanceExpend = x.Sum(i => i.Expend) }); var all = from v in _vehicleRepository.Where(x => x.IsDelete == 0).WhereIf(dto.UnitId.HasValue, x => x.UnitId == dto.UnitId.Value) join oil in oilCostQuery on v.Id equals oil.VeId into voil from newvoil in voil.DefaultIfEmpty() join mil in mileageQuery on v.Id equals mil.VeId into vmil from newvmil in vmil.DefaultIfEmpty() join mai in maintenanceExpendQuery on v.Id equals mai.VeId into vmai from newvmai in vmai.DefaultIfEmpty() select new VeComStaDto() { License = v.License, OilCost = newvoil.OilCost, Mileage = newvmil.Mileage, Maintenance = newvmai.maintenanceExpend }; var list = await AsyncExecuter.ToListAsync(all); result.Success(list); return(result); }
public async Task <PopularResult <byte[]> > GetComprehensiveAsync([FromQuery] VeComStaQueryDto dto) { var result = await _vehicleService.GetVeComStaAsync(dto); var ms = EPPlusHelper.GetMemoryStream(result.Data); return(new PopularResult <byte[]>() { Data = ms.ToArray() }); }
public async Task <PopularResult <List <VeComStaDto> > > GetSqAsync([FromQuery] VeComStaQueryDto dto) { return(await _vehicleService.GetVeComStaAsync(dto)); }