/// <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());
        }
Exemple #3
0
        /// <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));
 }