public TResult Print(string orderNo, string printKey) { var result = new TResult(); try { var printConfigData = _printGateway.Get(printKey); if (printConfigData == null) { return(result.FailureResult("打印机编号不存在,请进行补打")); } var tbl_Order = _orderService.Get(orderNo); if (tbl_Order == null) { return(result.FailureResult("订单不存在")); } var tbl_Scenic = _scenicService.Get(tbl_Order.ScenicId); var tbl_OrderDetails = _orderDetailService.GetList(orderNo); foreach (var row in tbl_OrderDetails) { Print(printConfigData, tbl_Scenic, row); } return(result.SuccessResult()); } catch (Exception e) { return(result.FailureResult("打印系统繁忙,请稍后进行补打.")); } }
/// <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()); }