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("where id = @0", id); if(order != null) { var items = db.Query("where serviceId = @0", id); order.Items = items.ToList(); DistributeOrder2KDS(order, target); } } } catch(Exception ex) { logger.Error(ex,"组装分发数据异常"); } } /// /// 分发订单到kds /// /// /// public static void DistributeOrder2KDS(ServiceOrder order, KDSCategory target) { var deviceDic = new Dictionary(); 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(); 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(); 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 itemList = null; using (var db = Global.Instance.OpenDataBase) { itemList = db.Fetch("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(); 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(); 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,"订单项划菜通知出品异常"); } } /// /// 订单项划菜通知出品 /// /// //public static void SendOrderItem2Chupin(string id) //{ // try // { // ServiceOrderItem item = null; // using(var db = Global.Instance.OpenDataBase) // { // item = db.FirstOrDefault("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); // } //} } }