public async Task <FileStreamResult> OrderMainStoneStatisticsExport(ShipmentReportQuery reportQuery) { var manager = new OrderMainStoneInfoManager(User); var mainStones = await manager.GetOrderMainStoneStatisticsAsync(reportQuery); var titles = new string[] { "序号", "客户", "单号", "主石名称", "主石大小", "风险等级", "收石日期" }; var result = Dickson.Web.Helper.ExcelHelp.Export(titles, "主石收石记录", ws => { var row = 2; int index = 1; foreach (var mainStone in mainStones) { ws.Cells[row, 1].Value = index; ws.Cells[row, 2].Value = mainStone.CustomerName; ws.Cells[row, 3].Value = mainStone.OrderId; ws.Cells[row, 4].Value = mainStone.MainStoneName; ws.Cells[row, 5].Value = mainStone.MainStoneWeight; ws.Cells[row, 6].Value = mainStone.Risk; ws.Cells[row, 7].Value = mainStone.Created; row++; index++; } }); return(result); }
public async Task <ActionResult> ShipmentStatistics(ShipmentReportQuery reportQuery) { if (!Request.IsAjaxRequest()) { return(View(reportQuery)); } var shipmentOrderInfoViewModels = await GetShipmentOrderInfoViewModels(reportQuery); return(Json(true, string.Empty, shipmentOrderInfoViewModels)); }
public async Task <FileStreamResult> ShipmentStatisticsExport(ShipmentReportQuery reportQuery) { var shipmentOrderInfoViewModels = await GetShipmentOrderInfoViewModels(reportQuery); var titles = new string[] { "序号", "客户", "订单号", "品类", "出货日期", "件数", "净金重(g)", "含耗重(g)", "金料额", "副石数", "副石重", "镶石工费", "副石额", "基本工费", "出蜡倒模", "石值/风险", "其他工艺", "总额", "正常/逾期" }; var result = Dickson.Web.Helper.ExcelHelp.Export(titles, "出货单明细", ws => { var row = 2; int index = 1; foreach (var shipmentOrderInfo in shipmentOrderInfoViewModels) { ws.Cells[row, 1].Value = index; ws.Cells[row, 2].Value = string.IsNullOrEmpty(shipmentOrderInfo.CustomerName) ? "总计:" : shipmentOrderInfo.CustomerName; ws.Cells[row, 3].Value = shipmentOrderInfo.Id; ws.Cells[row, 4].Value = shipmentOrderInfo.ProductCategoryName; ws.Cells[row, 5].Value = shipmentOrderInfo.DeliveryDate; ws.Cells[row, 6].Value = shipmentOrderInfo.Number; ws.Cells[row, 7].Value = shipmentOrderInfo.GoldWeight; ws.Cells[row, 8].Value = shipmentOrderInfo.Hhz; ws.Cells[row, 9].Value = shipmentOrderInfo.GoldAmount; ws.Cells[row, 10].Value = shipmentOrderInfo.SideStoneNumber; ws.Cells[row, 11].Value = shipmentOrderInfo.SideStoneWeight; ws.Cells[row, 12].Value = shipmentOrderInfo.TotalSetStoneWorkingCost; ws.Cells[row, 13].Value = shipmentOrderInfo.SideStoneTotalAmount; ws.Cells[row, 14].Value = shipmentOrderInfo.BasicCost; ws.Cells[row, 15].Value = shipmentOrderInfo.OutputWaxCost; ws.Cells[row, 16].Value = shipmentOrderInfo.RiskFee; ws.Cells[row, 17].Value = shipmentOrderInfo.OtherCost; ws.Cells[row, 18].Value = shipmentOrderInfo.TotalAmount; ws.Cells[row, 19].Value = shipmentOrderInfo.IsShipOnTime; row++; index++; } }); return(result); }
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); }
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); }