public ActionResult ExportCustomerStatement() { #region 生成数据源 string strErrText; var request = HttpContext.Request; string strStartTime = request.QueryString["startTime"] ?? string.Empty; string strEndTime = request.QueryString["endTime"] ?? string.Empty; string strPayerName = request.QueryString["payerName"] ?? string.Empty; string strReceiverName = request.QueryString["receiverName"] ?? string.Empty; string strStartCountry = request.QueryString["startCountry"] ?? string.Empty; string strStartProvince = request.QueryString["startProvince"] ?? string.Empty; string strStartCity = request.QueryString["startCity"] ?? string.Empty; string strDestCountry = request.QueryString["destCountry"] ?? string.Empty; string strDestProvince = request.QueryString["destProvince"] ?? string.Empty; string strDestCity = request.QueryString["destCity"] ?? string.Empty; string strCarrierName = request.QueryString["carrierName"] ?? string.Empty; string strCarNo = request.QueryString["carNo"] ?? string.Empty; string strGoodsName = request.QueryString["goodsName"] ?? string.Empty; string strAllowStatementWhenConsignedDeliverPlanNotCompleted = request.QueryString["allowStatementWhenConsignedDeliverPlanNotCompleted"] ?? "false"; //读取数据 SettlementSystem settlement = new SettlementSystem(); List<CustomerStatement> listStatement = settlement.LoadCustomerStatementByConditions(strStartTime, strEndTime, strPayerName, strReceiverName, strStartCountry, strStartProvince, strStartCity, strDestCountry, strDestProvince, strDestCity, strCarrierName, strCarNo, strGoodsName, strAllowStatementWhenConsignedDeliverPlanNotCompleted, LoginAccountId, LoginStaffName, out strErrText); if (listStatement == null) { throw new Exception(strErrText); } //根据结算公式计算运费 foreach (CustomerStatement statement in listStatement) { if (statement.TransportCharges == 0 && statement.SettlementExpression != null && statement.SettlementExpression != string.Empty) { try { EvaluatorHelper evaluator = new EvaluatorHelper(); evaluator.SetExpression(statement.SettlementExpression); evaluator.AddVariable(InnoSoft.LS.Resources.Labels.KM, statement.KM == null || statement.KM == string.Empty ? "0" : statement.KM); evaluator.AddVariable(InnoSoft.LS.Resources.Labels.Tunnages, statement.TotalTunnages.ToString()); evaluator.AddVariable(InnoSoft.LS.Resources.Labels.Piles, statement.TotalPiles.ToString()); evaluator.AddVariable(InnoSoft.LS.Resources.Labels.TransportPrice, statement.TransportPrice.ToString()); evaluator.AddVariable(InnoSoft.LS.Resources.Labels.TransportCharges, "0"); string strTransportCharges = evaluator.EvaluateExpression(); statement.TransportCharges = decimal.Parse(strTransportCharges); } catch (Exception e) { throw e; } } } //计算拼车费 var grpShipmentNos = listStatement.GroupBy(s => s.ShipmentNo).OrderBy(s => s.Key); foreach (var grpShipmentNo in grpShipmentNos) { if (grpShipmentNo.Key != null && grpShipmentNo.Key != string.Empty) { List<CustomerStatement> listShipmentNoDetail = grpShipmentNo.ToList<CustomerStatement>(); int i = 0; while (i < listShipmentNoDetail.Count) { if (i > 0) { int j = 0; while (j < i) { if (listShipmentNoDetail[i].ReceiverAddress == listShipmentNoDetail[j].ReceiverAddress) { break; } j++; } if (j >= i) { listShipmentNoDetail[i].CarpoolFee = 100; } } i++; } } } //生成结果数据 List<CustomerStatement> listRet = new List<CustomerStatement>(); { //按客户分组 var grpCustomerNames = listStatement.GroupBy(f => f.CustomerName).OrderBy(f => f.Key); foreach (var grpCustomerName in grpCustomerNames) { List<CustomerStatement> data = grpCustomerName.ToList<CustomerStatement>(); listRet.AddRange(data); //生成小计行 CustomerStatement subtotal = new CustomerStatement(); subtotal.CustomerName = grpCustomerName.Key; subtotal.CreateTime = InnoSoft.LS.Resources.Labels.Subtotal; subtotal.TotalPackages = data.Sum(s => s.TotalPackages); subtotal.TotalTunnages = data.Sum(s => s.TotalTunnages); subtotal.TotalPiles = data.Sum(s => s.TotalPiles); subtotal.TotalTenThousands = data.Sum(s => s.TotalTenThousands); subtotal.TransportCharges = data.Sum(s => s.TransportCharges); subtotal.CarpoolFee = data.Sum(s => s.CarpoolFee); subtotal.RiverCrossingCharges = data.Sum(s => s.RiverCrossingCharges); listRet.Add(subtotal); } //生成合计行 CustomerStatement total = new CustomerStatement(); total.CustomerName = InnoSoft.LS.Resources.Labels.Total; total.TotalPackages = listStatement.Sum(s => s.TotalPackages); total.TotalTunnages = listStatement.Sum(s => s.TotalTunnages); total.TotalPiles = listStatement.Sum(s => s.TotalPiles); total.TotalTenThousands = listStatement.Sum(s => s.TotalTenThousands); total.TransportCharges = listStatement.Sum(s => s.TransportCharges); total.CarpoolFee = listStatement.Sum(s => s.CarpoolFee); total.RiverCrossingCharges = listStatement.Sum(s => s.RiverCrossingCharges); listRet.Add(total); } #endregion #region 导出Excel #region 创建Excel工作簿 var workbook = new HSSFWorkbook(); var sheet = workbook.CreateSheet(); #endregion #region 设置列宽度 int iCol = 0; sheet.SetColumnWidth(iCol++, 15 * 256);//客户名称 sheet.SetColumnWidth(iCol++, 10 * 256);//发货日期 sheet.SetColumnWidth(iCol++, 13 * 256);//计划单号 sheet.SetColumnWidth(iCol++, 11 * 256);//交货单号 if (listRet.FindAll(delegate(CustomerStatement cs) { return cs.ShipmentNo != null && cs.ShipmentNo != string.Empty; }).Count() > 0) { sheet.SetColumnWidth(iCol++, 11 * 256);//装运单号 } sheet.SetColumnWidth(iCol++, 15 * 256);//收货单位名称 sheet.SetColumnWidth(iCol++, 20 * 256);//收货单位地址 sheet.SetColumnWidth(iCol++, 6 * 256);//起点 sheet.SetColumnWidth(iCol++, 6 * 256);//讫点 sheet.SetColumnWidth(iCol++, 10 * 256);//车号 sheet.SetColumnWidth(iCol++, 10 * 256);//货物名称 if (listRet.Sum(cs => cs.TotalPackages) != 0) { sheet.SetColumnWidth(iCol++, 4 * 256);//件数 } if (listRet.Sum(cs => cs.TotalTunnages) != 0) { sheet.SetColumnWidth(iCol++, 9 * 256);//吨数 } if (listRet.Sum(cs => cs.TotalPiles) > 0) { sheet.SetColumnWidth(iCol++, 8 * 256);//垛数 } if (listRet.Sum(cs => cs.TotalTenThousands) > 0) { sheet.SetColumnWidth(iCol++, 8 * 256);//万只 } sheet.SetColumnWidth(iCol++, 6 * 256);//运费单价 sheet.SetColumnWidth(iCol++, 10 * 256);//运费金额 if (listRet.Sum(cs => cs.CarpoolFee) > 0) { sheet.SetColumnWidth(iCol++, 8 * 256);//拼车费 } if (listRet.Sum(cs => cs.RiverCrossingCharges) > 0) { sheet.SetColumnWidth(iCol++, 8 * 256);//过江费 } if (listRet.FindAll(delegate(CustomerStatement cs) { return cs.Remark != null && cs.Remark != string.Empty; }).Count() > 0) { sheet.SetColumnWidth(iCol++, 15 * 256);//备注 } if (listRet.FindAll(delegate(CustomerStatement cs) { return cs.Remark2 != null && cs.Remark2 != string.Empty; }).Count() > 0) { sheet.SetColumnWidth(iCol++, 15 * 256);//备注2 } sheet.SetColumnWidth(iCol++, 6 * 256);//回单标志 #endregion #region 创建表头 //标题 var rowTitle = sheet.CreateRow(0); rowTitle.HeightInPoints = 30; rowTitle.CreateCell(0).SetCellValue(strPayerName + InnoSoft.LS.Resources.Titles.CustomerTransportChargesStatement); ICellStyle styleTitle = workbook.CreateCellStyle(); styleTitle.Alignment = HorizontalAlignment.CENTER; IFont fontTitle = workbook.CreateFont(); fontTitle.FontHeightInPoints = 20; styleTitle.SetFont(fontTitle); rowTitle.GetCell(0).CellStyle = styleTitle; var rowTitle2 = sheet.CreateRow(1); rowTitle2.HeightInPoints = 22; rowTitle2.CreateCell(0).SetCellValue(strStartTime + InnoSoft.LS.Resources.Labels.Separator1 + strEndTime); ICellStyle styleTitle2 = workbook.CreateCellStyle(); styleTitle2.Alignment = HorizontalAlignment.CENTER; IFont fontTitle2 = workbook.CreateFont(); fontTitle2.FontHeightInPoints = 12; styleTitle2.SetFont(fontTitle2); rowTitle2.GetCell(0).CellStyle = styleTitle2; //表头 ICellStyle styleLeft = workbook.CreateCellStyle(); styleLeft.Alignment = HorizontalAlignment.LEFT; styleLeft.BorderBottom = CellBorderType.THIN; styleLeft.BorderLeft = CellBorderType.THIN; styleLeft.BorderRight = CellBorderType.THIN; styleLeft.BorderTop = CellBorderType.THIN; ICellStyle styleCenter = workbook.CreateCellStyle(); styleCenter.Alignment = HorizontalAlignment.CENTER; styleCenter.BorderBottom = CellBorderType.THIN; styleCenter.BorderLeft = CellBorderType.THIN; styleCenter.BorderRight = CellBorderType.THIN; styleCenter.BorderTop = CellBorderType.THIN; ICellStyle styleRight = workbook.CreateCellStyle(); styleRight.Alignment = HorizontalAlignment.RIGHT; styleRight.BorderBottom = CellBorderType.THIN; styleRight.BorderLeft = CellBorderType.THIN; styleRight.BorderRight = CellBorderType.THIN; styleRight.BorderTop = CellBorderType.THIN; var rowHeader = sheet.CreateRow(2); iCol = 0; rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.CustomerName);//客户名称 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.DeliverDate);//发货日期 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.PlanNo);//计划单号 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.DeliveryNo);//交货单号 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; if (listRet.FindAll(delegate(CustomerStatement cs) { return cs.ShipmentNo != null && cs.ShipmentNo != string.Empty; }).Count() > 0) { rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.ShipmentNo);//装运单号 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; } rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.ReceiverName);//收货单位名称 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.ReceiverAddress);//收货单位地址 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.StartPlace);//起点 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.DestPlace);//讫点 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.CarNo);//车号 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.GoodsName);//货物名称 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; if (listRet.Sum(cs => cs.TotalPackages) != 0) { rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.Pieces);//件数 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; } if (listRet.Sum(cs => cs.TotalTunnages) != 0) { rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.Tunnages);//吨数 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; } if (listRet.Sum(cs => cs.TotalPiles) > 0) { rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.Piles);//垛数 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; } if (listRet.Sum(cs => cs.TotalTenThousands) > 0) { rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.TenThousands);//万只 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; } rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.TransportPrice);//运费单价 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.TransportCharges);//运费金额 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; if (listRet.Sum(cs => cs.CarpoolFee) > 0) { rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.CarpoolFee);//拼车费 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; } if (listRet.Sum(cs => cs.RiverCrossingCharges) > 0) { rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.RiverCrossingCharges);//过江费 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; } if (listRet.FindAll(delegate(CustomerStatement cs) { return cs.Remark != null && cs.Remark != string.Empty; }).Count() > 0) { rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.Remark);//备注 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; } if (listRet.FindAll(delegate(CustomerStatement cs) { return cs.Remark2 != null && cs.Remark2 != string.Empty; }).Count() > 0) { rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.Remark + "2");//备注 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; } rowHeader.CreateCell(iCol++).SetCellValue(InnoSoft.LS.Resources.Labels.ReceiptReceived);//回单标志 rowHeader.GetCell(iCol - 1).CellStyle = styleCenter; sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, iCol - 1)); sheet.AddMergedRegion(new CellRangeAddress(1, 1, 0, iCol - 1)); #endregion #region 创建表体 int iRow = 3; foreach (var ret in listRet) { var rowBody = sheet.CreateRow(iRow++); iCol = 0; rowBody.CreateCell(iCol++).SetCellValue(ret.CustomerName);//客户名称 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; rowBody.CreateCell(iCol++).SetCellValue(ret.CreateTime);//发货日期 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; rowBody.CreateCell(iCol++).SetCellValue(ret.PlanNo);//计划单号 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; rowBody.CreateCell(iCol++).SetCellValue(ret.DeliveryNo);//交货单号 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; if (listRet.FindAll(delegate(CustomerStatement cs) { return cs.ShipmentNo != null && cs.ShipmentNo != string.Empty; }).Count() > 0) { rowBody.CreateCell(iCol++).SetCellValue(ret.ShipmentNo);//装运单号 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; } rowBody.CreateCell(iCol++).SetCellValue(ret.ReceiverName);//收货单位名称 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; rowBody.CreateCell(iCol++).SetCellValue(ret.ReceiverAddress);//收货单位地址 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; rowBody.CreateCell(iCol++).SetCellValue(ret.StartCity);//起点 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; rowBody.CreateCell(iCol++).SetCellValue(ret.ReceiverCity);//讫点 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; rowBody.CreateCell(iCol++).SetCellValue(ret.CarNo);//车号 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; rowBody.CreateCell(iCol++).SetCellValue(ret.GoodsName);//货物名称 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; if (listRet.Sum(cs => cs.TotalPackages) != 0) { rowBody.CreateCell(iCol++).SetCellValue(ret.TotalPackages != 0 ? ret.TotalPackages.ToString() : string.Empty);//件数 rowBody.GetCell(iCol - 1).CellStyle = styleCenter; } if (listRet.Sum(cs => cs.TotalTunnages) != 0) { rowBody.CreateCell(iCol++).SetCellValue(ret.TotalTunnages != 0 ? ret.TotalTunnages.ToString("#0.######") : string.Empty);//吨数 rowBody.GetCell(iCol - 1).CellStyle = styleCenter; } if (listRet.Sum(cs => cs.TotalPiles) > 0) { rowBody.CreateCell(iCol++).SetCellValue(ret.TotalPiles > 0 ? ret.TotalPiles.ToString("#0.######") : string.Empty);//垛数 rowBody.GetCell(iCol - 1).CellStyle = styleCenter; } if (listRet.Sum(cs => cs.TotalTenThousands) > 0) { rowBody.CreateCell(iCol++).SetCellValue(ret.TotalTenThousands > 0 ? ret.TotalTenThousands.ToString("#0.######") : string.Empty);//万只 rowBody.GetCell(iCol - 1).CellStyle = styleCenter; } rowBody.CreateCell(iCol++).SetCellValue(ret.TransportPrice > 0 ? ret.TransportPrice.ToString("#0.00####") : string.Empty);//运费单价 rowBody.GetCell(iCol - 1).CellStyle = styleRight; rowBody.CreateCell(iCol++).SetCellValue(ret.TransportCharges != 0 ? ret.TransportCharges.ToString("N2") : string.Empty);//运费金额 rowBody.GetCell(iCol - 1).CellStyle = styleRight; if (listRet.Sum(cs => cs.CarpoolFee) > 0) { rowBody.CreateCell(iCol++).SetCellValue(ret.CarpoolFee > 0 ? ret.CarpoolFee.ToString("N2") : string.Empty);//拼车费 rowBody.GetCell(iCol - 1).CellStyle = styleRight; } if (listRet.Sum(cs => cs.RiverCrossingCharges) > 0) { rowBody.CreateCell(iCol++).SetCellValue(ret.RiverCrossingCharges > 0 ? ret.RiverCrossingCharges.ToString("N2") : string.Empty);//过江费 rowBody.GetCell(iCol - 1).CellStyle = styleRight; } if (listRet.FindAll(delegate(CustomerStatement cs) { return cs.Remark != null && cs.Remark != string.Empty; }).Count() > 0) { rowBody.CreateCell(iCol++).SetCellValue(ret.Remark);//备注 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; } if (listRet.FindAll(delegate(CustomerStatement cs) { return cs.Remark2 != null && cs.Remark2 != string.Empty; }).Count() > 0) { rowBody.CreateCell(iCol++).SetCellValue(ret.Remark2);//备注 rowBody.GetCell(iCol - 1).CellStyle = styleLeft; } rowBody.CreateCell(iCol++).SetCellValue(ret.DeliverBillReceiptReceived ? InnoSoft.LS.Resources.Options.Yes : InnoSoft.LS.Resources.Options.No);//回单标志 rowBody.GetCell(iCol - 1).CellStyle = styleCenter; } #endregion #region 输出Excel文件 MemoryStream output = new MemoryStream(); workbook.Write(output); return File(output.ToArray(), "application/vnd.ms-excel", "CustomerStatement.xls"); #endregion #endregion }
public JsonResult LoadStatCustomerStatementGrid(string sidx, string sord, int page, int rows, string startTime, string endTime, string payerName, string receiverName, string startCountry, string startProvince, string startCity, string destCountry, string destProvince, string destCity, string carrierName, string carNo, string goodsName, string allowStatementWhenConsignedDeliverPlanNotCompleted) { //读取数据 string strErrText; SettlementSystem settlement = new SettlementSystem(); List<CustomerStatement> listStatement = settlement.LoadCustomerStatementByConditions(startTime, endTime, payerName, receiverName, startCountry, startProvince, startCity, destCountry, destProvince, destCity, carrierName, carNo, goodsName, allowStatementWhenConsignedDeliverPlanNotCompleted, LoginAccountId, LoginStaffName, out strErrText); if (listStatement == null) { throw new Exception(strErrText); } //根据结算公式计算运费 foreach (CustomerStatement statement in listStatement) { if (statement.TransportCharges == 0 && statement.SettlementExpression != null && statement.SettlementExpression != string.Empty) { try { EvaluatorHelper evaluator = new EvaluatorHelper(); evaluator.SetExpression(statement.SettlementExpression); evaluator.AddVariable(InnoSoft.LS.Resources.Labels.KM, statement.KM == null || statement.KM == string.Empty ? "0" : statement.KM); evaluator.AddVariable(InnoSoft.LS.Resources.Labels.Tunnages, statement.TotalTunnages.ToString()); evaluator.AddVariable(InnoSoft.LS.Resources.Labels.Piles, statement.TotalPiles.ToString()); evaluator.AddVariable(InnoSoft.LS.Resources.Labels.TransportPrice, statement.TransportPrice.ToString()); evaluator.AddVariable(InnoSoft.LS.Resources.Labels.TransportCharges, "0"); string strTransportCharges = evaluator.EvaluateExpression(); statement.TransportCharges = decimal.Parse(strTransportCharges); } catch (Exception e) { throw e; } } } //计算拼车费 var grpShipmentNos = listStatement.GroupBy(s => s.ShipmentNo).OrderBy(s => s.Key); foreach (var grpShipmentNo in grpShipmentNos) { if (grpShipmentNo.Key != null && grpShipmentNo.Key != string.Empty) { List<CustomerStatement> listShipmentNoDetail = grpShipmentNo.ToList<CustomerStatement>(); int i = 0; while (i < listShipmentNoDetail.Count) { if (i > 0) { int j = 0; while (j < i) { if (listShipmentNoDetail[i].ReceiverAddress == listShipmentNoDetail[j].ReceiverAddress) { break; } j++; } if (j >= i) { listShipmentNoDetail[i].CarpoolFee = 100; } } i++; } } } //提取当前页面数据 int nTotalRows = listStatement.Count; int nPageIndex = page; int nPageSize = rows; int nTotalPages = nTotalRows / nPageSize; if (nTotalRows % nPageSize > 0) nTotalPages++; string sortExpression = (sidx ?? "CreateTime") + " " + (sord ?? "ASC"); var data = listStatement.OrderBy(sortExpression).Skip((nPageIndex - 1) * nPageSize).Take(nPageSize).ToList(); //生成表格数据 var ret = new { total = nTotalPages, page = nPageIndex, records = nTotalRows, rows = ( from s in data select new { id = s.Id, cell = new string[] { s.Id.ToString(), s.CustomerName, s.CreateTime, s.PlanNo, s.DeliverBillNo, s.ShipmentNo, s.DeliveryNo, s.ReceiverName, s.ReceiverAddress, s.StartCity, s.ReceiverCity, s.KM, s.CarNo, s.GoodsName, s.TotalPackages.ToString(), s.TotalTunnages.ToString("#0.######"), s.TotalPiles.ToString("#0.######"), s.TotalTenThousands.ToString("#0.######"), s.TransportPrice.ToString("#0.######"), s.SettlementExpression, s.TransportCharges.ToString(), s.CarpoolFee.ToString(), s.RiverCrossingCharges.ToString(), s.Remark, s.Remark2, s.DeliverBillReceiptReceived.ToString(), s.InvoiceNo } }).ToArray(), userdata = new { CustomerName = InnoSoft.LS.Resources.Labels.Total, Packages = data.Sum(s => s.TotalPackages), Tunnages = data.Sum(s => s.TotalTunnages), Piles = data.Sum(s => s.TotalPiles), TenThousands = data.Sum(s => s.TotalTenThousands), TransportCharges = data.Sum(s => s.TransportCharges), CarpoolFee = data.Sum(s => s.CarpoolFee), RiverCrossingCharges = data.Sum(s => s.RiverCrossingCharges) } }; return Json(ret, JsonRequestBehavior.AllowGet); }