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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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