Exemple #1
0
        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("打印系统繁忙,请稍后进行补打."));
            }
        }
Exemple #2
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());
        }