123
ningshuxia
2023-04-13 eb32b4263f6901bb7ac1915b400e4fe28db20ef0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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;
        }
 
 
    }
}