Beispiel #1
0
        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));
        }
Beispiel #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());
        }