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 <ReportStatisticsModel> ReportStatistics() { var result = new TResult <ReportStatisticsModel>(); var reportList = new ReportStatisticsModel { List = new List <TicketSaleCount>() }; var user = _enterpriseUserService.LoginForSession(); var nowDate = DateTime.Now.Date; var endTime = nowDate.AddDays(1).Date; var list = _orderDetailRepository.db.Queryable <Tbl_OrderDetail, Tbl_Ticket, Tbl_Order>((a, b, c) => new object[] { JoinType.Left, a.TicketId == b.TicketId, JoinType.Inner, a.OrderNo == c.OrderNo }) .Where((a, b, c) => 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) => new { OrderDtlId = a.OrderDetailId, TicketId = a.TicketId, TicketName = a.TicketName, 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, SellerId = a.SellerId }).ToList(); reportList.TotalAmount = list.Sum(p => (decimal)p.Quantity * p.Price); reportList.TotalCount = list.Sum(p => p.Quantity); reportList.AlipayAmount = list.Where(p => p.PayType == PayStatus.Alipay).Sum(p => (decimal)p.Quantity * p.Price); reportList.CashAmount = list.Where(p => p.PayType == PayStatus.ReadyMoney).Sum(p => (decimal)p.Quantity * p.Price); reportList.WxPayAmount = list.Where(p => p.PayType == PayStatus.Wechat).Sum(p => (decimal)p.Quantity * p.Price); var shelvesChannelType = ((int)ShelvesChannelEnum.TeamTicket).ToString();//上线渠道 var refundList = list.Where(p => p.OrderStatus == (int)OrderDetailsDataStatus.Refund).ToList(); reportList.TotalRefundAmount = refundList.Sum(p => (decimal)p.Quantity * p.Price); reportList.TotalRefundCount = refundList.Sum(p => p.Quantity); reportList.AlipayRefundAmount = refundList.Where(p => p.PayType == PayStatus.Alipay).Sum(p => (decimal)p.Quantity * p.Price); reportList.CashRefundAmount = refundList.Where(p => p.PayType == PayStatus.ReadyMoney).Sum(p => (decimal)p.Quantity * p.Price); reportList.WxPayRefundAmount = refundList.Where(p => p.PayType == PayStatus.Wechat).Sum(p => (decimal)p.Quantity * p.Price); foreach (var row in list) { reportList.List.Add(new TicketSaleCount { OrderNo = row.OrderNo, TicketName = row.TicketName, TicketId = row.TicketId, Price = row.Price, Count = row.Quantity, Amount = (decimal)row.Quantity * row.Price, RefundAmount = 0, RefundCount = 0 }); } foreach (var row in refundList) { reportList.List.Add(new TicketSaleCount { OrderNo = row.OrderNo, TicketName = row.TicketName, TicketId = row.TicketId, Price = row.Price, Count = 0, Amount = 0, RefundAmount = (decimal)row.Quantity * row.Price, RefundCount = row.Quantity }); } reportList.List = reportList.List.GroupBy(a => new { a.TicketId, a.TicketName, a.Price }).Select(a => new TicketSaleCount { TicketName = a.Key.TicketName, TicketId = a.Key.TicketId, Price = a.Key.Price, Amount = a.Sum(b => b.Amount), Count = a.Sum(b => b.Count), RefundAmount = a.Sum(b => b.RefundAmount), RefundCount = a.Sum(b => b.RefundCount), }).ToList(); return(result.SuccessResult(reportList)); }