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.

208 lines
8.0 KiB
C#

9 months ago
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);
// }
//}
}
}