namespace IStation.DataDockingSocket
|
{
|
public class HandleHelper : IHandleHelper
|
{
|
|
|
/// <summary>
|
/// 处理注册码
|
/// </summary>
|
public void HandleRegisterCode(Yw.Model.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)
|
{
|
LogHelper.Error("Socket 数据对接中,SZJT_CJW 缺少数据对接配置文件");
|
return;
|
}
|
foreach (var item in appParas.InstructionItems)
|
{
|
SendInstructionJobHelper.StartJob(session, item);
|
Thread.Sleep(appParas.InstructionSendSpace * 1000);
|
}
|
}
|
|
/// <summary>
|
/// 处理心跳包
|
/// </summary>
|
public void HandleHeartbeat(Yw.Model.IMonitorDataDockingSession session)
|
{
|
|
}
|
|
/// <summary>
|
/// 处理数据
|
/// </summary>
|
public void HandleData
|
(
|
Yw.Model.IMonitorDataDockingSession session,
|
byte[] bytes,
|
List<Yw.Model.DataDockingConfigureItemExSubList> mappers,
|
Action<List<Yw.Model.MonitorHandleRecord>> 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)
|
{
|
LogHelper.Error("Socket 数据对接中,SZJT_CJW 缺少数据对接配置文件");
|
return;
|
}
|
|
var item = appParas.InstructionItems.Find(x => x.Verify(bytes));
|
if (item == null)
|
return;
|
var middleList = HandleDataHelper.HandleData(item, bytes);
|
if (middleList != null && middleList.Count > 0)
|
{
|
var recordList = new List<Yw.Model.MonitorHandleRecord>();
|
foreach (var mapper in mappers)
|
{
|
if (mapper.SubList == null || mapper.SubList.Count < 1)
|
{
|
continue;
|
}
|
var mapper_sub = mapper.SubList.First();
|
var middle = middleList.Find(x => x.SignId == mapper.TransferId);
|
if (middle != null)
|
{
|
var record = new Yw.Model.MonitorHandleRecord
|
{
|
MonitorPointID = mapper.MonitorPointID,
|
DataTime = middle.DataTime
|
};
|
|
var dataStatus = new List<string>();
|
var record_sub = new Yw.Model.MonitorHandleSubRecord();
|
record_sub.SignalID = mapper_sub.SignalID;
|
record_sub.SrcValue = middle.DataValue;
|
record_sub.DataValue = mapper_sub.Docking(middle.DataValue, ref dataStatus);
|
record_sub.DataStatus = dataStatus;
|
record.SubList.Add(record_sub);
|
recordList.Add(record);
|
}
|
}
|
receive(recordList);
|
}
|
|
if (ConfigHelper.SupportOld)
|
{
|
OldTransferHelper.Transfer(middleList);
|
}
|
|
if (appParas.Src)
|
{
|
SrcHelper.Src(bytes);
|
}
|
if (appParas.Debug)
|
{
|
DebugHelper.Debug(middleList);
|
}
|
}
|
|
|
|
}
|
}
|