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.

127 lines
4.9 KiB
C#

9 months ago
using log4net;
using POSV.Service;
using POSV.Common.JsonObject;
using POSV.WindowsService.Core;
using POSV.WindowsService.Core.OrderPackage;
using SuperSocket.WebSocket.SubProtocol;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using POSV.Common;
using POSV.Service.Entity;
namespace POSV.WindowsService.Command
{
public class KDSHUACAI : JsonSubCommand<WebSocketSessionEx, string>
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
protected override void ExecuteJsonCommand(WebSocketSessionEx session, string commandInfo)
{
logger.Info("收到["+session.Name+"]划菜通知:" + commandInfo);
var response = new BaseDataResponse<KdsHuacaiResponse>();
try
{
var huacai = Json.Deserialize<KdsHuacai>(commandInfo);
bool isNew = false;
string serviceId = null;
lock (Global.Instance.SyncLock)
{
using(var db = Global.Instance.OpenDataBase)
{
using(var transaction = db.GetTransaction())
{
foreach(var temp in huacai.Data)
{
var item = db.FirstOrDefault<ServiceOrderItem>("where id = @0 and huacaiTime is null", temp.ItemId);
if(item != null)
{
isNew = true;
serviceId = temp.ServiceId;
item.HuacaiTime = temp.HuacaiTime;
item.ModifyDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
db.Save(item);
}
}
transaction.Complete();
}
}
}
response.Status = 1;
response.Message = "服务中心接收成功";
response.Data = new KdsHuacaiResponse();
response.Data.RequestObj = commandInfo;
//服务中心向出品通知划菜
if (isNew && !string.IsNullOrEmpty(serviceId))
{
OrderUtils.SendHuacaiOrder2Chupin(serviceId);
}
}
catch(Exception ex)
{
logger.Error( ex, "kds划菜通知处理异常");
response.Status = 0;
response.Message = "服务中心接收异常";
}
finally
{
this.SendJsonMessage(session, Json.Serialize(response));
Console.WriteLine("已发送划菜响应");
}
}
}
/// <summary>
/// 收到发送至出品kds的划菜订单项
/// </summary>
public class KDSHUACAIRESPONSE : JsonSubCommand<WebSocketSessionEx, string>
{
private static ILog logger = LogManager.GetLogger(typeof(KDSHUACAIRESPONSE));
protected override void ExecuteJsonCommand(WebSocketSessionEx session, string commandInfo)
{
try
{
logger.Info("收到发送至出品kds["+ session.Name+ "]的划菜回复:" + commandInfo);
var response = Json.Deserialize<BaseDataResponse<KdsHuacaiResponse>>(commandInfo);
if (response.Status == 1)
{
//成功
var hua = Json.Deserialize<KdsHuacai>(response.Data.RequestObj.ToString());
lock (Global.Instance.SyncLock)
{
using (var db = Global.Instance.OpenDataBase)
{
using (var transaction = db.GetTransaction())
{
foreach(var temp in hua.Data)
{
var item = db.FirstOrDefault<ServiceOrderItem>("where id = @0 and huacai2chupinStatus = 0", temp.ItemId);
if(item != null)
{
item.Huacai2chupinStatus = 1;
item.ModifyDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
db.Save(item);
}
}
transaction.Complete();
}
}
System.Threading.Thread.Sleep(50);
}
}
else
{
}
}
catch (Exception ex)
{
logger.Error("收到发送至出品kds的划菜订单项接收异常", ex);
}
}
}
}