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.

134 lines
5.4 KiB
C#

9 months ago
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<string, string> orderMap = new Dictionary<string, string>();
public static void OnNewOrder(string orderJson)
{
logger.Info("厨显收到新订单:{0}", orderJson);
var response = new BaseDataResponse<KdsNewOrderResult>();
string orderId = null;
try
{
lock (newOrderLock)
{
lock (Global.Instance.SyncLock)
{
var serviceOrder = Json.Deserialize<ServiceOrder>(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<ServiceOrder>("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();
}
}
}
}