You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1458 lines
62 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using POSV.Bean;
using POSV.Printer;
using POSV.ShoppingCart;
using POSV.Utils;
using POSV.Entity.ReportPrint;
using POSV.Card;
using POSV.OtherWaiMai;
using System.Threading;
using NLog;
using System.Text.RegularExpressions;
using POSV.QiMai;
namespace POSV.Helper
{
public class WaiMaiHelper
{
private static Logger logger = NLog.LogManager.GetCurrentClassLogger();
/// <summary>
/// 获取系统配置的收银小票打印机
/// </summary>
/// <returns></returns>
public static PrinterObject GetTicketPrinterObject(string name, bool cutPager, bool openCashbox)
{
var pobject = new PrinterObject();
string json = string.Empty;
if (name == "外卖打印机")
{
//单独使用外卖小票打印机
json = Global.Instance.GlobalConfigStringValue(ConfigConstant.PERIPHERAL_WM_TICKET_PRINTER);
}
else
{
json = Global.Instance.GlobalConfigStringValue(ConfigConstant.PERIPHERAL_CASHIER_TICKET);
}
if (string.IsNullOrEmpty(json))
{
json = JsonUtils.Serialize(ConfigConstant.PeripheralGroupDefaultValue());
}
var printer = JsonUtils.Deserialize<PrinterItem>(json);
pobject.Id = printer.Id;
pobject.Name = printer.Name;
pobject.PortType = (PortType)Enum.Parse(typeof(PortType), printer.Port);
pobject.DynamicLibrary = (DynamicLibrary)Enum.Parse(typeof(DynamicLibrary), printer.DynamicLibrary);
pobject.PageWidth = printer.PageWidth;
pobject.CutPager = cutPager;
pobject.OpenCashbox = openCashbox;
pobject.Data[PrinterObject.COM_PORT_NAME] = printer.Data[Constant.COM_PORT_NAME];
pobject.Data[PrinterObject.COM_PORT_BAUD] = printer.Data[Constant.COM_PORT_BAUD];
pobject.Data[PrinterObject.LPT_NAME] = printer.Data[Constant.LPT_NAME];
pobject.Data[PrinterObject.DRIVE_NAME] = printer.Data[Constant.DRIVE_NAME];
pobject.Data[PrinterObject.NET_IP_ADDRESS] = printer.Data[Constant.NET_IP_ADDRESS];
pobject.Data[PrinterObject.USB_PID] = printer.Data[Constant.USB_PID];
pobject.Data[PrinterObject.USB_VID] = printer.Data[Constant.USB_VID];
pobject.EscPosCommand.InitCommand = printer.InitCommand;
pobject.EscPosCommand.NormalCommand = printer.NormalCommand;
pobject.EscPosCommand.DoubleHeightCommand = printer.DoubleHeightCommand;
pobject.EscPosCommand.DoubleWidthCommand = printer.DoubleWidthCommand;
pobject.EscPosCommand.DoubleWidthHeightCommand = printer.DoubleWidthHeightCommand;
pobject.EscPosCommand.CutPageCommand = printer.CutPageCommand;
pobject.EscPosCommand.CashboxCommand = printer.CashboxCommand;
pobject.EscPosCommand.AlignCenterCommand = printer.AlignCenterCommand;
pobject.EscPosCommand.AlignLeftCommand = printer.AlignLeftCommand;
pobject.EscPosCommand.AlignRightCommand = printer.AlignRightCommand;
return pobject;
}
/// <summary>
/// 构建美团外卖订单打印
/// </summary>
/// <param name="orderObject"></param>
/// <returns></returns>
public static List<Printer.VariableValue> BuilderMeiTuanVariable(string meituanShop, MeiTuanOrderResponse response, bool isRprint)
{
var vars = new List<Printer.VariableValue>();
var v = new Printer.VariableValue();
v.Key = "默认数据源";
v.DataType = DataType.Simple;
var data = new Dictionary<string, string>();
data.Add("@营业模式@", OrderType..ToString());
data.Add("@退单标识@", "false");
data.Add("@外卖门店@", meituanShop);
data.Add("@外卖单号@", response.OrderIdView);
if (response.PayType == 1)
{
data.Add("@支付方式@", "货到付款");
}
else if (response.PayType == 2)
{
data.Add("@支付方式@", "在线支付");
}
else
{
data.Add("@支付方式@", "其他支付方式");
}
if (response.PickType == 0)
{
data.Add("@是否到店自取@", "false");
}
else
{
data.Add("@是否到店自取@", "true");
}
if (response.DeliveryTime.Equals("0"))
{
data.Add("@是否预定@", "false");
data.Add("@送达时间@", "立即送达");
}
else
{
data.Add("@是否预定@", "true");
data.Add("@送达时间@", response.DeliveryTime);
}
data.Add("@就餐人数@", response.DinnersNumber);
data.Add("@订单备注@", response.Caution);
if (isRprint)
{
data.Add("@是否补打@", "(补打单)");
data.Add("@重打标识@", "true");
}
else
{
data.Add("@是否补打@", "");
data.Add("@重打标识@", "false");
}
data.Add("@下单时间@", response.CTime);
data.Add("@当日序号@", string.Format("{0}", response.DaySeq));
data.Add("@订餐人@", response.RecipientName);
data.Add("@订餐电话@", response.RecipientPhone);
if (!string.IsNullOrEmpty(response.RecipientAddress))
{
string[] addressArray = Regex.Split(response.RecipientAddress, "@#", RegexOptions.IgnoreCase);
data.Add("@送餐地址@", addressArray[0]);
}
else
{
data.Add("@送餐地址@", "");
}
data.Add("@配送费用@", string.Format("{0}", response.ShippingFee));
data.Add("@订单原价@", string.Format("{0}", response.OriginalPrice));
data.Add("@订单总额@", string.Format("{0}", response.Total));
if (response.HasInvoiced == 0)
{
data.Add("@是否发票@", string.Format("{0}", "false"));
}
else
{
data.Add("@是否发票@", string.Format("{0}", "true"));
}
data.Add("@发票信息@", string.Format("{0}", response.InvoiceTitle));
int countExtras = 0;
foreach (var item in response.Extras)
{
if (!string.IsNullOrEmpty(item.Remark))
{
countExtras = countExtras + 1;
}
}
if (countExtras > 0)
{
data.Add("@是否打印优惠明细@", "true");
}
else
{
data.Add("@是否打印优惠明细@", "false");
}
decimal packageFee = 0.00M;
//口袋列表
List<MeiTuanOrderListDetail> listDetail = response.Detail.OrderBy(x => x.Cart_id).ToList();
foreach (var item in listDetail)
{
packageFee = packageFee + item.Box_num * item.Box_price;
}
data.Add("@餐盒费@", string.Format("{0}", packageFee));
v.Value = JsonUtils.Serialize(data);
vars.Add(v);
v = new Printer.VariableValue();
v.Key = "点餐列表";
v.DataType = DataType.List;
var list = new List<Dictionary<string, string>>();
//口袋列表
//List<MeiTuanOrderListDetail> listDetail = response.Detail.OrderBy(x => x.Cart_id).ToList();
int i = -1;
foreach (var item in listDetail)
{
var row = new Dictionary<string, string>();
if (i != item.Cart_id)
{
row = new Dictionary<string, string>();
row.Add("@名称@", "----" + (item.Cart_id + 1) + "号口袋----");
row.Add("@数量@", "");
row.Add("@金额@", "");
list.Add(row);
i = item.Cart_id;
}
Tuple<string, string> nameAdd = Global.Instance.Additional;
row = new Dictionary<string, string>();
row.Add("@名称@", item.Food_name + (string.IsNullOrEmpty(item.Spec) ? "" : nameAdd.Item1 + item.Spec + nameAdd.Item2) + (string.IsNullOrEmpty(item.Food_property) ? "" : nameAdd.Item1 + item.Food_property + nameAdd.Item2));
row.Add("@数量@", string.Format("{0}", item.Quantity));
row.Add("@金额@", string.Format("{0}", StringUtils.GetDecimal(item.Quantity) * item.Price));
list.Add(row);
packageFee = packageFee + item.Box_num * item.Box_price;
}
var row1 = new Dictionary<string, string>();
row1.Add("@名称@", "-------------");
row1.Add("@数量@", "");
row1.Add("@金额@", "");
list.Add(row1);
v.Value = JsonUtils.Serialize(list);
vars.Add(v);
v = new Printer.VariableValue();
v.Key = "优惠列表";
v.DataType = DataType.List;
var list1 = new List<Dictionary<string, string>>();
//删除优惠信息打印
foreach (var item in response.Extras)
{
if (!string.IsNullOrEmpty(item.Remark))
{
var row = new Dictionary<string, string>();
row.Add("@名称@", item.Remark);
list1.Add(row);
}
}
v.Value = JsonUtils.Serialize(list1);
vars.Add(v);
return vars;
}
/// <summary>
/// 构建商家美团外卖订单打印
/// </summary>
/// <param name="orderObject"></param>
/// <returns></returns>
public static List<Printer.VariableValue> SJBuilderMeiTuanVariable(string meituanShop, ShopMeituanWaiMaiOrderInfoByidResponse response, bool isRprint)
{
var vars = new List<Printer.VariableValue>();
var v = new Printer.VariableValue();
v.Key = "默认数据源";
v.DataType = DataType.Simple;
var data = new Dictionary<string, string>();
data.Add("@营业模式@", OrderType..ToString());
data.Add("@退单标识@", "false");
data.Add("@退单@", response.Status == 9 ? "已退单" : "完成");
data.Add("@外卖门店@", meituanShop);
data.Add("@外卖单号@", response.Wm_order_id_view);
if (response.Pay_type == 1)
{
data.Add("@支付方式@", "货到付款");
}
else if (response.Pay_type == 2)
{
data.Add("@支付方式@", "在线支付");
}
else
{
data.Add("@支付方式@", "其他支付方式");
}
if (response.PickType == 0)
{
data.Add("@是否到店自取@", "false");
}
else
{
data.Add("@是否到店自取@", "true");
}
if (response.Delivery_time.Equals("0"))
{
data.Add("@是否预定@", "false");
data.Add("@预定单标识@", "");
data.Add("@送达时间@", "立即送达");
}
else
{
data.Add("@是否预定@", "true");
data.Add("@预定单标识@", "预订单");
data.Add("@送达时间@", GetFormatDateTime4Sec(response.Delivery_time));
}
data.Add("@就餐人数@", response.Dinners_number.ToString());
data.Add("@订单备注@", response.Caution);
if (isRprint)
{
data.Add("@是否补打@", "(补打单)");
data.Add("@重打标识@", "true");
}
else
{
data.Add("@是否补打@", "");
data.Add("@重打标识@", "false");
}
data.Add("@下单时间@", GetFormatDateTime4Sec(response.Order_send_time));
data.Add("@当日序号@", string.Format("{0}", response.Day_seq));
data.Add("@订餐人@", response.Recipient_name);
data.Add("@订餐电话@", response.Recipient_phone);
if (!string.IsNullOrEmpty(response.Recipient_address))
{
string[] addressArray = Regex.Split(response.Recipient_address, "@#", RegexOptions.IgnoreCase);
data.Add("@送餐地址@", addressArray[0]);
}
else
{
data.Add("@送餐地址@", "");
}
data.Add("@配送费用@", string.Format("{0}", response.Shipping_fee));
data.Add("@订单原价@", string.Format("{0}", response.Original_price));
data.Add("@订单总额@", string.Format("{0}", response.Total));
if (response.Has_invoiced == 0)
{
data.Add("@是否发票@", string.Format("{0}", "false"));
}
else
{
data.Add("@是否发票@", string.Format("{0}", "true"));
}
data.Add("@发票信息@", string.Format("{0}", response.Invoice_title));
int countExtras = 0;
foreach (var item in response.Extras)
{
if (!string.IsNullOrEmpty(item.Remark))
{
countExtras = countExtras + 1;
}
}
if (countExtras > 0)
{
data.Add("@是否打印优惠明细@", "true");
}
else
{
data.Add("@是否打印优惠明细@", "false");
}
decimal packageFee = 0.00M;
//口袋列表
List<ShopMeituanWaiMaiOrderInfoByiddetailResponse> listDetail = response.Detail.OrderBy(x => x.Sku_id).ToList();
foreach (var item in listDetail)
{
packageFee = packageFee + item.Box_num * item.Box_price;
}
data.Add("@餐盒费@", string.Format("{0}", packageFee));
v.Value = JsonUtils.Serialize(data);
vars.Add(v);
v = new Printer.VariableValue();
v.Key = "点餐列表";
v.DataType = DataType.List;
var list = new List<Dictionary<string, string>>();
//口袋列表
//List<MeiTuanOrderListDetail> listDetail = response.Detail.OrderBy(x => x.Cart_id).ToList();
int i = -1;
foreach (var item in listDetail)
{
var row = new Dictionary<string, string>();
if (i != item.Cart_id)
{
row = new Dictionary<string, string>();
row.Add("@名称@", "----" + (item.Cart_id + 1) + "号口袋----");
row.Add("@数量@", "");
row.Add("@金额@", "");
list.Add(row);
i = item.Cart_id;
}
Tuple<string, string> nameAdd = Global.Instance.Additional;
row = new Dictionary<string, string>();
row.Add("@名称@", item.Food_name + (string.IsNullOrEmpty(item.Spec) ? "" : nameAdd.Item1 + item.Spec + nameAdd.Item2) + (string.IsNullOrEmpty(item.Food_property) ? "" : nameAdd.Item1 + item.Food_property + nameAdd.Item2));
row.Add("@数量@", string.Format("{0}", item.Quantity));
row.Add("@金额@", string.Format("{0}", StringUtils.GetDecimal(item.Quantity) * item.Price));
list.Add(row);
packageFee = packageFee + item.Box_num * item.Box_price;
}
var row1 = new Dictionary<string, string>();
row1.Add("@名称@", "-------------");
row1.Add("@数量@", "");
row1.Add("@金额@", "");
list.Add(row1);
v.Value = JsonUtils.Serialize(list);
vars.Add(v);
v = new Printer.VariableValue();
v.Key = "优惠列表";
v.DataType = DataType.List;
var list1 = new List<Dictionary<string, string>>();
//删除优惠信息打印
foreach (var item in response.Extras)
{
if (!string.IsNullOrEmpty(item.Remark))
{
var row = new Dictionary<string, string>();
row.Add("@名称@", item.Remark);
list1.Add(row);
}
}
v.Value = JsonUtils.Serialize(list1);
vars.Add(v);
return vars;
}
private static string GetFormatDateTime4Sec(string secTimeStamp, string format = null)
{
if (string.IsNullOrEmpty(secTimeStamp)) return "";
try
{
format = format ?? "yyyy-MM-dd HH:mm:ss";
if (secTimeStamp.Length == 13)
{
secTimeStamp = secTimeStamp.Substring(0, 10);
}
double timestamp = Convert.ToInt64(secTimeStamp);
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds(timestamp).ToLocalTime();
return dateTime.ToString(format);
//System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
//DateTime dt = startTime.AddSeconds(long.Parse(secTimeStamp));
//return dt.ToString(format);
}catch(Exception ex)
{
logger.Error(ex, "时间转换异常");
return "";
}
}
/// <summary>
/// 构建饿了么订单打印
/// </summary>
/// <param name="orderObject"></param>
/// <returns></returns>
public static List<Printer.VariableValue> BuilderEleMeVariable(string elemeShop, EleMeOrderResponse response, bool isRprint)
{
var vars = new List<Printer.VariableValue>();
var v = new Printer.VariableValue();
v.Key = "默认数据源";
v.DataType = DataType.Simple;
var data = new Dictionary<string, string>();
data.Add("@营业模式@", OrderType.饿.ToString());
data.Add("@退单标识@", "false");
data.Add("@外卖单号@", response.OrderId);
data.Add("@外卖门店@", elemeShop);
if (response.IsOnlinePaid)
{
data.Add("@支付方式@", "在线支付");
}
else
{
data.Add("@支付方式@", "货到付款");
}
if (!response.IsBook)
{
data.Add("@是否预定@", "false");
data.Add("@预定单标识@", "");
data.Add("@送达时间@", "立即送达");
}
else
{
data.Add("@是否预定@", "true");
data.Add("@预定单标识@", "预订单");
data.Add("@送达时间@", response.DeliverTime);
}
//data.Add("@送达时间@", response.DeliverTime);
data.Add("@就餐人数@", "1");
data.Add("@订单备注@", response.Description);
if (isRprint)
{
data.Add("@是否补打@", "(补打单)");
data.Add("@重打标识@", "true");
}
else
{
data.Add("@是否补打@", "");
data.Add("@重打标识@", "false");
}
data.Add("@下单时间@", response.CreatedAt);
data.Add("@当日序号@", string.Format("{0}", response.DaySn));
data.Add("@订餐人@", response.Consignee);
data.Add("@订餐电话@", StringUtils.GetString(response.PhoneList).Replace("[", "").Replace("]", "").Replace("\r", "").Replace("\n", "").Replace("\"", ""));
data.Add("@送餐地址@", response.Address);
data.Add("@订单原价@", string.Format("{0}", response.OriginalPrice));
data.Add("@订单总额@", string.Format("{0}", response.TotalPrice));
data.Add("@配送费用@", string.Format("{0}", response.DeliverFee));
if (response.Invoiced)
{
data.Add("@是否发票@", string.Format("{0}", "true"));
}
else
{
data.Add("@是否发票@", string.Format("{0}", "false"));
}
data.Add("@发票信息@", string.Format("{0}", response.Invoice));
v.Value = JsonUtils.Serialize(data);
vars.Add(v);
v = new Printer.VariableValue();
v.Key = "点餐列表";
v.DataType = DataType.List;
List<EleMeGroups> grops = response.Groups;
List<EleMeDishItem> items = new List<EleMeDishItem>();
var list = new List<Dictionary<string, string>>();
foreach (EleMeGroups group in grops)
{
var row = new Dictionary<string, string>();
row.Add("@名称@", group.Name);
row.Add("@数量@", string.Format("{0}", "-"));
row.Add("@金额@", string.Format("{0}", "-"));
list.Add(row);
foreach (EleMeDishItem item in group.Items)
{
var rows = new Dictionary<string, string>();
rows.Add("@名称@", item.Name);
rows.Add("@数量@", string.Format("{0}", item.Quantity));
rows.Add("@金额@", string.Format("{0}", item.Total));
list.Add(rows);
}
}
v.Value = JsonUtils.Serialize(list);
vars.Add(v);
return vars;
}
///// <summary>
///// 构建百度订单打印
///// </summary>
///// <param name="response"></param>
///// <returns></returns>
//public static List<Printer.VariableValue> BuilderBaiDuVariable(string baiduShop, BaiDuOrderResponse response, bool isRprint)
//{
// var vars = new List<Printer.VariableValue>();
// var v = new Printer.VariableValue();
// v.Key = "默认数据源";
// v.DataType = DataType.Simple;
// var data = new Dictionary<string, string>();
// data.Add("@营业模式@", OrderType.百度外卖.ToString());
// data.Add("@退单标识@", "false");
// data.Add("@外卖单号@", response.OrderBody.OrderData.OrderInfo.Order_id);
// data.Add("@外卖门店@", baiduShop);
// if (response.OrderBody.OrderData.OrderInfo.Pay_type == 2)
// {
// data.Add("@支付方式@", "在线支付");
// }
// else
// {
// data.Add("@支付方式@", "货到付款");
// }
// if (StringUtils.GetInt(response.OrderBody.OrderData.OrderInfo.Send_time) > 1000)
// {
// data.Add("@送达时间@", DateTimeUtils.GetFormatDateTime4Sec(response.OrderBody.OrderData.OrderInfo.Send_time));
// }
// else
// {
// data.Add("@送达时间@", "立即送达");
// }
// data.Add("@就餐人数@", "1");
// data.Add("@订单备注@", response.OrderBody.OrderData.OrderInfo.Remark);
// if (isRprint)
// {
// data.Add("@是否补打@", "(补打单)");
// data.Add("@重打标识@", "true");
// }
// else
// {
// data.Add("@是否补打@", "");
// data.Add("@重打标识@", "false");
// }
// data.Add("@下单时间@", DateTimeUtils.GetFormatDateTime4Sec(response.OrderBody.OrderData.OrderInfo.Create_time));
// data.Add("@当日序号@", string.Format("{0}", response.OrderBody.OrderData.OrderInfo.Order_index));
// data.Add("@订餐人@", response.OrderBody.OrderData.OrderUser.Name);
// data.Add("@订餐电话@", response.OrderBody.OrderData.OrderUser.Phone);
// data.Add("@送餐地址@", response.OrderBody.OrderData.OrderUser.Address);
// data.Add("@订单原价@", StringUtils.GetString(response.OrderBody.OrderData.OrderInfo.Total_fee / Convert.ToDecimal(100)));
// data.Add("@订单总额@", StringUtils.GetString(response.OrderBody.OrderData.OrderInfo.Total_fee / Convert.ToDecimal(100)));
// data.Add("@配送费用@", StringUtils.GetString(response.OrderBody.OrderData.OrderInfo.Send_fee / Convert.ToDecimal(100)));
// v.Value = JsonUtils.Serialize(data);
// vars.Add(v);
// v = new Printer.VariableValue();
// v.Key = "点餐列表";
// v.DataType = DataType.List;
// List<List<BaiduOrderProduct>> products = response.OrderBody.OrderData.Products;
// List<BaiduOrderProduct> items = new List<BaiduOrderProduct>();
// foreach (List<BaiduOrderProduct> group in products)
// {
// foreach (BaiduOrderProduct item in group)
// {
// item.ProductPrice = item.Product_price / Convert.ToDecimal(100);
// item.ProductFee = item.Product_fee / Convert.ToDecimal(100);
// var spec = "";
// var specId = "";
// if (item.Product_attr != null)
// {
// foreach (var attr in item.Product_attr)
// {
// spec += string.Format("({0})", attr.Option);
// specId = attr.Baidu_attr_id;
// }
// }
// item.Spec = spec;//菜如菜品规格
// item.SpecId = specId;
// var features = string.Empty;
// if (item.Product_features != null)
// {
// foreach (var feature in item.Product_features)
// {
// features += string.Format("{0},", feature.Option);
// }
// if (!string.IsNullOrEmpty(features))
// {
// features = features.Substring(0, features.Length - 1);
// features = string.Format("({0})", features);
// }
// }
// item.Features = features;//写入菜品做法
// items.Add(item);
// }
// }
// var list = new List<Dictionary<string, string>>();
// foreach (var item in items)
// {
// var row = new Dictionary<string, string>();
// if (item.Spec != null && !"".Equals(item.Spec))
// {
// Tuple<string, string> nameAdd = Global.Instance.Additional;
// row.Add("@名称@", item.Product_name + nameAdd.Item1 + item.Spec + nameAdd.Item2);
// }
// else
// {
// row.Add("@名称@", item.Product_name);
// }
// row.Add("@数量@", string.Format("{0}", item.Product_amount));
// row.Add("@金额@", string.Format("{0}", item.ProductFee));
// list.Add(row);
// }
// v.Value = JsonUtils.Serialize(list);
// vars.Add(v);
// return vars;
//}
/// <summary>
/// 构建微信订单打印
/// </summary>
/// <param name="response"></param>
/// <returns></returns>
public static List<Printer.VariableValue> BuilderWeiXinVariable(WeiXinOrderResponse response, bool isRprint)
{
var vars = new List<Printer.VariableValue>();
var v = new Printer.VariableValue();
v.Key = "默认数据源";
v.DataType = DataType.Simple;
var data = new Dictionary<string, string>();
data.Add("@单号@", response.TicketNo);
data.Add("@取餐号@", response.TakeNo);
data.Add("@门店名称@", Global.Instance.Worker.StoreInfo.PrintName);
if (response.PayType == 1)
{
data.Add("@付款方式@", "在线支付");
}
else
{
data.Add("@付款方式@", "其他");
}
if (response.PayMode == 1)
{
data.Add("@付款类型@", "微信支付");
}
else
{
data.Add("@付款类型@", "其他支付");
}
data.Add("@下单时间@", response.PayDate);
if (response.Status == 1)
{
data.Add("@订单状态@", "已支付");
}
else if (response.Status == 2)
{
data.Add("@订单状态@", "已退单");
}
else if (response.Status == 3)
{
data.Add("@订单状态@", "已取消");
}
else if (response.Status == 4)
{
data.Add("@订单状态@", "商家已确认");
}
else if (response.Status == 5)
{
data.Add("@订单状态@", "已完成");
}
data.Add("@就餐人数@", string.Format("{0}", response.People));
if (response.BusMode == 0)
{
data.Add("@营业模式@", "堂食");
data.Add("@手机号@", response.Phone);
data.Add("@是否打印餐盒费@", "false");
data.Add("@是否打印取餐信息@", "true");
data.Add("@是否打印配送信息@", "false");
data.Add("@点餐人@", "");
data.Add("@订餐地址@", "");
}
else if (response.BusMode == 1)
{
data.Add("@营业模式@", "打包");
data.Add("@手机号@", response.Phone);
data.Add("@是否打印餐盒费@", "true");
data.Add("@是否打印取餐信息@", "true");
data.Add("@是否打印配送信息@", "false");
data.Add("@点餐人@", "");
data.Add("@订餐地址@", "");
}
else if (response.BusMode == 2)
{
data.Add("@营业模式@", "外卖");
data.Add("@手机号@", response.ReceiveMobile == null ? "" : response.ReceiveMobile);
data.Add("@是否打印餐盒费@", "true");
data.Add("@是否打印取餐信息@", "false");
data.Add("@是否打印配送信息@", "true");
data.Add("@点餐人@", response.ReceiveName == null ? "" : response.ReceiveName);
data.Add("@订餐地址@", response.ReceiveAddress == null ? "" : response.ReceiveAddress);
}
else
{
data.Add("@营业模式@", "其他");
data.Add("@手机号@", response.Phone);
data.Add("@是否打印餐盒费@", "false");
data.Add("@是否打印取餐信息@", "false");
data.Add("@是否打印配送信息@", "false");
data.Add("@点餐人@", "");
data.Add("@订餐地址@", "");
}
data.Add("@餐桌号@", response.TableName == null ? "" : response.TableName);
data.Add("@订单备注@", response.Description == null ? "" : response.Description);
if (isRprint)
{
data.Add("@是否补打@", "(补打单)");
}
else
{
data.Add("@是否补打@", "");
}
data.Add("@订单原价@", StringUtils.GetString(response.Amount));
data.Add("@优惠金额@", StringUtils.GetString(response.DiscountTotal));
data.Add("@应收金额@", StringUtils.GetString(response.Receivable));
data.Add("@餐盒费@", StringUtils.GetString(response.BoxFee));
data.Add("@配送费用@", StringUtils.GetString(response.DistributionFee));
data.Add("@退单原因@", response.BackCause);
v.Value = JsonUtils.Serialize(data);
vars.Add(v);
v = new Printer.VariableValue();
v.Key = "点餐列表";
v.DataType = DataType.List;
var list = new List<Dictionary<string, string>>();
foreach (WeiXinOrderItems item in response.Items)
{
var row = new Dictionary<string, string>();
if (item.SpecName != null && !"".Equals(item.SpecName))
{
Tuple<string, string> nameAdd = Global.Instance.Additional;
row.Add("@名称@", item.ProductName + nameAdd.Item1 + item.SpecName + nameAdd.Item2);
}
else
{
row.Add("@名称@", item.ProductName);
}
row.Add("@数量@", string.Format("{0}", item.ProductCount));
row.Add("@金额@", string.Format("{0}", item.ProductFee));
list.Add(row);
if (!"".Equals(item.ProductMakes))
{
row = new Dictionary<string, string>();
row.Add("@名称@", "-" + item.ProductMakes);
row.Add("@数量@", "");
row.Add("@金额@", "");
list.Add(row);
}
}
v.Value = JsonUtils.Serialize(list);
vars.Add(v);
return vars;
}
/// <summary>
/// 构建微信订单打印
/// </summary>
/// <param name="response"></param>
/// <returns></returns>
public static List<Printer.VariableValue> UserCancelOrders(OrderObject _data, string orderNo, string SourceName)
{
var vars = new List<Printer.VariableValue>();
var v = new Printer.VariableValue();
v.Key = "默认数据源";
v.DataType = DataType.Simple;
var data = new Dictionary<string, string>();
data.Add("@外卖来源@", SourceName);
data.Add("@当日序号@", _data.OrderNo);
data.Add("@外卖单号@", orderNo);
data.Add("@下单时间@", _data.CreateDate);
data.Add("@支付方式@", _data.Pays.FirstOrDefault()?.Name);
v.Value = JsonUtils.Serialize(data);
vars.Add(v);
var list = new List<Dictionary<string, string>>();
v = new Printer.VariableValue();
v.Key = "点餐列表";
v.DataType = DataType.List;
foreach (var item in _data.Items)
{
var row = new Dictionary<string, string>();
if (item.SpecName != null && !"".Equals(item.SpecName))
{
Tuple<string, string> nameAdd = Global.Instance.Additional;
row.Add("@名称@", item.Name + nameAdd.Item1 + item.SpecName + nameAdd.Item2);
}
else
{
row.Add("@名称@", item.Name);
}
row.Add("@数量@", string.Format("{0}", item.Quantity));
row.Add("@金额@", string.Format("{0}", item.SalePrice));
list.Add(row);
}
v.Value = JsonUtils.Serialize(list);
vars.Add(v);
return vars;
}
/// <summary>
/// 构建微信订单打印
/// </summary>
/// <param name="response"></param>
/// <returns></returns>
public static List<Printer.VariableValue> BuilderWeiXinVariable(OrderObject response, bool isRprint)
{
var vars = new List<Printer.VariableValue>();
var v = new Printer.VariableValue();
v.Key = "默认数据源";
v.DataType = DataType.Simple;
bool otherWaimaiSet = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_MEITUANEXPRESSCOST, false);
var data = new Dictionary<string, string>();
data.Add("@单号@", response.TradeNo);
data.Add("@取餐号@", response.OrderNo);
data.Add("@就餐时间@", response.ReserveTime);
data.Add("@预约送达@", response.ReserveTime);
data.Add("@门店名称@", Global.Instance.Worker.StoreInfo.PrintName);
if (response.Pays?.Count == 1)
{
data.Add("@付款方式@", "在线支付");
data.Add("@付款类型@", response.Pays.FirstOrDefault().Name);
}
else
{
data.Add("@付款方式@", "其他");
data.Add("@付款方式@", "其他");
}
data.Add("@下单时间@", response.FinishDate);
if (response.OrderStatus == OrderStatus.)
{
data.Add("@是否打印状态@", "true");
}
else
{
data.Add("@是否打印状态@", "false");
}
switch (response.OrderStatus)
{
case OrderStatus.:
data.Add("@订单状态@", "新建单");
break;
case OrderStatus.:
data.Add("@订单状态@", "等待付款");
break;
case OrderStatus.:
data.Add("@订单状态@", "已支付");
break;
case OrderStatus.退:
data.Add("@订单状态@", "已退单");
break;
case OrderStatus.:
data.Add("@订单状态@", "已取消");
break;
case OrderStatus.:
data.Add("@订单状态@", "已完成");
break;
case OrderStatus.退:
data.Add("@订单状态@", "部分退款");
break;
default:
break;
}
data.Add("@就餐人数@", string.Format("{0}", response.People));
switch (response.OrderType)
{
case OrderType.:
//zhangy 2020-02-18 Add 添加以下代码,解决外卖模式下打印点餐人、手机号、订餐地址,其他情况不打印
data.Add("@营业模式@", response.BusMode);
data.Add("@是否打印餐盒费@", "ture");
data.Add("@是否打印取餐信息@", response.BusMode == "堂食" ? "true" : "false");
data.Add("@手机号@", response.Phone == null ? "" : response.Phone);
data.Add("@是否打印手机号@", response.BusMode == "外卖" ? "true" : "false");
data.Add("@点餐人@", response.Recipients == null ? "" : response.Recipients);
data.Add("@是否打印点餐人@", response.BusMode == "外卖" ? "true" : "false");
data.Add("@订餐地址@", response.Address == null ? "" : response.Address);
data.Add("@是否打印配送信息@", response.BusMode == "外卖" ? "true" : "false");
data.Add("@是否堂食@", response.BusMode == "堂食" ? "true" : "false");
data.Add("@是否外卖@", response.BusMode == "外卖" ? "true" : "false");
data.Add("@是否外带@", response.BusMode == "外带" ? "true" : "false");
data.Add("@预约时间@", "");
//zhangy 2020-02-18 Edit 注释以下代码,堂食和外带打印小票数据不一样,不能按照是否有地址来区分
//if (!string.IsNullOrEmpty(response.Address))
//{
// //外卖模式
// data.Add("@营业模式@", response.BusMode);
// data.Add("@手机号@", response.Phone == null ? "" : response.Phone);
// data.Add("@是否打印餐盒费@", "ture");
// data.Add("@是否打印取餐信息@", "false");
// data.Add("@是否打印配送信息@", "true");
// data.Add("@点餐人@", response.Recipients == null ? "" : response.Recipients);
// data.Add("@订餐地址@", response.Address == null ? "" : response.Address);
// data.Add("@预约时间@", "");
//}
break;
case OrderType.:
if (!string.IsNullOrEmpty(response.Address))
{
//外卖模式
data.Add("@营业模式@", response.BusMode);
data.Add("@手机号@", response.Phone == null ? "" : response.Phone);
data.Add("@是否打印餐盒费@", "ture");
data.Add("@是否打印取餐信息@", "false");
data.Add("@是否打印配送信息@", "true");
data.Add("@点餐人@", response.Recipients == null ? "" : response.Recipients);
data.Add("@订餐地址@", response.Address == null ? "" : response.Address);
}
//zhangy 2020-03-14 Edit
data.Add("@是否堂食@", "false");
data.Add("@是否外卖@", "false");
data.Add("@是否外带@", "false");
data.Add("@预约时间@", "");
break;
default:
data.Add("@营业模式@", "微信小程序");
data.Add("@手机号@", "");
data.Add("@是否打印餐盒费@", "false");
data.Add("@是否打印取餐信息@", "true");
data.Add("@是否打印配送信息@", "false");
data.Add("@点餐人@", "");
data.Add("@订餐地址@", "");
break;
}
data.Add("@餐桌号@", response.TableName == null ? "" : response.TableName);
data.Add("@订单备注@", response.Ext1 == null ? "" : response.Ext1);
if (isRprint)
{
data.Add("@是否补打@", "true");
}
else
{
data.Add("@是否补打@", "false");
}
if (otherWaimaiSet)
{
data.Add("@订单原价@", StringUtils.GetString(response.Amount));
data.Add("@应收金额@", StringUtils.GetString(response.ReceivableAmount));
}
else
{
data.Add("@订单原价@", StringUtils.GetString(response.Amount + response.DeliverFee));
data.Add("@应收金额@", StringUtils.GetString(response.ReceivableAmount + response.DeliverFee));
}
data.Add("@优惠金额@", StringUtils.GetString(response.DiscountAmount));
data.Add("@餐盒费@", StringUtils.GetString(response.BoxFee));
data.Add("@配送费用@", StringUtils.GetString(response.DeliverFee));
//data.Add("@退单原因@", response.BackCause);
v.Value = JsonUtils.Serialize(data);
vars.Add(v);
v = new Printer.VariableValue();
v.Key = "点餐列表";
v.DataType = DataType.List;
var list = new List<Dictionary<string, string>>();
foreach (var item in response.Items.Where(f=>!f.Name.Equals("打包费")&&!f.Name.Equals("配送费")))
{
var row = new Dictionary<string, string>();
if (item.SpecName != null && !"".Equals(item.SpecName))
{
Tuple<string, string> nameAdd = Global.Instance.Additional;
row.Add("@名称@", item.Name + nameAdd.Item1 + item.SpecName + nameAdd.Item2);
}
else
{
row.Add("@名称@", item.Name);
}
row.Add("@数量@", string.Format("{0}", item.Quantity));
row.Add("@金额@", string.Format("{0}", item.ReceivableAmount));
row.Add("@原价@", string.Format("{0}", item.Amount));
list.Add(row);
var _fla = item.Flavors.Where(f => !f.Description.Equals("打包费") && !f.Description.Equals("配送费") && !f.Description.Equals("商家优惠")).ToList();
foreach (var _flavor in _fla)
{
row = new Dictionary<string, string>();
if (_flavor.Name.Equals(""))
{
continue;
}
row.Add("@名称@", "-" + _flavor.Name);
row.Add("@数量@", _flavor.Quantity.ToString());
row.Add("@金额@", _flavor.Amount.ToString());
row.Add("@原价@", _flavor.Amount.ToString());
list.Add(row);
}
}
v.Value = JsonUtils.Serialize(list);
vars.Add(v);
return vars;
}
/// <summary>
/// 构建企迈订单打印
/// </summary>
/// <param name="response"></param>
/// <returns></returns>
public static List<Printer.VariableValue> BuilderQiMaiVariable(QiMaiOrder response, bool isRprint)
{
var vars = new List<Printer.VariableValue>();
var v = new Printer.VariableValue();
v.Key = "默认数据源";
v.DataType = DataType.Simple;
var data = new Dictionary<string, string>();
data.Add("@单号@", response.OrderNo);
data.Add("@取餐号@", response.SortNum);
data.Add("@门店名称@", response.MultiStoreName);
data.Add("@付款方式@", "在线支付");
QiMaiOrderPay pays = response.orderPays;
if (pays != null)
{
data.Add("@付款类型@", pays.Name);
}
else
{
data.Add("@付款类型@", "其他支付");
}
data.Add("@下单时间@", response.CreatedTime);
data.Add("@订单状态@", response.StatusText);
data.Add("@就餐人数@", string.Format("{0}", response.PeopleNumber));
if (response.TypeCate == 3)
{
//外卖模式
data.Add("@营业模式@", response.TypeCateText);
data.Add("@手机号@", response.AcceptMobile == null ? "" : response.AcceptMobile);
data.Add("@是否打印餐盒费@", "ture");
data.Add("@是否打印取餐信息@", "false");
data.Add("@是否打印配送信息@", "true");
data.Add("@点餐人@", response.AcceptName == null ? "" : response.AcceptName);
data.Add("@订餐地址@", response.Address == null ? "" : response.Address);
data.Add("@预约时间@", "");
}
else if (response.TypeCate == 2)
{
//堂食模式
data.Add("@营业模式@", response.TypeCateText);
data.Add("@手机号@", response.Moblie == null ? "" : response.Moblie);
data.Add("@是否打印餐盒费@", "false");
data.Add("@是否打印取餐信息@", "true");
data.Add("@是否打印配送信息@", "false");
data.Add("@点餐人@", "");
data.Add("@订餐地址@", "");
data.Add("@预约时间@", "");
}
else if (response.TypeCate == 1)
{
//买单模式
data.Add("@营业模式@", response.TypeCateText);
data.Add("@手机号@", "");
data.Add("@是否打印餐盒费@", "false");
data.Add("@是否打印取餐信息@", "false");
data.Add("@是否打印配送信息@", "false");
data.Add("@点餐人@", "");
data.Add("@订餐地址@", "");
data.Add("@预约时间@", "");
}
else if (response.TypeCate == 6)
{
//预约模式
data.Add("@营业模式@", response.TypeCateText);
data.Add("@手机号@", response.Moblie == null ? "" : response.Moblie);
data.Add("@是否打印餐盒费@", "false");
data.Add("@是否打印取餐信息@", "false");
data.Add("@是否打印配送信息@", "false");
data.Add("@点餐人@", "");
data.Add("@订餐地址@", "");
data.Add("@预约时间@", response.MealTime);
}
data.Add("@餐桌号@", response.TableNumber == null ? "" : response.TableNumber);
data.Add("@订单备注@", response.Postscript == null ? "" : response.Postscript);
if (isRprint)
{
data.Add("@是否补打@", "(补打单)");
}
else
{
data.Add("@是否补打@", "");
}
data.Add("@订单原价@", StringUtils.GetString(response.TotalAmount));
data.Add("@优惠金额@", StringUtils.GetString(response.MinusAmount));
data.Add("@应收金额@", StringUtils.GetString(response.TotalAmount - response.MinusAmount));
data.Add("@餐盒费@", StringUtils.GetString(response.TablewarePrice));
data.Add("@配送费用@", StringUtils.GetString(response.Freight));
data.Add("@退单原因@", "");
v.Value = JsonUtils.Serialize(data);
vars.Add(v);
v = new Printer.VariableValue();
v.Key = "点餐列表";
v.DataType = DataType.List;
var list = new List<Dictionary<string, string>>();
foreach (QiMaiOrderItem item in response.orderItems.Goods)
{
var row = new Dictionary<string, string>();
if (item.Spec != null && !"".Equals(item.Spec) && !"[]".Equals(item.Spec.ToString()))
{
string specName = "";
Dictionary<string, string> map = JsonUtils.Deserialize<Dictionary<string, string>>(item.Spec.ToString());
foreach (var mapValue in map)
{
specName = mapValue.Value + ",";
}
if (specName != null && !"".Equals(specName))
{
specName = specName.Substring(0, specName.Length - 1);
}
string attachgoods = "";
if (item.OrderAttachGoods != null && !"".Equals(item.OrderAttachGoods) && !"[]".Equals(item.OrderAttachGoods))
{
List<QiMaiOrderAttachGoods> attachGoods = JsonUtils.Deserialize<List<QiMaiOrderAttachGoods>>(item.OrderAttachGoods.ToString());
foreach (QiMaiOrderAttachGoods qiMaiOrderAttachGoods in attachGoods)
{
attachgoods = "," + attachgoods + string.Format("{0}*{1}", qiMaiOrderAttachGoods.Name, qiMaiOrderAttachGoods.Qty);
}
}
item.PropertyName = string.Format("{0}{1}", item.Property, attachgoods);
if (item.Property != null && !"".Equals(item.PropertyName))
{
specName = specName + "," + item.PropertyName;
}
Tuple<string, string> nameAdd = Global.Instance.Additional;
row.Add("@名称@", item.Name + nameAdd.Item1 + specName + nameAdd.Item2);
}
else
{
string attachgoods = "";
if (item.OrderAttachGoods != null && !"".Equals(item.OrderAttachGoods) && !"[]".Equals(item.OrderAttachGoods))
{
List<QiMaiOrderAttachGoods> attachGoods = JsonUtils.Deserialize<List<QiMaiOrderAttachGoods>>(item.OrderAttachGoods.ToString());
foreach (QiMaiOrderAttachGoods qiMaiOrderAttachGoods in attachGoods)
{
attachgoods = "," + attachgoods + string.Format("{0}*{1}", qiMaiOrderAttachGoods.Name, qiMaiOrderAttachGoods.Qty);
}
}
item.PropertyName = string.Format("{0}{1}", item.Property, attachgoods);
if (item.PropertyName != null && !"".Equals(item.PropertyName))
{
Tuple<string, string> nameAdd = Global.Instance.Additional;
row.Add("@名称@", item.Name + nameAdd.Item1 + item.PropertyName + nameAdd.Item2);
}
else
{
row.Add("@名称@", item.Name);
}
}
row.Add("@数量@", string.Format("{0}", item.Num));
row.Add("@金额@", string.Format("{0}", item.Price * item.Num));
list.Add(row);
}
v.Value = JsonUtils.Serialize(list);
vars.Add(v);
return vars;
}
public static Tuple<bool, string> PrinterTicket(string prefix, List<VariableValue> args)
{
Tuple<bool, string> result = null;
try
{
//票头空白行
int headerLine = 0;
//票尾空白行
int footerLine = 0;
//小票打印份数
int ticketCount = 1;
//打印延迟
int delaySecond = 1;
//切纸
bool cutPager = false;
PrinterObject pobject = null;
//打印票据类型,是否打印厨打票,否则打印小票
var printKitchen = Global.Instance.GlobalConfigBoolValue(ConfigConstant.PERIPHERAL_WM_PRINTERKITCHERTICKET, false);
//单独配置外卖打印机
var wmPrinterAlone = Global.Instance.GlobalConfigBoolValue(ConfigConstant.PERIPHERAL_WM_WMPRINTERALONE, false);
//厨打机同时打印外卖厨打票(适用于菜品未映射的厨打模式)
var wmPrinterKit = Global.Instance.GlobalConfigBoolValue(ConfigConstant.PERIPHERAL_WM_WMPRINTERKIT, false);
wmPrinterAlone = wmPrinterAlone && !prefix.Contains("微信订单") && !prefix.Contains("在线订单");//排除微信订单,微信订单不算外卖,不走单独打印小票
if (wmPrinterAlone)
{
//外卖打印机单独使用
cutPager = Global.Instance.GlobalConfigBoolValue(ConfigConstant.PERIPHERAL_WM_CASHIER_ALLOW_CUT_PAGER, false);
//打印延迟
delaySecond = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_WM_CASHIER_PRINT_DELAY, 1);
//小票打印份数
ticketCount = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_WM_CASHIER_TICKET_COUNT, 1);
//票尾空白行
footerLine = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_WM_CASHIER_FOOTER_EMPTY, 0);
//票头空白行
headerLine = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_WM_CASHIER_HEADER_EMPTY, 0);
//打印机
pobject = GetTicketPrinterObject("外卖打印机", cutPager, false);
}
//else if (wmPrinterKit) {
// //同时发往所有厨打打印机
//}
else
{
//和小票机共用的打印机
cutPager = Global.Instance.GlobalConfigBoolValue(ConfigConstant.PERIPHERAL_CASHIER_ALLOW_CUT_PAGER, false);
//打印延迟
delaySecond = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_CASHIER_PRINT_DELAY, 1);
//小票打印份数
ticketCount = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_CASHIER_TICKET_COUNT, 1);
//票尾空白行
footerLine = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_CASHIER_FOOTER_EMPTY, 0);
//票头空白行
headerLine = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_CASHIER_HEADER_EMPTY, 0);
//打印机
pobject = GetTicketPrinterObject("收银台打印机", cutPager, false);
}
for (int i = 1; i <= ticketCount; i++)
{
//执行收银小票打印
logger.Info("开始打印外卖收银小票");
if (wmPrinterAlone && printKitchen)
{
var tempPrefix = "外卖厨打";
var prt = PrinterTicket(pobject, tempPrefix, args, cutPager, false, headerLine, footerLine);
logger.Info("外卖打印机打印厨打模板第<{0}>次小票打印结果<{1},{2}>", i, prt.Item1, prt.Item2);
}
else
{
var prt = PrinterTicket(pobject, prefix, args, cutPager, false, headerLine, footerLine);
logger.Info("外卖第<{0}>次小票打印结果<{1},{2}>", i, prt.Item1, prt.Item2);
}
if (delaySecond > 0)
{
Thread.Sleep(delaySecond * 1000);
}
}
//外卖单独打印且收银台同时打印,继续执行收银台打印
var toDeskSame = Global.Instance.GlobalConfigBoolValue(ConfigConstant.PERIPHERAL_WM_CASHIER_TICKET_TODESKSAME, false);
if (wmPrinterAlone && toDeskSame)
{
var deskTicketCount = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_WM_CASHIER_DESK_TICKET_COUNT, 0);
//执行收银小票打印
var deskPrinterObject = GetTicketPrinterObject("收银台打印机", cutPager, false);
for (int i = 1; i <= deskTicketCount; i++)
{
logger.Info("开始打印外卖收银小票收银台打印");
var prt = PrinterTicket(deskPrinterObject, prefix, args, cutPager, false, headerLine, footerLine);
logger.Info("外卖第<{0}>次小票收银台打印结果<{1},{2}>", i, prt.Item1, prt.Item2);
if (delaySecond > 0)
{
Thread.Sleep(delaySecond * 1000);
}
}
}
result = new Tuple<bool, string>(true, "打印成功");
}
catch (Exception ex)
{
logger.Error(ex, "外卖小票打印异常");
result = new Tuple<bool, string>(false, "外卖小票打印异常");
}
return result;
}
public static Tuple<bool, string> PrinterTicket(PrinterObject pobject, string prefix, List<VariableValue> args, bool cutPager, bool openCashbox, int headerLine, int footerLine)
{
Tuple<bool, string> result = null;
try
{
string fileName = string.Format(@"template\waimaiPrint\{0}_{1}_{2}.designer", prefix, Global.Instance.Authc.TenantId, pobject.PageWidth);
string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
if (!File.Exists(filePath))
{
fileName = string.Format(@"template\waimaiPrint\{0}_通用模版_{1}.designer", prefix, pobject.PageWidth);
}
string template = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
if (File.Exists(template))
{
string json = System.IO.File.ReadAllText(template);
DesignerSurface surface = JSON.Deserialize<DesignerSurface>(json);
if (pobject.PortType == PortType. && pobject.Name.Contains("针式驱动打印"))
{
WinPrint.Print(pobject.Data.FirstOrDefault(f => f.Key == "drive").Value, surface, args);
result = new Tuple<bool, string>(true, "");
}
else
{
PrinterTemplate printer = surface.Parse(args);
var pcontent = printer.Parse(pobject, args, headerLine, footerLine);
result = PrinterUtils.PrintContent(pobject, pcontent);
}
result = new Tuple<bool, string>(true, "打印成功");
}
else
{
result = new Tuple<bool, string>(false, "打印模版没有配置");
}
}
catch (Exception ex)
{
result = new Tuple<bool, string>(false, "打印异常了");
}
return result;
}
}
}