/// <summary> /// 添加团队票 /// </summary> /// <param name="data"></param> /// <param name="sb"></param> private static void AddTeamTicket(PrintReportData data, StringBuilder sb) { if (data.PrintTeamTicket.TotalCount <= 0) { return; } sb.Append("................................\r\n"); sb.Append("\r\n团队票: \r\n"); sb.Append("<table>"); sb.Append("<tr><td>品名</td><td>数量</td><td>小计</td></tr>"); List <PrintTicketData> TeamReadyMoney = data.PrintTeamTicket.ReadyMoney; if (TeamReadyMoney.Count > 0) { sb.AppendFormat("<tr><td>* 现金支付</td><td>{0}</td><td>{1}</td></tr>", TeamReadyMoney.Sum(p => p.TotalCount), TeamReadyMoney.Sum(p => p.TotalAmount)); foreach (var row in TeamReadyMoney) { sb.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}元</td></tr>", row.TicketName, row.TotalCount, row.TotalAmount); } } List <PrintTicketData> TeamWechat = data.PrintTeamTicket.Wechat; if (TeamWechat.Count > 0) { sb.AppendFormat("<tr><td>* 微信支付</td><td>{0}</td><td>{1}</td></tr>", TeamWechat.Sum(p => p.TotalCount), TeamWechat.Sum(p => p.TotalAmount)); foreach (var row in TeamWechat) { sb.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}元</td></tr>", row.TicketName, row.TotalCount, row.TotalAmount); } } List <PrintTicketData> TeamAlipay = data.PrintTeamTicket.Alipay; if (TeamAlipay.Count > 0) { sb.AppendFormat("<tr><td>* 支付宝支付</td><td>{0}</td><td>{1}</td></tr>", TeamAlipay.Sum(p => p.TotalCount), TeamAlipay.Sum(p => p.TotalAmount)); foreach (var row in TeamAlipay) { sb.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}元</td></tr>", row.TicketName, row.TotalCount, row.TotalAmount); } } sb.Append("</table>"); }
private static string GetReportContext(PrintReportData data) { StringBuilder sb = new StringBuilder(); sb.Append("<center> 日结报表 </center>\r\n"); sb.AppendFormat("\r\n开始时间: {0}\r\n", data.StartTime); sb.AppendFormat("\r\n结束时间: {0}\r\n", data.EndTime); AddBulkTicket(data, sb); AddTeamTicket(data, sb); sb.Append("................................\r\n\r\n"); sb.AppendFormat("\r\n售票总数量: {0}\r\n", data.TotalCount); sb.AppendFormat("\r\n售票总金额: {0}\r\n", data.TotalAmount); if (data.RefundTotalCount > 0) { sb.AppendFormat("\r\n退款总数量: {0}\r\n", data.RefundTotalCount); sb.AppendFormat("\r\n退款总金额: {0}\r\n", data.RefundTotalAmount); } sb.AppendFormat("\r\n售票员: {0} \r\n", data.RealName); //sb.AppendFormat("\r\n总数量: {0} 总金额: {0}\r\n", data.OrderNo); return(sb.ToString()); }
/// <summary> /// 打印日结报表 /// </summary> /// <returns></returns> public TResult Daily(string printKey) { var result = new TResult(); var printConfigData = _printGateway.Get(printKey); if (printConfigData == null) { return(result.FailureResult("打印机配置不正确")); } var reportList = new ReportStatisticsModel { List = new List <TicketSaleCount>() }; var user = _enterpriseUserService.LoginForSession(); var nowDate = DateTime.Now.Date; var endTime = nowDate.AddDays(1); var list = _orderDetailRepository.db.Queryable <Tbl_OrderDetail, Tbl_Ticket, Tbl_Order, Tbl_TicketType>((a, b, c, d) => new object[] { JoinType.Left, a.TicketId == b.TicketId, JoinType.Inner, a.OrderNo == c.OrderNo, JoinType.Left, b.TypeId == d.Id }) .Where((a, b, c, d) => a.ScenicId == user.ScenicId && a.SellerId == user.UserId && c.SellerId == user.UserId && a.TicketSource == (int)TicketSourceStatus.ScenicSpot && a.CreateTime >= nowDate && a.CreateTime < endTime && ((a.OrderStatus == (int)OrderDetailsDataStatus.IsTaken) || (a.OrderStatus == (int)OrderDetailsDataStatus.Activate) || (a.OrderStatus == (int)OrderDetailsDataStatus.Consume) || (a.OrderStatus == (int)OrderDetailsDataStatus.Canncel) || (a.OrderStatus == (int)OrderDetailsDataStatus.Refund))) .Select((a, b, c, d) => new { OrderDtlId = a.OrderDetailId, TicketId = a.TicketId, TicketName = a.TicketName, TicketType = d.TicketType, OrderNo = a.OrderNo, PayType = (PayStatus)c.PayType, OrderType = a.OrderType, Price = a.Price, Quantity = a.Quantity, ShelvesChannel = b.ShelvesChannel, OrderStatus = a.OrderStatus, CreateTime = a.CreateTime }).ToList(); if (list.Count <= 0) { return(result.FailureResult("今天售卖门票数量为0,不能打印")); } var refundList = list.Where(p => p.OrderStatus == (int)OrderDetailsDataStatus.Refund).ToList(); var startData = list.OrderBy(a => a.CreateTime).FirstOrDefault(); var endData = list.OrderByDescending(a => a.CreateTime).FirstOrDefault(); PrintReportData printData = new PrintReportData { RealName = user.RealName, StartTime = startData.CreateTime.ToString("yyyy-MM-dd HH:dd:ss"), EndTime = endData.CreateTime.ToString("yyyy-MM-dd HH:dd:ss"), TotalCount = list.Sum(p => p.Quantity), TotalAmount = list.Sum(p => p.Quantity * p.Price), RefundTotalCount = refundList.Sum(p => p.Quantity), RefundTotalAmount = refundList.Sum(p => p.Quantity * p.Price), PrintBulkTicket = new PrintTicketList(), PrintTeamTicket = new PrintTicketList() }; var totalList = list.GroupBy(a => new { a.TicketId, a.TicketName, a.PayType, a.TicketType }).Select(a => new PrintTicketData { TicketId = a.Key.TicketId, TicketName = a.Key.TicketName, TotalCount = a.Sum(b => b.Quantity), TotalAmount = a.Sum(b => b.Quantity * b.Price), TicketType = a.Key.TicketType, PayType = (int)a.Key.PayType }).ToList(); //散客票 printData.PrintBulkTicket.Alipay = totalList.Where(p => p.PayType == (int)PayStatus.Alipay && p.TicketType == (int)ShelvesChannelEnum.IndividualTicket).ToList(); printData.PrintBulkTicket.ReadyMoney = totalList.Where(p => p.PayType == (int)PayStatus.ReadyMoney && p.TicketType == (int)ShelvesChannelEnum.IndividualTicket).ToList(); printData.PrintBulkTicket.Wechat = totalList.Where(p => p.PayType == (int)PayStatus.Wechat && p.TicketType == (int)ShelvesChannelEnum.IndividualTicket).ToList(); //团队票 printData.PrintTeamTicket.Alipay = totalList.Where(p => p.PayType == (int)PayStatus.Alipay && p.TicketType == (int)ShelvesChannelEnum.TeamTicket).ToList(); printData.PrintTeamTicket.ReadyMoney = totalList.Where(p => p.PayType == (int)PayStatus.ReadyMoney && p.TicketType == (int)ShelvesChannelEnum.TeamTicket).ToList(); printData.PrintTeamTicket.Wechat = totalList.Where(p => p.PayType == (int)PayStatus.Wechat && p.TicketType == (int)ShelvesChannelEnum.TeamTicket).ToList(); _printGateway.Send(printData, printConfigData); return(result.SuccessResult()); }
/// <summary> /// 打印报表 /// </summary> /// <param name="data"></param> /// <param name="configData"></param> /// <returns></returns> public static PrintResult Send(PrintReportData data, PrintConfigData configData) { var text = GetReportContext(data); return(PrintHelper.Send(text, configData)); }
public PrintResult Send(PrintReportData data, PrintConfigData configData) { return(PrintReport.Send(data, configData)); }