|
|
using log4net;
|
|
|
using POSV.Service;
|
|
|
using POSV.Common.JsonObject;
|
|
|
using POSV.WindowsService.Core.Utils;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using POSV.Common;
|
|
|
using POSV.Service.Entity;
|
|
|
using POSV.Service.Utils;
|
|
|
|
|
|
namespace POSV.WindowsService.Core.OrderPackage
|
|
|
{
|
|
|
public class OrderUtils
|
|
|
{
|
|
|
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
|
|
|
public static void DistributeOrder2KDS(string id, KDSCategory target)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
using(var db = Global.Instance.OpenDataBase)
|
|
|
{
|
|
|
var order = db.FirstOrDefault<ServiceOrder>("where id = @0", id);
|
|
|
if(order != null)
|
|
|
{
|
|
|
var items = db.Query<ServiceOrderItem>("where serviceId = @0", id);
|
|
|
order.Items = items.ToList();
|
|
|
|
|
|
DistributeOrder2KDS(order, target);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch(Exception ex)
|
|
|
{
|
|
|
logger.Error(ex,"组装分发数据异常");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 分发订单到kds
|
|
|
/// </summary>
|
|
|
/// <param name="order"></param>
|
|
|
/// <param name="target"></param>
|
|
|
public static void DistributeOrder2KDS(ServiceOrder order, KDSCategory target)
|
|
|
{
|
|
|
var deviceDic = new Dictionary<string, ServiceOrder>();
|
|
|
|
|
|
foreach(var item in order.Items)
|
|
|
{
|
|
|
switch (target)
|
|
|
{
|
|
|
case KDSCategory.厨显:
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(item.HuacaiDevice) && item.SyncHuacaiStatus == 0)
|
|
|
{
|
|
|
if (deviceDic.ContainsKey(item.HuacaiDevice))
|
|
|
{
|
|
|
deviceDic[item.HuacaiDevice].Items.Add(item);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var tempOrder = ObjectUtils.Copy(order);
|
|
|
tempOrder.Items = new List<ServiceOrderItem>();
|
|
|
tempOrder.Items.Add(item);
|
|
|
deviceDic.Add(item.HuacaiDevice, tempOrder);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case KDSCategory.出品:
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(item.ChupinDevice) && item.SyncChupinStatus == 0)
|
|
|
{
|
|
|
if (deviceDic.ContainsKey(item.ChupinDevice))
|
|
|
{
|
|
|
deviceDic[item.ChupinDevice].Items.Add(item);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var tempOrder = ObjectUtils.Copy(order);
|
|
|
tempOrder.Items = new List<ServiceOrderItem>();
|
|
|
tempOrder.Items.Add(item);
|
|
|
deviceDic.Add(item.ChupinDevice, tempOrder);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
foreach(var device in deviceDic.Keys)
|
|
|
{
|
|
|
var key = "KDS-" + device;
|
|
|
if (SessionManager.SessionDic.ContainsKey(key))
|
|
|
{
|
|
|
logger.Info("kds历史数据分发:" + Json.Serialize(deviceDic[device]));
|
|
|
var msg = string.Format("{0} {1}", CommandName.NEWORDER, Json.Serialize(deviceDic[device]));
|
|
|
SessionManager.SessionDic[key].Send(msg);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//kds不在线,记录错误次数
|
|
|
logger.Info(string.Format("设备<{0}>离线,放弃本次发送", key));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static void SendHuacaiOrder2Chupin(string serviceId)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
List<ServiceOrderItem> itemList = null;
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
{
|
|
|
itemList = db.Fetch<ServiceOrderItem>("where serviceId = @0 and huacai2chupinNum = 0 and chupinDevice is not null and chupinDevice != 'None'", serviceId);
|
|
|
}
|
|
|
if (itemList != null && itemList.Count > 0)
|
|
|
{
|
|
|
var deviceDic = new Dictionary<string, KdsHuacai>();
|
|
|
|
|
|
foreach (var item in itemList)
|
|
|
{
|
|
|
KdsHuacaiItem hua = new KdsHuacaiItem();
|
|
|
hua.ServiceId = item.ServiceId;
|
|
|
hua.ItemId = item.Id;
|
|
|
hua.HuacaiTime = item.HuacaiTime;
|
|
|
|
|
|
if (deviceDic.ContainsKey(item.ChupinDevice))
|
|
|
{
|
|
|
deviceDic[item.ChupinDevice].Data.Add(hua);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
KdsHuacai temp = new KdsHuacai();
|
|
|
temp.Data = new List<KdsHuacaiItem>();
|
|
|
temp.Data.Add(hua);
|
|
|
deviceDic.Add(item.ChupinDevice, temp);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
foreach (var device in deviceDic.Keys)
|
|
|
{
|
|
|
var key = "KDS-" + device;
|
|
|
if (SessionManager.SessionDic.ContainsKey(key))
|
|
|
{
|
|
|
logger.Info("订单项划菜通知出品内容:" + Json.Serialize(deviceDic[device]));
|
|
|
var msg = string.Format("{0} {1}", CommandName.KDSHUACAI, Json.Serialize(deviceDic[device]));
|
|
|
SessionManager.SessionDic[key].Send(msg);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//kds不在线,记录错误次数
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
logger.Error(ex,"订单项划菜通知出品异常");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 订单项划菜通知出品
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
//public static void SendOrderItem2Chupin(string id)
|
|
|
//{
|
|
|
// try
|
|
|
// {
|
|
|
// ServiceOrderItem item = null;
|
|
|
// using(var db = Global.Instance.OpenDataBase)
|
|
|
// {
|
|
|
// item = db.FirstOrDefault<ServiceOrderItem>("where id = @0", id);
|
|
|
// }
|
|
|
// if(item != null)
|
|
|
// {
|
|
|
// if(!string.IsNullOrEmpty(item.ChupinDevice) && item.ChupinDevice != "None")
|
|
|
// {
|
|
|
// var key = "KDS-" + item.ChupinDevice;
|
|
|
// if (SessionManager.SessionDic.ContainsKey(key))
|
|
|
// {
|
|
|
// KdsHuacai hua = new KdsHuacai();
|
|
|
// hua.ItemId = item.Id;
|
|
|
// hua.HuacaiTime = item.HuacaiTime;
|
|
|
// logger.Info("订单项划菜通知出品内容:" + Json.Serialize(hua));
|
|
|
// var msg = string.Format("{0} {1}", CommandName.KDSHUACAI, Json.Serialize(hua));
|
|
|
// SessionManager.SessionDic[key].Send(msg);
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// //kds不在线,记录错误次数
|
|
|
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
// catch(Exception ex)
|
|
|
// {
|
|
|
// logger.Error("订单项划菜通知出品异常", ex);
|
|
|
// }
|
|
|
//}
|
|
|
}
|
|
|
}
|