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#
134 lines
5.4 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|