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.
790 lines
34 KiB
C#
790 lines
34 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 POSV.StoreBusiness;
|
|
|
|
namespace POSV.Helper
|
|
{
|
|
public class ReportHelper
|
|
{
|
|
/// <summary>
|
|
/// 获取系统配置的收银小票打印机
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static PrinterObject GetTicketPrinterObject(bool cutPager, bool openCashbox)
|
|
{
|
|
var pobject = new PrinterObject();
|
|
|
|
var 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;
|
|
|
|
//回退行数
|
|
pobject.EscPosCommand.FeedBackCommand = printer.FeedBackCommand;
|
|
//退纸行数
|
|
int feedBackRow = Global.Instance.GlobalConfigIntValue(ConfigConstant.CONFIG_CASHIER_FEEDBACK_ROW, 0);
|
|
pobject.FeedBackRow = feedBackRow;
|
|
|
|
return pobject;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 构建销售分析参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderPrintSalesSummaryVariable(PrintSalesSummary printSalesSummary)
|
|
{
|
|
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("@门店名称@", printSalesSummary.StoreName);
|
|
data.Add("@门店编码@", printSalesSummary.StoreNo);
|
|
data.Add("@收银员编码@", printSalesSummary.WorkerNo);
|
|
data.Add("@收银员名称@", printSalesSummary.WorkerName);
|
|
data.Add("@打印时间@", printSalesSummary.PrintTime);
|
|
data.Add("@开始时间@", printSalesSummary.StartTime);
|
|
data.Add("@结束时间@", printSalesSummary.EndTime);
|
|
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 printSalesSummary.Items)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
row.Add("@名称@", item.Name);
|
|
row.Add("@数量@", string.Format("{0}", item.ItemCount));
|
|
row.Add("@套餐数量@", string.Format("{0}", item.ItemSuitQuantity));
|
|
row.Add("@应收金额@", string.Format("{0}", item.ItemAmount));
|
|
list.Add(row);
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
/// <summary>
|
|
/// 构建营业分析参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderBusinessSummaryVariable(PrintBusinessSummary printBusinessSummary)
|
|
{
|
|
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("@门店名称@", printBusinessSummary.StoreName);
|
|
data.Add("@门店编码@", printBusinessSummary.StoreNo);
|
|
data.Add("@收银员编码@", printBusinessSummary.WorkerNo);
|
|
data.Add("@收银员名称@", printBusinessSummary.WorkerName);
|
|
data.Add("@打印时间@", printBusinessSummary.PrintTime);
|
|
data.Add("@开始时间@", printBusinessSummary.StartTime);
|
|
data.Add("@结束时间@", printBusinessSummary.EndTime);
|
|
data.Add("@总人数@", printBusinessSummary.TotalPeople);
|
|
data.Add("@总单数@", printBusinessSummary.TotalCount);
|
|
data.Add("@总金额@", printBusinessSummary.TotalAmount);
|
|
data.Add("@优惠总额@", printBusinessSummary.TotalDiscount);
|
|
data.Add("@应收总额@", printBusinessSummary.TotalMoney);
|
|
data.Add("@人均@", printBusinessSummary.Rj);
|
|
data.Add("@单均@", printBusinessSummary.Dj);
|
|
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 printBusinessSummary.Items)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
row.Add("@名称@", item.Name);
|
|
row.Add("@数量@", string.Format("{0}", item.Count));
|
|
row.Add("@金额@", string.Format("{0}", item.ReceivableAmount));
|
|
list.Add(row);
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 构建优惠明细参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderDiscountVariable(PrintSalesSummaryDiscount printSalesSummaryDiscount)
|
|
{
|
|
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("@门店名称@", printSalesSummaryDiscount.StoreName);
|
|
data.Add("@门店编码@", printSalesSummaryDiscount.StoreNo);
|
|
data.Add("@收银员编码@", printSalesSummaryDiscount.WorkerNo);
|
|
data.Add("@收银员名称@", printSalesSummaryDiscount.WorkerName);
|
|
data.Add("@打印时间@", printSalesSummaryDiscount.PrintTime);
|
|
data.Add("@开始时间@", printSalesSummaryDiscount.StartTime);
|
|
data.Add("@结束时间@", printSalesSummaryDiscount.EndTime);
|
|
data.Add("@总金额@", printSalesSummaryDiscount.TotalMoney);
|
|
data.Add("@总数量@", printSalesSummaryDiscount.TotalCount);
|
|
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 printSalesSummaryDiscount.Items)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
if (item.SpecName != null && !"".Equals(item.SpecName))
|
|
{
|
|
row.Add("@名称@", item.ProductName + "(" + item.SpecName + ")");
|
|
}
|
|
else
|
|
{
|
|
row.Add("@名称@", item.ProductName);
|
|
}
|
|
|
|
if (item.ProductName.StartsWith("★★"))
|
|
{
|
|
row.Add("@数量@", "");
|
|
row.Add("@金额@", "");
|
|
}
|
|
else
|
|
{
|
|
row.Add("@数量@", string.Format("{0}", item.Count));
|
|
row.Add("@金额@", string.Format("{0}", item.DiscountAmount));
|
|
}
|
|
list.Add(row);
|
|
if (item.ProductName == "小计" && item != printSalesSummaryDiscount.Items[printSalesSummaryDiscount.Items.Count - 1])
|
|
{
|
|
var emptyRow = new Dictionary<string, string>();
|
|
emptyRow.Add("@名称@", "");
|
|
emptyRow.Add("@数量@", "");
|
|
emptyRow.Add("@金额@", "");
|
|
list.Add(emptyRow);
|
|
}
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
/// <summary>
|
|
/// 构建单品汇总参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderDishVariable(PrintSalesSummaryDish printSalesSummaryDish)
|
|
{
|
|
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("@门店名称@", printSalesSummaryDish.StoreName);
|
|
data.Add("@门店编码@", printSalesSummaryDish.StoreNo);
|
|
data.Add("@收银员编码@", printSalesSummaryDish.WorkerNo);
|
|
data.Add("@收银员名称@", printSalesSummaryDish.WorkerName);
|
|
data.Add("@打印时间@", printSalesSummaryDish.PrintTime);
|
|
data.Add("@开始时间@", printSalesSummaryDish.StartTime);
|
|
data.Add("@结束时间@", printSalesSummaryDish.EndTime);
|
|
data.Add("@总金额@", printSalesSummaryDish.TotalMoney);
|
|
data.Add("@总数量@", printSalesSummaryDish.TotalCount);
|
|
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 printSalesSummaryDish.Items)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
if (item.SpecName != null && !"".Equals(item.SpecName))
|
|
{
|
|
row.Add("@名称@", item.ProductName + "(" + item.SpecName + ")");
|
|
}
|
|
else
|
|
{
|
|
row.Add("@名称@", item.ProductName);
|
|
}
|
|
|
|
if (item.ProductName.StartsWith("★★"))
|
|
{
|
|
row.Add("@数量@", "");
|
|
row.Add("@金额@", "");
|
|
}
|
|
else
|
|
{
|
|
row.Add("@数量@", string.Format("{0}", item.SumCount));
|
|
row.Add("@金额@", string.Format("{0}", item.SumRealMoney));
|
|
}
|
|
row.Add("@占比@", string.Format("{0}", item.SumRealMoneyScale));
|
|
list.Add(row);
|
|
if (item.ProductName == "小计" && item != printSalesSummaryDish.Items[printSalesSummaryDish.Items.Count - 1])
|
|
{
|
|
var emptyRow = new Dictionary<string, string>();
|
|
emptyRow.Add("@名称@", "");
|
|
emptyRow.Add("@数量@", "");
|
|
emptyRow.Add("@金额@", "");
|
|
emptyRow.Add("@占比@", "");
|
|
list.Add(emptyRow);
|
|
}
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
/// <summary>
|
|
/// 构建单品汇总参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderDishVariable1(PrintSalesSummaryDish printSalesSummaryDish)
|
|
{
|
|
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("@门店名称@", printSalesSummaryDish.StoreName);
|
|
data.Add("@门店编码@", printSalesSummaryDish.StoreNo);
|
|
data.Add("@收银员编码@", printSalesSummaryDish.WorkerNo);
|
|
data.Add("@收银员名称@", printSalesSummaryDish.WorkerName);
|
|
data.Add("@打印时间@", printSalesSummaryDish.PrintTime);
|
|
data.Add("@开始时间@", printSalesSummaryDish.StartTime);
|
|
data.Add("@结束时间@", printSalesSummaryDish.EndTime);
|
|
data.Add("@总金额@", printSalesSummaryDish.TotalMoney);
|
|
data.Add("@总数量@", printSalesSummaryDish.TotalCount);
|
|
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 printSalesSummaryDish.Items)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
if (item.SpecName != null && !"".Equals(item.SpecName))
|
|
{
|
|
row.Add("@名称@", item.ProductName + "(" + item.SpecName + ")");
|
|
}
|
|
else
|
|
{
|
|
row.Add("@名称@", item.ProductName);
|
|
}
|
|
|
|
row.Add("@数量@", string.Format("{0}", item.SumCount));
|
|
row.Add("@金额@", string.Format("{0}", item.SumRealMoney));
|
|
|
|
row.Add("@占比@", string.Format("{0}", item.SumRealMoneyScale));
|
|
list.Add(row);
|
|
if (item.ProductName == "小计" && item != printSalesSummaryDish.Items[printSalesSummaryDish.Items.Count - 1])
|
|
{
|
|
var emptyRow = new Dictionary<string, string>();
|
|
emptyRow.Add("@名称@", "");
|
|
emptyRow.Add("@数量@", "");
|
|
emptyRow.Add("@金额@", "");
|
|
emptyRow.Add("@占比@", "");
|
|
list.Add(emptyRow);
|
|
}
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
/// <summary>
|
|
/// 构建单品汇总参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> SalesDayDetailSummaryVariable(List<SalesDayDetailSummaryResponse> salesDays, SalesDayDetailSummaryRequest request)
|
|
{
|
|
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("@门店名称@", Global.Instance.Worker.StoreInfo.Name);
|
|
data.Add("@门店编码@", Global.Instance.Worker.StoreInfo.No);
|
|
data.Add("@收银员编码@", Global.Instance.Worker.No);
|
|
data.Add("@收银员名称@", Global.Instance.Worker.Name);
|
|
data.Add("@打印时间@", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
data.Add("@开始时间@", request.StartDate);
|
|
data.Add("@结束时间@", request.EndDate);
|
|
data.Add("@总金额@", salesDays.FirstOrDefault(f => f.ProductName == "合计")?.Amount.ToString());
|
|
data.Add("@总数量@", salesDays.FirstOrDefault(f => f.ProductName == "合计")?.Count.ToString());
|
|
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 salesDays)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
if (item.SpecName != null && !"".Equals(item.SpecName))
|
|
{
|
|
row.Add("@名称@", item.ProductName + "(" + item.SpecName + ")");
|
|
}
|
|
else
|
|
{
|
|
row.Add("@名称@", item.ProductName);
|
|
}
|
|
|
|
if (item.ProductName.StartsWith("★★"))
|
|
{
|
|
row.Add("@数量@", "");
|
|
row.Add("@金额@", "");
|
|
}
|
|
else
|
|
{
|
|
row.Add("@数量@", string.Format("{0}", item.Count));
|
|
row.Add("@金额@", string.Format("{0}", item.Amount));
|
|
}
|
|
row.Add("@占比@", string.Format("{0}", item.AmountRate));
|
|
list.Add(row);
|
|
|
|
//if (item.ProductName == "小计" && item != printSalesSummaryDish.Items[printSalesSummaryDish.Items.Count - 1])
|
|
//{
|
|
// var emptyRow = new Dictionary<string, string>();
|
|
// emptyRow.Add("@名称@", "");
|
|
// emptyRow.Add("@数量@", "");
|
|
// emptyRow.Add("@金额@", "");
|
|
// emptyRow.Add("@占比@", "");
|
|
// list.Add(emptyRow);
|
|
//}
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 构建单品汇总参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderCategoryVariable(PrintSalesSummaryCategory printSalesSummaryCategory)
|
|
{
|
|
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("@门店名称@", printSalesSummaryCategory.StoreName);
|
|
data.Add("@门店编码@", printSalesSummaryCategory.StoreNo);
|
|
data.Add("@收银员编码@", printSalesSummaryCategory.WorkerNo);
|
|
data.Add("@收银员名称@", printSalesSummaryCategory.WorkerName);
|
|
data.Add("@打印时间@", printSalesSummaryCategory.PrintTime);
|
|
data.Add("@开始时间@", printSalesSummaryCategory.StartTime);
|
|
data.Add("@结束时间@", printSalesSummaryCategory.EndTime);
|
|
data.Add("@总金额@", printSalesSummaryCategory.TotalMoney);
|
|
data.Add("@总数量@", printSalesSummaryCategory.TotalCount);
|
|
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 printSalesSummaryCategory.Items)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
row.Add("@名称@", item.TypeName);
|
|
row.Add("@数量@", string.Format("{0}", item.SumCount));
|
|
row.Add("@金额@", string.Format("{0}", item.SumRealMoney));
|
|
row.Add("@占比@", string.Format("{0}", item.SumRealMoneyScale));
|
|
list.Add(row);
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 构建规格分析参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderSpecVariable(PrintSalesSummarySpec printSalesSummarySpec)
|
|
{
|
|
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("@门店名称@", printSalesSummarySpec.StoreName);
|
|
data.Add("@门店编码@", printSalesSummarySpec.StoreNo);
|
|
data.Add("@收银员编码@", printSalesSummarySpec.WorkerNo);
|
|
data.Add("@收银员名称@", printSalesSummarySpec.WorkerName);
|
|
data.Add("@打印时间@", printSalesSummarySpec.PrintTime);
|
|
data.Add("@开始时间@", printSalesSummarySpec.StartTime);
|
|
data.Add("@结束时间@", printSalesSummarySpec.EndTime);
|
|
data.Add("@总金额@", printSalesSummarySpec.TotalMoney);
|
|
data.Add("@总数量@", printSalesSummarySpec.TotalCount);
|
|
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 printSalesSummarySpec.Items)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
row.Add("@名称@", item.SpecName);
|
|
row.Add("@数量@", string.Format("{0}", item.SumCount));
|
|
row.Add("@金额@", string.Format("{0}", item.SumRealMoney));
|
|
row.Add("@占比@", string.Format("{0}", item.SumRealMoneyScale));
|
|
list.Add(row);
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 构建做法分析参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderMakeVariable(PrintSalesSummaryMake printSalesSummaryMake)
|
|
{
|
|
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("@门店名称@", printSalesSummaryMake.StoreName);
|
|
data.Add("@门店编码@", printSalesSummaryMake.StoreNo);
|
|
data.Add("@收银员编码@", printSalesSummaryMake.WorkerNo);
|
|
data.Add("@收银员名称@", printSalesSummaryMake.WorkerName);
|
|
data.Add("@打印时间@", printSalesSummaryMake.PrintTime);
|
|
data.Add("@开始时间@", printSalesSummaryMake.StartTime);
|
|
data.Add("@结束时间@", printSalesSummaryMake.EndTime);
|
|
data.Add("@总金额@", printSalesSummaryMake.TotalMoney);
|
|
data.Add("@总数量@", printSalesSummaryMake.TotalCount);
|
|
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 printSalesSummaryMake.Items)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
row.Add("@名称@", item.MakeName);
|
|
row.Add("@数量@", string.Format("{0}", item.SumCount));
|
|
row.Add("@金额@", string.Format("{0}", item.SumRealMoney));
|
|
row.Add("@占比@", string.Format("{0}", item.SumRealMoneyScale));
|
|
list.Add(row);
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 构建收银方式汇总参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderPayVariable(PrintSalesPaySummary printSalesPaySummary)
|
|
{
|
|
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("@门店名称@", printSalesPaySummary.StoreName);
|
|
data.Add("@门店编码@", printSalesPaySummary.StoreNo);
|
|
data.Add("@收银员编码@", printSalesPaySummary.WorkerNo);
|
|
data.Add("@收银员名称@", printSalesPaySummary.WorkerName);
|
|
data.Add("@打印时间@", printSalesPaySummary.PrintTime);
|
|
data.Add("@开始时间@", printSalesPaySummary.StartTime);
|
|
data.Add("@结束时间@", printSalesPaySummary.EndTime);
|
|
data.Add("@总金额@", printSalesPaySummary.TotalMoney);
|
|
data.Add("@总数量@", printSalesPaySummary.TotalCount);
|
|
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 printSalesPaySummary.Items)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
row.Add("@名称@", item.PayTypeName);
|
|
row.Add("@数量@", string.Format("{0}", item.PayCount));
|
|
row.Add("@金额@", string.Format("{0}", item.Amount));
|
|
row.Add("@占比@", string.Format("{0}", item.SumRealMoneyScale));
|
|
list.Add(row);
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 构建第三方外卖汇总参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderOtherWaiMaiSummaryVariable(PrintOtherWaiMaiSummary printOtherWaiMaiSummary, List<WaimaiOrderStatisticsResponse> statisticsResponse)
|
|
{
|
|
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("@门店名称@", printOtherWaiMaiSummary.StoreName);
|
|
data.Add("@门店编码@", printOtherWaiMaiSummary.StoreNo);
|
|
data.Add("@收银员编码@", printOtherWaiMaiSummary.WorkerNo);
|
|
data.Add("@收银员名称@", printOtherWaiMaiSummary.WorkerName);
|
|
data.Add("@打印时间@", printOtherWaiMaiSummary.PrintTime);
|
|
data.Add("@开始时间@", printOtherWaiMaiSummary.StartTime);
|
|
data.Add("@结束时间@", printOtherWaiMaiSummary.EndTime);
|
|
data.Add("@总单数@", printOtherWaiMaiSummary.Total);
|
|
data.Add("@完成数@", printOtherWaiMaiSummary.Success);
|
|
data.Add("@退单数@", printOtherWaiMaiSummary.Failed);
|
|
data.Add("@其他数@", printOtherWaiMaiSummary.Other);
|
|
|
|
data.Add("@订单总额@", printOtherWaiMaiSummary.OriginalAmount);
|
|
data.Add("@配送费用@", printOtherWaiMaiSummary.ShippingFee);
|
|
data.Add("@原价总额@", printOtherWaiMaiSummary.TotalAmount);
|
|
data.Add("@门店实得@", printOtherWaiMaiSummary.ReceiveAmount);
|
|
|
|
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 statisticsResponse)
|
|
{
|
|
if ("合计".Equals(item.SignName))
|
|
{
|
|
break;
|
|
}
|
|
var row = new Dictionary<string, string>();
|
|
row.Add("@名称@", item.SignName);
|
|
row.Add("@总单数@", string.Format("{0}", item.Total));
|
|
row.Add("@完成数@", string.Format("{0}", item.Success));
|
|
row.Add("@退单数@", string.Format("{0}", item.Failed));
|
|
row.Add("@其他数@", string.Format("{0}", item.Other));
|
|
row.Add("@订单总额@", string.Format("{0}", item.OriginalAmount));
|
|
row.Add("@配送费用@", string.Format("{0}", item.ShippingFee));
|
|
row.Add("@原价总额@", string.Format("{0}", item.TotalAmount));
|
|
row.Add("@门店实得@", string.Format("{0}", item.ReceiveAmount));
|
|
|
|
list.Add(row);
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 构建收银方式汇总参数变量
|
|
/// </summary>
|
|
/// <param name="orderObject"></param>
|
|
/// <returns></returns>
|
|
public static List<Printer.VariableValue> BuilderTimeVariable(PrintTimeSummaryTicket printTimeSummaryTicket)
|
|
{
|
|
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("@门店名称@", printTimeSummaryTicket.StoreName);
|
|
data.Add("@门店编码@", printTimeSummaryTicket.StoreNo);
|
|
data.Add("@收银员编码@", printTimeSummaryTicket.WorkerNo);
|
|
data.Add("@收银员名称@", printTimeSummaryTicket.WorkerName);
|
|
data.Add("@打印时间@", printTimeSummaryTicket.PrintTime);
|
|
data.Add("@开始时间@", printTimeSummaryTicket.StartTime);
|
|
data.Add("@结束时间@", printTimeSummaryTicket.EndTime);
|
|
data.Add("@总金额@", printTimeSummaryTicket.TotalMoney);
|
|
data.Add("@总数量@", printTimeSummaryTicket.TotalCount);
|
|
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 printTimeSummaryTicket.Items)
|
|
{
|
|
var row = new Dictionary<string, string>();
|
|
row.Add("@名称@", item.DateHour);
|
|
row.Add("@数量@", string.Format("{0}", item.SumCount));
|
|
row.Add("@金额@", string.Format("{0}", item.SumAmount));
|
|
list.Add(row);
|
|
}
|
|
v.Value = JsonUtils.Serialize(list);
|
|
vars.Add(v);
|
|
return vars;
|
|
}
|
|
|
|
public static Tuple<bool, string> PrinterTicket(string prefix, List<VariableValue> args, bool cutPager, bool openCashbox, int headerLine=0, int footerLine=0)
|
|
{
|
|
Tuple<bool, string> result = null;
|
|
|
|
try
|
|
{
|
|
var pobject = GetTicketPrinterObject(cutPager, false);
|
|
|
|
string fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, string.Format(@"template\reportPrinter\{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\reportPrinter\{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);
|
|
|
|
PrinterTemplate printer = surface.Parse(args);
|
|
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
|
|
{
|
|
//var pcontent = printer.Parse(pobject, args);
|
|
var pcontent = printer.Parse(pobject, args, headerLine, footerLine);
|
|
//启动新任务
|
|
Task.Factory.StartNew(() =>
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
}
|