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 { /// /// 处理注册码 /// 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); } } /// /// 处理心跳包 /// public void HandleHeartbeat(IMonitorDataDockingSession session) { } /// /// 处理数据 /// public void HandleData ( IMonitorDataDockingSession session, byte[] bytes, List mappers, Action> 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(); 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; } } }