private PrintResult Print(PrintConfigData printConfigData, Tbl_Scenic tbl_Scenic, Tbl_OrderDetail tbl_OrderDetail) { tbl_OrderDetail.UsedQuantity = tbl_OrderDetail.Quantity; tbl_OrderDetail.PrintCount++; if (tbl_OrderDetail.OrderStatus == (int)OrderDetailsDataStatus.Activate) { tbl_OrderDetail.OrderStatus = (int)OrderDetailsDataStatus.IsTaken; } _orderDetailService.Update(tbl_OrderDetail); var userInfo = _enterpriseUserService.LoginForSession(); var printOrderData = new PrintOrderData { OrderNo = tbl_OrderDetail.OrderNo, TicketName = tbl_OrderDetail.TicketName, Qunatity = tbl_OrderDetail.Quantity, Price = tbl_OrderDetail.Price, TotalAmount = tbl_OrderDetail.Quantity * tbl_OrderDetail.Price, CertificateNo = tbl_OrderDetail.CertificateNO, QRcode = SecurityExtension.DesEncrypt(tbl_OrderDetail.QRcode, DesKey.QrCodeKey), CreateTime = tbl_OrderDetail.ValidityDateStart.ToString("yyyy-MM-dd"), PrintCount = tbl_OrderDetail.PrintCount, RealName = userInfo.RealName, UserName = userInfo.UserName }; if (tbl_Scenic != null) { printOrderData.ScenicName = tbl_Scenic.ScenicName; printOrderData.ScenicPhone = tbl_Scenic.Tel; } return(_printGateway.Send(printOrderData, printConfigData)); }
/// <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()); }