private async Task <IEnumerable <ShipmentOrderInfoViewModel> > GetShipmentOrderInfoViewModels(ShipmentReportQuery reportQuery) { var manager = new ShipmentManager(User); var stopwatch = Stopwatch.StartNew(); var shipmentOrderInfos = await manager.GetShipmentOrderInfosAsync(reportQuery.GetShipmentOrderInfosQueryFilter()); stopwatch.Stop(); var shipmentOrderInfoViewModels = shipmentOrderInfos.Select(f => { var shipmentOrderInfoViewModel = Mapper.Map <ShipmentOrderInfo, ShipmentOrderInfoViewModel>(f); shipmentOrderInfoViewModel.CustomerName = f.Order.Customer.Name; shipmentOrderInfoViewModel.Hhz = Math.Round(f.GoldWeight * (1 + f.LossRate / 100), 2); shipmentOrderInfoViewModel.IsShipOnTime = f.Order.DeliveryDate.HasValue && f.ShipmentOrder.DeliveryDate < f.Order.DeliveryDate.Value ? "正常" : "逾期"; shipmentOrderInfoViewModel.DeliveryDate = f.ShipmentOrder.DeliveryDate.ToShortDateString(); return(shipmentOrderInfoViewModel); }).ToList(); var stopwatch2 = Stopwatch.StartNew(); if (shipmentOrderInfoViewModels.Any()) { var total = new ShipmentOrderInfoViewModel { Number = shipmentOrderInfoViewModels.Sum(r => r.Number), GoldWeight = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.GoldWeight), 2), Hhz = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.Hhz), 2), GoldAmount = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.GoldAmount), 2), SideStoneNumber = shipmentOrderInfoViewModels.Sum(r => r.SideStoneNumber), SideStoneWeight = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.SideStoneWeight), 2), TotalSetStoneWorkingCost = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.TotalSetStoneWorkingCost), 2), SideStoneTotalAmount = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.SideStoneTotalAmount), 2), BasicCost = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.BasicCost), 2), OutputWaxCost = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.OutputWaxCost), 2), RiskFee = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.RiskFee), 2), OtherCost = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.OtherCost), 2), TotalAmount = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.TotalAmount), 2), Weight = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.Weight), 2), IsShipOnTime = $"正常{shipmentOrderInfoViewModels.Count(r => r.IsShipOnTime == "正常")},逾期{shipmentOrderInfoViewModels.Count(r => r.IsShipOnTime == "逾期")}", }; shipmentOrderInfoViewModels.Add(total); } stopwatch2.Stop(); LoggerHelper.Logger.LogInformation($"获取数据耗时{stopwatch.ElapsedMilliseconds}毫秒,统计数据耗时{stopwatch2.ElapsedMilliseconds}毫秒"); return(shipmentOrderInfoViewModels); }
private async Task <IEnumerable <ShipmentOrderInfoViewModel> > GetShipmentOrderInfoViewModels(ShipmentReportQuery reportQuery) { var manager = new ShipmentManager(User); var shipmentOrderInfos = await manager.GetShipmentOrderInfosAsync(reportQuery.GetShipmentOrderInfosQueryFilter()); var shipmentOrderInfoViewModels = shipmentOrderInfos.Select(f => { var shipmentOrderInfoViewModel = Mapper.Map <ShipmentOrderInfo, ShipmentOrderInfoViewModel>(f); shipmentOrderInfoViewModel.Hhz = Math.Round(f.GoldWeight * (1 + f.LossRate / 100), 2); return(shipmentOrderInfoViewModel); }).ToList(); if (shipmentOrderInfoViewModels.Any()) { var total = new ShipmentOrderInfoViewModel { Id = "总计", Number = shipmentOrderInfoViewModels.Sum(r => r.Number), GoldWeight = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.GoldWeight), 2), Hhz = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.Hhz), 2), GoldAmount = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.GoldAmount), 2), SideStoneNumber = shipmentOrderInfoViewModels.Sum(r => r.SideStoneNumber), SideStoneWeight = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.SideStoneWeight), 2), TotalSetStoneWorkingCost = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.TotalSetStoneWorkingCost), 2), SideStoneTotalAmount = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.SideStoneTotalAmount), 2), BasicCost = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.BasicCost), 2), OutputWaxCost = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.OutputWaxCost), 2), RiskFee = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.RiskFee), 2), OtherCost = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.OtherCost), 2), TotalAmount = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.TotalAmount), 2), Weight = Math.Round(shipmentOrderInfoViewModels.Sum(r => r.Weight), 2), }; shipmentOrderInfoViewModels.Add(total); } return(shipmentOrderInfoViewModels); }