예제 #1
0
        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);
        }
예제 #2
0
        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()
            });
        }
예제 #3
0
 public async Task <PopularResult <List <VeComStaDto> > > GetSqAsync([FromQuery] VeComStaQueryDto dto)
 {
     return(await _vehicleService.GetVeComStaAsync(dto));
 }