예제 #1
0
 public ThirdBackstagePrint(ThirdOrder order, Printer printer, Socket socket)
 {
     Order    = order;
     Printer  = printer;
     _socket  = socket;
     Products = Order.ThirdOrderProducts.Where(a => a.Tag1 != null || Printer.Device.Foods.Contains(a.ProductId)).ToList();
 }
예제 #2
0
 public ThirdSharePrint(ThirdOrder order, Printer printer, Socket socket) : base(order, printer, socket)
 {
 }
예제 #3
0
        /// <summary>
        /// 前台打印(第三方订单)
        /// </summary>
        /// <param name="order"></param>
        /// <param name="socket"></param>
        private void ReceptionPrint(ThirdOrder order, Socket socket)
        {
            var bufferArr = new List <byte[]>();
            var sign      = order.OrderSource == 0 ? "美团" : "饿了么";

            // 打印当日序号
            bufferArr.Add(PrinterCmdUtils.AlignCenter());
            bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(3));
            bufferArr.Add(TextToByte(sign + " #" + order.DaySeq));
            //bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(2));
            //bufferArr.Add(TextToByte(sign));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            if (order.PrintTimes > 0)
            {
                bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(2));
                bufferArr.Add(TextToByte("(补打)"));
                bufferArr.Add(PrinterCmdUtils.NextLine());
            }
            // 打印小票类别
            bufferArr.Add(PrinterCmdUtils.AlignLeft());
            bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(1));
            bufferArr.Add(TextToByte("前台小票"));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            // 分隔
            bufferArr.Add(PrinterCmdUtils.SplitLine("-", Device.Format));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            // 备注
            if (!string.IsNullOrEmpty(order.Caution))
            {
                bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(2));
                bufferArr.Add(TextToByte($"备注:{order.Caution}"));
                bufferArr.Add(PrinterCmdUtils.NextLine());
                bufferArr.Add(PrinterCmdUtils.NextLine());
            }
            // 开票信息
            if (!string.IsNullOrEmpty(order.InvoiceTitle) && !string.IsNullOrEmpty(order.TaxpayerId))
            {
                bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(2));
                bufferArr.Add(TextToByte($"开票信息:{order.InvoiceTitle},{order.TaxpayerId}"));
                bufferArr.Add(PrinterCmdUtils.NextLine());
                bufferArr.Add(PrinterCmdUtils.NextLine());
            }
            // 商户名称
            bufferArr.Add(PrinterCmdUtils.AlignCenter());
            bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(2));
            bufferArr.Add(TextToByte(ApplicationObject.App.Business.Name));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            bufferArr.Add(PrinterCmdUtils.AlignLeft());
            bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(1));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            // 下单时间
            bufferArr.Add(TextToByte($"下单时间:{order.Ctime:yyyy-MM-dd HH:mm:ss}"));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            // 订单编号
            bufferArr.Add(TextToByte($"订单编号:{order.OrderId}"));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            // 商品分隔
            bufferArr.Add(PrinterCmdUtils.SplitText("-", "购买商品", Device.Format));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            // 打印商品
            bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(2));
            foreach (var product in order.ThirdOrderProducts)
            {
                if (order.OrderSource == 1 && product.Name == "餐盒")
                {
                    continue;
                }
                var buffer = ProductLine(product, 2);
                buffer.ForEach(a =>
                {
                    bufferArr.Add(a);
                    bufferArr.Add(PrinterCmdUtils.NextLine());
                });
                if (product.Tag1 != null && product.Tag1.Count > 0)
                {
                    bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(1));
                    // 套餐打印明细
                    product.Tag1.ForEach(a =>
                    {
                        bufferArr.Add($"  - {a.Name}".ToByte());
                        bufferArr.Add(PrinterCmdUtils.NextLine());
                    });
                    bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(2));
                }
            }
            bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(1));
            // 分隔
            bufferArr.Add(PrinterCmdUtils.SplitText("-", "其他", Device.Format));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            // 包装费
            bufferArr.Add(PrintLineLeftRight("包装费", order.PackageFee + ""));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            // 配送费
            bufferArr.Add(PrintLineLeftRight("配送费", order.ShippingFee + ""));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            // 满减活动打印
            if (order.ThirdOrderActivities != null && order.ThirdOrderActivities.Count > 0)
            {
                foreach (var item in order.ThirdOrderActivities)
                {
                    bufferArr.Add(PrintLineLeftRight(item.Remark, "-¥" + item.ReduceFee));
                    bufferArr.Add(PrinterCmdUtils.NextLine());
                }
            }
            // 订单金额
            bufferArr.Add(PrinterCmdUtils.AlignRight());
            bufferArr.Add(TextToByte("实付:"));
            bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(2));
            bufferArr.Add(TextToByte(order.Amount + "元"));
            bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(1));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            bufferArr.Add(PrinterCmdUtils.AlignLeft());
            // 分隔
            bufferArr.Add(PrinterCmdUtils.SplitLine("*", Device.Format));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            // 地址
            bufferArr.Add(PrinterCmdUtils.FontSizeSetBig(2));
            bufferArr.Add(TextToByte(order.RecipientAddress));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            bufferArr.Add(TextToByte(order.RecipientPhone));
            bufferArr.Add(PrinterCmdUtils.NextLine());
            bufferArr.Add(TextToByte(order.RecipientName));
            bufferArr.Add(PrinterCmdUtils.NextLine());

            // 切割
            bufferArr.Add(PrinterCmdUtils.FeedPaperCutAll());

            // 打印
            bufferArr.ForEach(a => socket.Send(a));
        }