using JwKdsV.Core.MessageEvent; using JwKdsV.Entity.OrderPackage; using NLog; using POSV.Common; using POSV.Common.JsonObject; using POSV.Service; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Media; using System.Text; using WebSocket4Net; namespace JwKdsV.Core.SocketMessage { public class NEWORDER { private static ILogger logger = NLog.LogManager.GetCurrentClassLogger(); private static object newOrderLock = new object(); public static Dictionary orderMap = new Dictionary(); public static void OnNewOrder(string orderJson) { logger.Info("厨显收到新订单:{0}", orderJson); var response = new BaseDataResponse(); string orderId = null; try { lock (newOrderLock) { lock (Global.Instance.SyncLock) { var serviceOrder = Json.Deserialize(orderJson); //Yao 2023-06-22 test 模拟小程序点单 正式使用要去掉 //serviceOrder.OrderType = OrderType.微信点餐; //=========end orderId = serviceOrder.OrderId; bool isNew = true;//是否新订单,防止重复发送 //判断是否需要展示美团外卖订单 var showWaiMai = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_SHOWWAIMAI); if (showWaiMai == "true" && (serviceOrder.OrderType == OrderType.美团外卖 || serviceOrder.OrderType == OrderType.饿了么)) { logger.Error("外卖订单不入库" + orderJson); isNew = false; } else { using (var db = Global.Instance.OpenDataBase) { using (var transaction = db.GetTransaction()) { var isExist = db.FirstOrDefault("where id = @0", serviceOrder.Id); if (isExist == null) { db.Save(serviceOrder); db.InsertBatch(serviceOrder.Items); } else { isNew = false; } transaction.Complete(); } } } //返回结果 response.Status = 1; response.Message = "SUCCESS"; response.Data = new KdsNewOrderResult { Category = Global.Instance.kdsCategory, RequestObj = orderJson }; WebSocketEnter.Instance.Send(CommandName.KDSNEWORDERRESPONSE, response); if (isNew) { if (orderMap.ContainsKey("orderId:" + serviceOrder.OrderId)) { return; } orderMap.Add("orderId:" + serviceOrder.OrderId, serviceOrder.OrderId); //新订单通知主界面显示 MsgEvent.Send(Constant.NEWORDER, serviceOrder); //播放声音 var newOrderSound = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_NEWORDERSOUND, "true"); if(newOrderSound == "true") { logger.Info("播放新订单提示音"); //Yao 2023-06-30 屏掉这句提示音 //PlaySound(); } } else { logger.Error("收到重复订单数据" + orderJson); } } } } catch (Exception ex) { logger.Error(ex, "新订单接收异常"); //返回结果 response.Status = 0; response.Message = "ERROR"; response.Data = new KdsNewOrderResult { Category = Global.Instance.kdsCategory, RequestObj = orderJson }; WebSocketEnter.Instance.Send(CommandName.KDSNEWORDERRESPONSE, response); } } private static void PlaySound() { string soundPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"mp3/newOrder.wav"); if (File.Exists(soundPath)) { SoundPlayer simpleSound = new SoundPlayer(soundPath); simpleSound.Play(); } } } }