using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
using IStation.Model;
|
|
namespace IStation.DataDockingSocket
|
{
|
public class HandleHelper : IDataDockingSocket.IHandleHelper
|
{
|
|
|
/// <summary>
|
/// 处理注册码
|
/// </summary>
|
public void HandleRegisterCode(IMonitorDataDockingSession session)
|
{
|
if (session == null)
|
return;
|
if (!session.IsConnected)
|
return;
|
|
if (SessionHelper.Cache != null)
|
{
|
if (SessionHelper.Cache != session)
|
{
|
if (SessionHelper.Cache.IsConnected)
|
{
|
SessionHelper.Cache.Close($"{session.SessionName} 中,产生新的会话!");
|
}
|
}
|
}
|
|
SessionHelper.Cache = session;
|
var appParas = AppParasHelper.Get();
|
if (appParas == null)
|
{
|
LogCustomHelper.Error("Socket 数据对接中,KQ 缺少数据对接配置文件");
|
return;
|
}
|
foreach (var item in appParas.InstructionItems)
|
{
|
SendInstructionJobHelper.StartJob(session, item);
|
Thread.Sleep(appParas.InstructionSendSpace * 1000);
|
}
|
}
|
|
/// <summary>
|
/// 处理心跳包
|
/// </summary>
|
public void HandleHeartbeat(IMonitorDataDockingSession session)
|
{
|
|
}
|
|
/// <summary>
|
/// 处理数据
|
/// </summary>
|
public void HandleData
|
(
|
IMonitorDataDockingSession session,
|
byte[] bytes,
|
List<Model.DataDockingConfigure.Mapper> mappers,
|
Action<List<Model.MonitorDataDockingReceiveRecord>> receive
|
)
|
{
|
if (session == null)
|
return;
|
if (!session.IsConnected)
|
return;
|
if (bytes == null)
|
return;
|
if (!AppParas.Verify(bytes))
|
{
|
return;
|
}
|
if (mappers == null || mappers.Count < 1)
|
{
|
return;
|
}
|
var appParas = AppParasHelper.Get();
|
if (appParas == null)
|
{
|
LogCustomHelper.Error("Socket 数据对接中,SZJT.Ten 缺少数据对接配置文件");
|
return;
|
}
|
|
var item = appParas.InstructionItems.Find(x => x.Verify(bytes));
|
if (item == null)
|
return;
|
var src_list = HandleDataHelper.HandleData(item, bytes);
|
if (src_list != null && src_list.Count > 0)
|
{
|
var receive_list = new List<Model.MonitorDataDockingReceiveRecord>();
|
foreach (var mapper in mappers)
|
{
|
var src = src_list.Find(x => x.SignId == mapper.SignId);
|
if (src != null)
|
{
|
var record = new Model.MonitorDataDockingReceiveRecord();
|
record.SysId = mapper.SysId;
|
record.RecordType = src.RecordType;
|
record.SrcTime = src.SrcTime;
|
record.SrcValue = src.SrcValue;
|
receive_list.Add(record);
|
}
|
}
|
receive(receive_list);
|
}
|
|
if (appParas.Src)
|
{
|
LogCustomHelper.Src(bytes);
|
}
|
if (appParas.Debug)
|
{
|
LogCustomHelper.Debug(src_list);
|
}
|
}
|
|
public bool Valid(byte[] bytes)
|
{
|
return false;
|
}
|
|
|
}
|
}
|