From a5b6334ae09f2be1a5c073169458b55df68b0b2e Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期二, 19 十一月 2024 11:02:26 +0800
Subject: [PATCH] 新增一个水质仪对接

---
 IStation.DataDockingSocket.SZJT_SZY1/paras_datadocking_socket_szjt_szy1.json              |   42 ++
 IStation.DataDockingSocket.SZJT_SZY1/helper/DebugHelper.cs                                |   42 ++
 IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardRecord.cs                       |   25 +
 IStation.DataDockingSocket.SZJT_SZY1/helper/HandleDataHelper.cs                           |   92 ++++
 IStation.DataDockingSocket.SZJT_SZY1/paras/AppParas.cs                                    |  176 +++++++++
 IStation.DataDockingSocket.SZJT_SZY1/HandleHelper.cs                                      |  137 +++++++
 IStation.DataDockingSocket.SZJT_SZY1/helper/SessionHelper.cs                              |   13 
 IStation.DataDockingSocket.SZJT_SZY1/Model/Middle/MiddleRecord.cs                         |   23 +
 IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJob.cs                    |   40 ++
 IStation.DataDockingSocket.SZJT_SZY1/IStation.DataDockingSocket.SZJT_SZY1.csproj          |   24 +
 IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardModel.cs                        |   22 +
 IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldResult.cs                               |   23 +
 IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardRecord.cs                       |   30 +
 IStation.DataDockingSocket.SZJT_SZY1/helper/SrcHelper.cs                                  |   22 +
 IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardSubRecord.cs                    |   21 +
 IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardSubRecord.cs                    |   26 +
 IStation.DataDockingSocket.SZJT_SZY1/GlobalUsings.cs                                      |    6 
 IStation.DataDockingSocket.SZJT_SZY1/helper/ConfigHelper.cs                               |   45 ++
 IStation.DataDockingSocket.SZJT_SZY1/helper/OldTransferHelper.cs                          |   41 ++
 IStation.TopShelf.DataDocking4Socket/Properties/PublishProfiles/FolderProfile.pubxml.user |    2 
 IStation.DataDocking.Socket.sln                                                           |    6 
 IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewResult.cs                               |   38 ++
 IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJobHelper.cs              |  100 +++++
 IStation.DataDockingSocket.SZJT_SZY1/paras/AppParasHelper.cs                              |   39 ++
 IStation.TopShelf.DataDocking4Socket/IStation.TopShelf.DataDocking4Socket.csproj.user     |    6 
 IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardModel.cs                        |   22 +
 IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJobNameHelper.cs          |   40 ++
 IStation.DataDocking.Socket/IStation.DataDocking.Socket.csproj                            |    1 
 28 files changed, 1,103 insertions(+), 1 deletions(-)

diff --git a/IStation.DataDocking.Socket.sln b/IStation.DataDocking.Socket.sln
index 698a25d..d62c767 100644
--- a/IStation.DataDocking.Socket.sln
+++ b/IStation.DataDocking.Socket.sln
@@ -29,6 +29,8 @@
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IStation.DataDockingSocket.SZJT_XJD", "IStation.DataDockingSocket.SZJT_XJD\IStation.DataDockingSocket.SZJT_XJD.csproj", "{A553EA76-C543-4C56-94C2-5594ABFFE6DD}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IStation.DataDockingSocket.SZJT_SZY1", "IStation.DataDockingSocket.SZJT_SZY1\IStation.DataDockingSocket.SZJT_SZY1.csproj", "{53CDD119-7F16-4E12-9134-EF497E833270}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -87,6 +89,10 @@
 		{A553EA76-C543-4C56-94C2-5594ABFFE6DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A553EA76-C543-4C56-94C2-5594ABFFE6DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A553EA76-C543-4C56-94C2-5594ABFFE6DD}.Release|Any CPU.Build.0 = Release|Any CPU
+		{53CDD119-7F16-4E12-9134-EF497E833270}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{53CDD119-7F16-4E12-9134-EF497E833270}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{53CDD119-7F16-4E12-9134-EF497E833270}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{53CDD119-7F16-4E12-9134-EF497E833270}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/IStation.DataDocking.Socket/IStation.DataDocking.Socket.csproj b/IStation.DataDocking.Socket/IStation.DataDocking.Socket.csproj
index 935a74e..e04b30c 100644
--- a/IStation.DataDocking.Socket/IStation.DataDocking.Socket.csproj
+++ b/IStation.DataDocking.Socket/IStation.DataDocking.Socket.csproj
@@ -21,6 +21,7 @@
     <ProjectReference Include="..\IStation.DataDockingSocket.SZJT_PST\IStation.DataDockingSocket.SZJT_PST.csproj" />
     <ProjectReference Include="..\IStation.DataDockingSocket.SZJT_QFT\IStation.DataDockingSocket.SZJT_QFT.csproj" />
     <ProjectReference Include="..\IStation.DataDockingSocket.SZJT_SYW\IStation.DataDockingSocket.SZJT_SYW.csproj" />
+    <ProjectReference Include="..\IStation.DataDockingSocket.SZJT_SZY1\IStation.DataDockingSocket.SZJT_SZY1.csproj" />
     <ProjectReference Include="..\IStation.DataDockingSocket.SZJT_WTW\IStation.DataDockingSocket.SZJT_WTW.csproj" />
     <ProjectReference Include="..\IStation.DataDockingSocket.SZJT_XJD\IStation.DataDockingSocket.SZJT_XJD.csproj" />
   </ItemGroup>
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/GlobalUsings.cs b/IStation.DataDockingSocket.SZJT_SZY1/GlobalUsings.cs
new file mode 100644
index 0000000..3239372
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/GlobalUsings.cs
@@ -0,0 +1,6 @@
+锘縢lobal using Yw;
+global using Yw.Untity;
+global using Yw.Service;
+global using System.ComponentModel.DataAnnotations;
+global using Quartz;
+global using Yw.DataDockingSocket;
\ No newline at end of file
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/HandleHelper.cs b/IStation.DataDockingSocket.SZJT_SZY1/HandleHelper.cs
new file mode 100644
index 0000000..38075fc
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/HandleHelper.cs
@@ -0,0 +1,137 @@
+锘縩amespace 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 鏁版嵁瀵规帴涓紝SZY1 缂哄皯鏁版嵁瀵规帴閰嶇疆鏂囦欢");
+                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 鏁版嵁瀵规帴涓紝SZY1 缂哄皯鏁版嵁瀵规帴閰嶇疆鏂囦欢");
+                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);
+            }
+        }
+
+
+
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/IStation.DataDockingSocket.SZJT_SZY1.csproj b/IStation.DataDockingSocket.SZJT_SZY1/IStation.DataDockingSocket.SZJT_SZY1.csproj
new file mode 100644
index 0000000..1be3c56
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/IStation.DataDockingSocket.SZJT_SZY1.csproj
@@ -0,0 +1,24 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>disable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <None Remove="paras_datadocking_socket_szjt_szy1.json" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Content Include="paras_datadocking_socket_szjt_szy1.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Yw.IDataDockingSocket.Core" Version="3.0.1" />
+    <PackageReference Include="Yw.Quartz.Core" Version="3.0.0" />
+  </ItemGroup>
+
+</Project>
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/Model/Middle/MiddleRecord.cs b/IStation.DataDockingSocket.SZJT_SZY1/Model/Middle/MiddleRecord.cs
new file mode 100644
index 0000000..65fbe0b
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/Model/Middle/MiddleRecord.cs
@@ -0,0 +1,23 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    internal class MiddleRecord
+    {
+        /// <summary>
+        /// 鏍囧織id
+        /// </summary>
+        public string SignId { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鏃堕棿
+        /// </summary>
+        public DateTime DataTime { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鍊�
+        /// </summary>
+        public string DataValue { get; set; }
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewResult.cs b/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewResult.cs
new file mode 100644
index 0000000..44bdd5c
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewResult.cs
@@ -0,0 +1,38 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class NewResult
+    {
+        /// <summary>
+        /// 鐘舵�佺爜
+        /// </summary>
+        public int Code { get; set; }
+
+        /// <summary>
+        /// 閿欒鐮�
+        /// </summary>
+        public object Error { get; set; }
+
+        /// <summary>
+        /// 閿欒淇℃伅
+        /// </summary>
+        public object Message { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁
+        /// </summary>
+        public bool Data { get; set; }
+
+        /// <summary>
+        /// 闄勫姞鏁版嵁
+        /// </summary>
+        public object Extras { get; set; }
+
+        /// <summary>
+        /// 鏃堕棿鎴�
+        /// </summary>
+        public DateTime Timestamp { get; set; }
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardModel.cs b/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardModel.cs
new file mode 100644
index 0000000..e8640b1
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardModel.cs
@@ -0,0 +1,22 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class NewStandardModel
+    {
+
+        /// <summary>
+        /// 娉ㄥ唽鐮�
+        /// </summary>
+        public string RegisterCode { get; set; }
+
+        /// <summary>
+        /// 璁板綍鍒楄〃
+        /// </summary>
+        public List<NewStandardRecord> RecordList { get; set; }
+
+
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardRecord.cs b/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardRecord.cs
new file mode 100644
index 0000000..ecd093c
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardRecord.cs
@@ -0,0 +1,25 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 鏁版嵁瀵规帴鏍囧噯璁板綍dto
+    /// </summary>
+    public class NewStandardRecord
+    {
+
+        /// <summary>
+        /// 浼犺緭id
+        /// </summary>
+        public string TransferId { get; set; }
+
+        /// <summary>
+        /// 鍘熷鏃堕棿
+        /// </summary>
+        public DateTime SrcTime { get; set; }
+
+        /// <summary>
+        /// 瀛愰」鍒楄〃
+        /// </summary>
+        public List<NewStandardSubRecord> SubList { get; set; }
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardSubRecord.cs b/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardSubRecord.cs
new file mode 100644
index 0000000..4363658
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/Model/New/NewStandardSubRecord.cs
@@ -0,0 +1,26 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 鏁版嵁鏍囧噯瀵规帴瀛愯褰昫to
+    /// </summary>
+    public class NewStandardSubRecord
+    {
+
+        /// <summary>
+        /// 浼犺緭id
+        /// </summary>
+        public string TransferId { get; set; }
+
+        /// <summary>
+        /// 鍘熷鍊�
+        /// </summary>
+        public string SrcValue { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁鐘舵�� 
+        /// </summary>
+        public List<string> DataStatus { get; set; }
+
+    }
+
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldResult.cs b/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldResult.cs
new file mode 100644
index 0000000..092f0ac
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldResult.cs
@@ -0,0 +1,23 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class OldResult
+    {
+        /// <summary>
+        /// 鐘舵�佷俊鎭�
+        /// </summary>
+        public int Code { get; set; }
+
+        /// <summary>
+        /// 鎻愮ず淇℃伅
+        /// </summary>
+        public string Message { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool Data { get; set; }
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardModel.cs b/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardModel.cs
new file mode 100644
index 0000000..bbdfa3c
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardModel.cs
@@ -0,0 +1,22 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class OldStandardModel
+    {
+
+        /// <summary>
+        /// 娉ㄥ唽鐮�
+        /// </summary>
+        public string RegisterCode { get; set; }
+
+        /// <summary>
+        /// 璁板綍鍒楄〃
+        /// </summary>
+        public List<OldStandardRecord> Records { get; set; }
+
+
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardRecord.cs b/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardRecord.cs
new file mode 100644
index 0000000..68e717e
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardRecord.cs
@@ -0,0 +1,30 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 鏁版嵁瀵规帴鏍囧噯璁板綍dto
+    /// </summary>
+    public class OldStandardRecord
+    {
+
+        /// <summary>
+        /// 璁板綍鏍囪瘑
+        /// </summary>
+        public string RecordId { get; set; }
+
+        /// <summary>
+        /// 璁板綍绫诲瀷
+        /// </summary>
+        public int RecordType { get; set; }
+
+        /// <summary>
+        /// 璁板綍鏃堕棿
+        /// </summary>
+        public DateTime RecordTime { get; set; }
+
+        /// <summary>
+        /// 璁板綍鍊�
+        /// </summary>
+        public string RecordValue { get; set; }
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardSubRecord.cs b/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardSubRecord.cs
new file mode 100644
index 0000000..e439383
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/Model/Old/OldStandardSubRecord.cs
@@ -0,0 +1,21 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 鏁版嵁鏍囧噯瀵规帴瀛愯褰昫to
+    /// </summary>
+    public class OldStandardSubRecord
+    {
+
+        /// <summary>
+        /// 瀛愯褰昳d
+        /// </summary>
+        public string RecordId { get; set; }
+
+        /// <summary>
+        /// 瀛愯褰曞��
+        /// </summary>
+        public string RecordValue { get; set; }
+
+    }
+
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/helper/ConfigHelper.cs b/IStation.DataDockingSocket.SZJT_SZY1/helper/ConfigHelper.cs
new file mode 100644
index 0000000..7d39578
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/helper/ConfigHelper.cs
@@ -0,0 +1,45 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 閰嶇疆鏂囦欢杈呭姪绫�
+    /// </summary>
+    internal class ConfigHelper
+    {
+
+        /// <summary>
+        /// 鏃ф敞鍐岀爜
+        /// </summary>
+        public static string OldRegisterCode
+        {
+            get
+            {
+                return AppParasHelper.Get().OldTransfer.RegisterCode;
+            }
+        }
+
+        /// <summary>
+        /// 鏃т紶杈揢rl
+        /// </summary>
+        public static string OldTransferUrl
+        {
+            get
+            {
+                return AppParasHelper.Get().OldTransfer.TransferUrl;
+            }
+        }
+
+        /// <summary>
+        /// 鏄惁鏀寔
+        /// </summary>
+        public static bool SupportOld
+        {
+            get
+            {
+                return AppParasHelper.Get().SupportOld;
+            }
+        }
+
+
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/helper/DebugHelper.cs b/IStation.DataDockingSocket.SZJT_SZY1/helper/DebugHelper.cs
new file mode 100644
index 0000000..de4a52e
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/helper/DebugHelper.cs
@@ -0,0 +1,42 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 鐢熸垚璋冭瘯淇℃伅杈呭姪绫�
+    /// </summary>
+    internal class DebugHelper
+    {
+        private const string _logName = "socket-szjt-szy1-debug";
+
+        /// <summary>
+        /// 鐢熸垚
+        /// </summary>
+        public static void Debug(List<MiddleRecord> list)
+        {
+            if (list == null || list.Count < 1)
+            {
+                return;
+            }
+            var debug_list = new List<Yw.Model.MonitorDataDockingDebugRecord>();
+            foreach (var record in list)
+            {
+                var debug_item = new Yw.Model.MonitorDataDockingDebugRecord();
+                debug_item.TransferId = record.SignId;
+                debug_item.SrcTime = record.DataTime.ToString("yyyy-MM-dd HH:mm:ss");
+                debug_item.SubList.Add(new Yw.Model.MonitorDataDockingDebugSubRecord()
+                {
+                    TransferId = "",
+                    SrcValue = record.DataValue
+                });
+
+                debug_list.Add(debug_item);
+            }
+
+            if (debug_list != null && debug_list.Count > 0)
+            {
+                var json = JsonHelper.Object2Json(debug_list);
+                LogHelper.Custom(_logName, json);
+            }
+        }
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/helper/HandleDataHelper.cs b/IStation.DataDockingSocket.SZJT_SZY1/helper/HandleDataHelper.cs
new file mode 100644
index 0000000..a201a5e
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/helper/HandleDataHelper.cs
@@ -0,0 +1,92 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 澶勭悊鏁版嵁杈呭姪绫�
+    /// </summary>
+    internal class HandleDataHelper
+    {
+        /// <summary>
+        /// 澶勭悊鏁版嵁
+        /// </summary>
+        public static List<MiddleRecord> HandleData
+            (
+                InstructionItem item,
+                byte[] bts
+            )
+        {
+            var list = new List<MiddleRecord>();
+
+            //灏嗘寚浠よ浆鍖栦负瀛楄妭鏁扮粍
+            var instrution_bts = BitTransfer.FromString(item.Instruction);
+            //璇锋眰鏁版嵁鐨勭储寮曞櫒浣嶇疆 浠�0寮�濮�
+            var startIndex = instrution_bts[2] * 16 * 16 + instrution_bts[3];
+
+            foreach (var x in item.RuleItems)
+            {
+                var record = new MiddleRecord();
+                record.SignId = x.SignId;
+                record.DataTime = DateTime.Now;
+                record.DataValue = null;
+
+                var skip = 3 + (x.Index - startIndex - 1) * 2;
+                switch (x.Rule)
+                {
+                    case eRule.Float:
+                        {
+                            var btValue = bts.Skip(skip).Take(2 * 2).ToArray();
+                            var value = CalcuFloat(btValue) * x.Ratio;
+                            record.DataValue = value.ToString();
+                        }
+                        break;
+                    case eRule.Short:
+                        {
+                            var btValue = bts.Skip(skip).Take(2).ToArray();
+                            var value = CalcuShort(btValue) * x.Ratio;
+                            record.DataValue = value.ToString();
+                        }
+                        break;
+                    case eRule.Int:
+                        {
+                            var btValue = bts.Skip(skip).Take(2 * 2).ToArray();
+                            var value = CalcuInt(btValue) * x.Ratio;
+                            record.DataValue = value.ToString();
+                        }
+                        break;
+                    default: break;
+                }
+                list.Add(record);
+            }
+
+            return list;
+        }
+
+        //璁$畻Float
+        private static float CalcuFloat(byte[] bts)
+        {
+            if (bts.Length != 4)
+                return default;
+            var rbts = bts.Reverse().ToArray();
+            return BitConverter.ToSingle(rbts, 0);
+        }
+
+        //璁$畻Short
+        private static short CalcuShort(byte[] bts)
+        {
+            if (bts.Length != 2)
+                return default;
+            var rbts = bts.Reverse().ToArray();
+            return BitConverter.ToInt16(rbts, 0);
+        }
+
+        //璁$畻Int
+        private static int CalcuInt(byte[] bts)
+        {
+            if (bts.Length != 4)
+                return default;
+            var rbts = bts.Reverse().ToArray();
+            return BitConverter.ToInt32(rbts, 0);
+        }
+
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/helper/OldTransferHelper.cs b/IStation.DataDockingSocket.SZJT_SZY1/helper/OldTransferHelper.cs
new file mode 100644
index 0000000..e0177d7
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/helper/OldTransferHelper.cs
@@ -0,0 +1,41 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    internal class OldTransferHelper
+    {
+        /// <summary>
+        /// 浼犺緭
+        /// </summary>
+        /// <param name="middleList"></param>
+        /// <returns></returns>
+        public static bool Transfer(List<MiddleRecord> middleList)
+        {
+            try
+            {
+                if (middleList == null || middleList.Count < 1)
+                {
+                    return false;
+                }
+                var recordList = middleList.Select(x => new OldStandardRecord() { RecordId = x.SignId, RecordType = 0, RecordTime = x.DataTime, RecordValue = x.DataValue }).ToList();
+                var model = new OldStandardModel() { RegisterCode = ConfigHelper.OldRegisterCode, Records = recordList };
+                var data = JsonHelper.Object2Json(model);
+                var responseText = HttpRequestHelper.Post(ConfigHelper.OldTransferUrl, data);
+                var result = JsonHelper.Json2Object<OldResult>(responseText);
+                if (result.Code != 0)
+                {
+                    throw new Exception(result.Message);
+                }
+                return result.Data;
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error(ex.Message);
+                return false;
+            }
+        }
+
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/helper/SessionHelper.cs b/IStation.DataDockingSocket.SZJT_SZY1/helper/SessionHelper.cs
new file mode 100644
index 0000000..5755493
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/helper/SessionHelper.cs
@@ -0,0 +1,13 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 浼氳瘽杈呭姪绫�
+    /// </summary>
+    public class SessionHelper
+    {
+        /// <summary>
+        /// 缂撳瓨
+        /// </summary>
+        public static Yw.Model.IMonitorDataDockingSession Cache { get; set; }
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/helper/SrcHelper.cs b/IStation.DataDockingSocket.SZJT_SZY1/helper/SrcHelper.cs
new file mode 100644
index 0000000..dcdf3c5
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/helper/SrcHelper.cs
@@ -0,0 +1,22 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 鐢熸垚鍘熷淇℃伅杈呭姪绫�
+    /// </summary>
+    internal class SrcHelper
+    {
+        private const string _logName = "socket-szjt-szy1-src";
+
+        /// <summary>
+        /// 鐢熸垚
+        /// </summary>
+        public static void Src(byte[] bts)
+        {
+            if (bts == null || bts.Length < 1)
+                return;
+            var message = BitTransfer.ToString(bts);
+            LogHelper.Custom(_logName, message);
+        }
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJob.cs b/IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJob.cs
new file mode 100644
index 0000000..b690835
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJob.cs
@@ -0,0 +1,40 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 鍙戦�佹寚浠や换鍔�
+    /// </summary>
+    [DisallowConcurrentExecution]//姝ょ壒鎬ф爣璇� 蹇呴』绛夊緟杩欐浠诲姟鎵ц瀹屾垚鍚庯紝鎵嶈兘鎵ц涓嬫浠诲姟
+    public class SendInstructionJob : IJob
+    {
+        internal const string Session = "Session";//浼氳瘽瀛楃
+        internal const string Instruction = "Instruction";//鎸囦护瀛楃
+
+        public async Task Execute(IJobExecutionContext context)
+        {
+            try
+            {
+                await Task.Run(() =>
+                {
+                    var dataMap = context.MergedJobDataMap;
+                    var bytes = (byte[])dataMap[Instruction];
+                    if (bytes == null)
+                        return;
+                    var session = (Yw.Model.IMonitorDataDockingSession)dataMap[Session];
+                    if (session == null)
+                        return;
+                    if (session.IsConnected)
+                    {
+                        SessionHelper.Cache.Send(bytes, 0, bytes.Length);
+                        LogHelper.Info(session.SessionName + ":" + BitConverter.ToString(bytes) + ", 鍙戦�佷竴鏉¤姹傛暟鎹寚浠�");
+                    }
+
+                });
+            }
+            catch (Exception ex)
+            {
+                var e = new JobExecutionException(ex);
+                throw e;
+            }
+        }
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJobHelper.cs b/IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJobHelper.cs
new file mode 100644
index 0000000..933862b
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJobHelper.cs
@@ -0,0 +1,100 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// Modbus杈呭姪绫� 
+    /// </summary>
+    public class SendInstructionJobHelper
+    {
+        private static IScheduler _sched;//璋冨害鍣�
+
+        /// <summary>
+        /// 寮�濮嬩换鍔�
+        /// </summary>
+        public static async void StartJob(Yw.Model.IMonitorDataDockingSession session, InstructionItem item)
+        {
+            if (session == null)
+                return;
+            if (!session.IsConnected)
+                return;
+            if (item == null)
+                return;
+            if (string.IsNullOrEmpty(item.Instruction))
+                return;
+            if (item.RuleItems == null || item.RuleItems.Count < 1)
+                return;
+
+            LogHelper.Info($"{session.SessionName} 寮�濮嬪鐞嗗彂閫佹寚浠や换鍔★紝鎸囦护:{item.Instruction} !");
+
+            var jobName = SendInstructionJobNameHelper.GetJobName(session, item.Instruction);
+            var jobGroupName = SendInstructionJobNameHelper.GetJobGroupName(session, item.Instruction);
+            var triggerName = SendInstructionJobNameHelper.GetTriggerName(session, item.Instruction);
+
+            //鍒ゆ柇鏄惁瀛樺湪
+            if (_sched != null)
+            {
+                var triggerKey = new TriggerKey(triggerName, jobGroupName);
+                if (await _sched.CheckExists(triggerKey))
+                {
+                    LogHelper.Info($"{session.SessionName} 涓紝鎸囦护锛歿item.Instruction} 鐨勪富鍔ㄨ姹傛暟鎹换鍔″凡缁忓紑鍚紝鏃犻渶閲嶅寮�鍚紒");
+                    return;
+                }
+            }
+
+            //鍒ゆ柇鏄惁寮�鍚皟鍙栧櫒
+            if (_sched == null)
+            {
+                // 1.鍒涘缓scheduler鐨勫紩鐢�
+                var fac = new Quartz.Impl.StdSchedulerFactory();
+                _sched = await fac.GetScheduler();
+
+                //2.鍚姩 scheduler
+                await _sched.Start();
+            }
+
+            //3.鍒涘缓浠诲姟
+            var job = JobBuilder.Create<SendInstructionJob>()
+             .WithIdentity(jobName, jobGroupName)
+             .Build();
+            job.JobDataMap.Put(SendInstructionJob.Session, session);
+            job.JobDataMap.Put(SendInstructionJob.Instruction, BitTransfer.FromString(item.Instruction));
+
+            //4.鍒涘缓Trigger
+            var trigger = TriggerBuilder.Create()
+            .WithIdentity(triggerName, jobGroupName)
+            .WithSimpleSchedule(x => x.WithIntervalInSeconds(item.Frequency).RepeatForever()
+            .WithMisfireHandlingInstructionNextWithRemainingCount())
+            .Build();
+
+            //5.鍔犲叆璋冨害绠$悊鍣�
+            await _sched.ScheduleJob(job, trigger);
+            session.SessionClosedEvent += () => CancelJob(session, item.Instruction);
+            LogHelper.Info($"{session.SessionName} 涓紝鎸囦护:{item.Instruction}  鐨勪富鍔ㄨ姹傛暟鎹嚎绋嬪紑鍚垚鍔燂紒");
+        }
+
+        /// <summary>
+        /// 鍙栨秷浠诲姟
+        /// </summary>
+        private static async void CancelJob(Yw.Model.IMonitorDataDockingSession session, string instruction)
+        {
+            if (_sched == null)
+                return;
+            LogHelper.Info($"{session.SessionName}  姝f墦绠楃粓姝富鍔ㄨ姹傛暟鎹换鍔�");
+            var triggerName = SendInstructionJobNameHelper.GetTriggerName(session, instruction);
+            var jobGroupName = SendInstructionJobNameHelper.GetJobGroupName(session, instruction);
+            var triggerKey = new TriggerKey(triggerName, jobGroupName);
+            if (await _sched.CheckExists(triggerKey))
+            {
+                await _sched.UnscheduleJob(triggerKey);
+                LogHelper.Info($"{session.SessionName},鎸囦护:{instruction}  涓诲姩璇锋眰鏁版嵁浠诲姟缁堟鎴愬姛");
+            }
+            else
+            {
+                LogHelper.Info($"{session.SessionName},鎸囦护:{instruction}  涓诲姩璇锋眰鏁版嵁浠诲姟涓嶅瓨鍦�");
+            }
+        }
+
+
+
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJobNameHelper.cs b/IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJobNameHelper.cs
new file mode 100644
index 0000000..81e326a
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/instruction/SendInstructionJobNameHelper.cs
@@ -0,0 +1,40 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// 鍙戦�佹寚浠や换鍔″悕绉拌緟鍔╃被
+    /// </summary>
+    public class SendInstructionJobNameHelper
+    {
+        private const string _jobNameHeader = "SZJT_TenSendInstructionJob";
+        private const string _jobGroupHeader = "SZJT_TenSendInstructionJobGroup";
+        private const string _triggerNameHeader = "SZJT_TenSendInstructionJobTrigger";
+
+        /// <summary>
+        /// 鑾峰彇浠诲姟鍚嶇О
+        /// </summary>
+        public static string GetJobName(Yw.Model.IMonitorDataDockingSession session, string instructioon)
+        {
+            var jobName = $"{_jobNameHeader}_{session.RegisterCode}_{session.SessionID}_{instructioon}";
+            return jobName;
+        }
+
+        /// <summary>
+        /// 鑾峰彇浠诲姟缁勫悕绉�
+        /// </summary>
+        public static string GetJobGroupName(Yw.Model.IMonitorDataDockingSession session, string instructioon)
+        {
+            var jobGroup = $"{_jobGroupHeader}_{session.RegisterCode}_{session.SessionID}_{instructioon}";
+            return jobGroup;
+        }
+
+        /// <summary>
+        /// 鑾峰彇瑙﹀彂鍣ㄥ悕绉�
+        /// </summary>
+        public static string GetTriggerName(Yw.Model.IMonitorDataDockingSession session, string instructioon)
+        {
+            var triggerName = $"{_triggerNameHeader}_{session.RegisterCode}_{session.SessionID}_{instructioon}";
+            return triggerName;
+        }
+
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/paras/AppParas.cs b/IStation.DataDockingSocket.SZJT_SZY1/paras/AppParas.cs
new file mode 100644
index 0000000..82e321f
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/paras/AppParas.cs
@@ -0,0 +1,176 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// app鍙傛暟锛堝彲閰嶅埗锛�
+    /// </summary>
+    public class AppParas
+    {
+        /// <summary>
+        /// 鎸囦护鍙戦�侀棿闅�
+        /// </summary>
+        public int InstructionSendSpace { get; set; }
+
+        /// <summary>
+        /// 鎸囦护椤瑰垪琛�
+        /// </summary>
+        public List<InstructionItem> InstructionItems { get; set; }
+
+        /// <summary>
+        /// 鏃т紶杈�
+        /// </summary>
+        public Transfer OldTransfer { get; set; }
+
+        /// <summary>
+        /// 鏀寔鏃�
+        /// </summary>
+        public bool SupportOld { get; set; }
+
+        /// <summary>
+        /// 鏄惁淇濆瓨鍘熷
+        /// </summary>
+        public bool Src { get; set; }
+
+        /// <summary>
+        /// 鏄惁璋冭瘯
+        /// </summary>
+        public bool Debug { get; set; }
+
+        /// <summary>
+        /// 楠岃瘉ModbusRtu 鍗忚
+        /// </summary>
+        public static bool Verify(byte[] bts)
+        {
+            if (bts == null)
+                return default;
+            if (bts.Length < 6)
+                return false;
+            if (bts.Length - 5 != bts[2])
+                return false;
+            if (!ModBusRtuHelper.CheckReceivedMessage(bts))
+                return false;
+            return true;
+        }
+
+    }
+
+
+
+    /// <summary>
+    /// 瑙f瀽瑙勫垯鏋氫妇
+    /// </summary>
+    public enum eRule
+    {
+        /// <summary>
+        /// 涓や釜瀛楄妭涓轰竴缁勶紝涓ょ粍琛ㄧず涓�涓暟鎹紝閫氳繃寰楀埌鐨勫洓涓瓧鑺傚弽杞悗锛孊itConvert.Single()鑾峰彇鍊�
+        /// </summary>
+        [Display(Name = "鍙屽瓧瑙f瀽涓烘诞鐐规暟", Description = "鍙屽瓧瑙f瀽涓烘诞鐐规暟 ")]
+        Float = 1,
+
+        /// <summary>
+        /// 涓や釜瀛楄妭琛ㄧず涓�涓暣鏁板�硷紝閫氳繃寰楀埌鐨�2涓瓧鑺傚弽杞悗锛孊itConvert.ToInt16()鑾峰彇鍊�
+        /// </summary>
+        [Display(Name = "鍗曞瓧瑙f瀽涓烘暣鏁�", Description = "鍗曞瓧琛ㄧず涓�涓暣鏁板��")]
+        Short = 2,
+
+        /// <summary>
+        /// 涓や釜瀛楄妭涓轰竴缁勶紝涓ょ粍琛ㄧず涓�涓暟鎹紝閫氳繃寰楀埌鐨勫洓涓瓧鑺傚弽杞悗锛孊itConverter.ToInt32();鑾峰彇鍊�
+        /// </summary>
+        [Display(Name = "鍙屽瓧瑙f瀽涓烘暣鏁�", Description = "鍙屽瓧琛ㄧず涓�涓暣鏁板��")]
+        Int = 3,
+    }
+
+    /// <summary>
+    /// 瑙f瀽椤�
+    /// </summary>
+    public class RuleItem
+    {
+        /// <summary>
+        /// 鏍囪鏍囪瘑
+        /// </summary>
+        public string SignId { get; set; }
+
+        /// <summary>
+        /// 绱㈠紩 浠�1寮�濮�
+        /// </summary>
+        public int Index { get; set; }
+
+        /// <summary>
+        /// 绯绘暟
+        /// </summary>
+        public double Ratio { get; set; }
+
+        /// <summary>
+        /// 瑙f瀽瑙勫垯
+        /// </summary>
+        public eRule Rule { get; set; }
+
+    }
+
+    /// <summary>
+    /// 鎸囦护椤�
+    /// </summary>
+    public class InstructionItem
+    {
+        /// <summary>
+        /// 鎸囦护
+        /// </summary>
+        public string Instruction { get; set; }
+
+        /// <summary>
+        /// 鎸囦护鍙戦�侀鐜� 绉�
+        /// </summary>	
+        public int Frequency { get; set; }
+
+        /// <summary>
+        /// 瑙f瀽椤�
+        /// </summary>
+        public List<RuleItem> RuleItems { get; set; }
+
+        /// <summary>
+        /// 楠岃瘉
+        /// </summary>
+        public bool Verify(byte[] bts)
+        {
+            if (bts == null)
+                return default;
+            if (bts.Length < 6)
+                return false;
+            if (bts.Length - 5 != bts[2])
+                return false;
+            if (string.IsNullOrEmpty(this.Instruction))
+                return default;
+
+            var instruction = BitTransfer.FromString(this.Instruction);
+            if (bts[0] == instruction[0])
+            {
+                if (bts[1] == instruction[1])
+                {
+                    //璇锋眰鐨勬暟鎹瓧鑺傛暟閲�
+                    var requestDataCount = BitConverter.ToInt16(instruction.Skip(4).Take(2).Reverse().ToArray(), 0) * 2;
+                    if (requestDataCount == bts[2])
+                    {
+                        return true;
+                    }
+                }
+            }
+            return default;
+        }
+
+    }
+
+    /// <summary>
+    /// 浼犺緭
+    /// </summary>
+    public class Transfer
+    {
+        /// <summary>
+        /// 娉ㄥ唽鐮�
+        /// </summary>
+        public string RegisterCode { get; set; }
+
+        /// <summary>
+        /// 浼犺緭Url
+        /// </summary>
+        public string TransferUrl { get; set; }
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/paras/AppParasHelper.cs b/IStation.DataDockingSocket.SZJT_SZY1/paras/AppParasHelper.cs
new file mode 100644
index 0000000..c969ed9
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/paras/AppParasHelper.cs
@@ -0,0 +1,39 @@
+锘縩amespace IStation.DataDockingSocket
+{
+    /// <summary>
+    /// app 鍙傛暟杈呭姪绫�
+    /// </summary>
+    internal class AppParasHelper
+    {
+        /// <summary>
+        /// json鏂囦欢鍚嶇О
+        /// </summary>
+        public static string JsonFileName
+        {
+            get
+            {
+                if (string.IsNullOrEmpty(_jsonFileName))
+                {
+                    _jsonFileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "paras_datadocking_socket_szjt_szy1.json");
+                }
+                return _jsonFileName;
+            }
+        }
+        private static string _jsonFileName = null;
+
+        /// <summary>
+        /// 鑾峰彇
+        /// </summary>
+        /// <returns></returns>
+        public static AppParas Get()
+        {
+            if (_appparas == null)
+            {
+                var json = File.ReadAllText(JsonFileName);
+                _appparas = JsonHelper.Json2Object<AppParas>(json);
+            }
+            return _appparas;
+        }
+        private static AppParas _appparas = null;
+    }
+}
diff --git a/IStation.DataDockingSocket.SZJT_SZY1/paras_datadocking_socket_szjt_szy1.json b/IStation.DataDockingSocket.SZJT_SZY1/paras_datadocking_socket_szjt_szy1.json
new file mode 100644
index 0000000..923e7e5
--- /dev/null
+++ b/IStation.DataDockingSocket.SZJT_SZY1/paras_datadocking_socket_szjt_szy1.json
@@ -0,0 +1,42 @@
+{
+  "InstructionSendSpace": 10,
+  "InstructionItems": [
+    {
+      "Instruction": "01-03-01-82-00-08-E5-D8",
+      "Frequency": 60,
+      "RuleItems": [
+        {
+          "SignId": "szy1_387",
+          "Index": 387,
+          "Ratio": 1,
+          "Rule": 1
+        },
+        {
+          "SignId": "szy1_389",
+          "Index": 389,
+          "Ratio": 1,
+          "Rule": 1
+        },
+        {
+          "SignId": "szy1_391",
+          "Index": 391,
+          "Ratio": 1,
+          "Rule": 1
+        },
+        {
+          "SignId": "szy1_393",
+          "Index": 393,
+          "Ratio": 1,
+          "Rule": 1
+        }
+      ]
+    }
+  ],
+  "OldTransfer": {
+    "RegisterCode": "@@@863293051622816",
+    "TransferUrl": "http://172.19.69.11:9019/Run/DataDocking/Standard/Insert@V1.0"
+  },
+  "SupportOld": true,
+  "Debug": true,
+  "Src": true
+}
diff --git a/IStation.TopShelf.DataDocking4Socket/IStation.TopShelf.DataDocking4Socket.csproj.user b/IStation.TopShelf.DataDocking4Socket/IStation.TopShelf.DataDocking4Socket.csproj.user
new file mode 100644
index 0000000..aaa695c
--- /dev/null
+++ b/IStation.TopShelf.DataDocking4Socket/IStation.TopShelf.DataDocking4Socket.csproj.user
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <_LastSelectedProfileId>D:\WorkData\git\istation\szjt\IStation.TopShelf.DataDocking4Socket\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/IStation.TopShelf.DataDocking4Socket/Properties/PublishProfiles/FolderProfile.pubxml.user b/IStation.TopShelf.DataDocking4Socket/Properties/PublishProfiles/FolderProfile.pubxml.user
index 8db93aa..9e47b0e 100644
--- a/IStation.TopShelf.DataDocking4Socket/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/IStation.TopShelf.DataDocking4Socket/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,7 +4,7 @@
 -->
 <Project>
   <PropertyGroup>
-    <History>True|2024-11-11T08:07:57.2232009Z;True|2024-05-16T13:56:47.8204382+08:00;True|2024-05-09T16:59:48.1703915+08:00;False|2024-05-09T16:54:48.1914196+08:00;True|2024-04-04T11:53:15.6689438+08:00;False|2024-04-04T11:52:41.3417899+08:00;False|2024-04-04T11:50:18.0958240+08:00;True|2023-12-26T12:15:34.2479140+08:00;True|2023-12-26T12:15:13.2347981+08:00;True|2023-12-12T20:07:12.6576370+08:00;True|2022-12-01T15:20:13.0180741+08:00;True|2022-12-01T13:30:29.6610607+08:00;True|2022-12-01T13:10:00.6718954+08:00;True|2022-11-30T16:12:46.0669167+08:00;True|2022-11-30T16:11:46.8013058+08:00;True|2022-11-18T17:16:08.2357388+08:00;True|2022-11-18T17:10:16.7111998+08:00;True|2022-11-18T17:04:10.5678845+08:00;True|2022-11-18T17:01:48.4283015+08:00;True|2022-11-18T16:52:07.1424550+08:00;True|2022-11-07T14:19:02.7595787+08:00;True|2022-11-07T14:16:18.9629209+08:00;True|2022-11-07T14:10:58.7927593+08:00;True|2022-11-07T13:40:15.7710087+08:00;True|2022-11-04T10:51:31.2128411+08:00;True|2022-11-04T10:50:48.9390883+08:00;False|2022-11-04T10:45:25.5349335+08:00;False|2022-11-04T10:38:09.7881861+08:00;False|2022-11-04T10:32:57.3163779+08:00;True|2022-10-31T13:50:19.2799744+08:00;True|2022-10-28T18:12:41.9095520+08:00;True|2022-10-28T15:43:16.2950292+08:00;True|2022-10-28T15:41:52.2233941+08:00;True|2022-10-28T15:30:14.2215199+08:00;True|2022-10-28T11:51:16.0785196+08:00;True|2022-10-28T11:44:51.8315664+08:00;True|2022-10-28T10:33:52.2698494+08:00;True|2022-10-28T09:35:47.1875028+08:00;True|2022-10-28T09:10:26.0008427+08:00;True|2022-10-27T18:39:24.9534804+08:00;True|2022-10-27T18:33:34.4681116+08:00;True|2022-10-27T18:13:21.7875951+08:00;True|2022-10-27T18:12:44.3890244+08:00;True|2022-10-27T18:07:26.1755739+08:00;True|2022-10-27T17:57:58.0347320+08:00;True|2022-10-27T17:34:58.8259465+08:00;True|2022-10-27T17:22:06.3154634+08:00;False|2022-10-27T17:20:19.9004059+08:00;True|2022-10-27T17:18:10.4716763+08:00;True|2022-10-27T17:05:00.4099257+08:00;True|2022-10-27T16:54:07.3727699+08:00;True|2022-10-27T16:42:08.7868428+08:00;True|2022-10-27T16:20:40.9187590+08:00;True|2022-10-27T16:15:48.8887876+08:00;True|2022-10-27T15:32:23.6326778+08:00;True|2022-10-27T15:31:21.2898598+08:00;True|2022-10-27T15:31:06.9752171+08:00;True|2022-10-27T15:30:12.3351290+08:00;True|2022-10-27T15:16:06.6376480+08:00;True|2022-10-27T15:04:16.6181644+08:00;True|2022-10-27T14:56:07.3371453+08:00;True|2022-10-27T14:55:40.9994920+08:00;True|2022-10-26T14:21:13.7358061+08:00;True|2022-10-26T13:58:17.8518712+08:00;True|2022-10-26T10:50:57.8305616+08:00;True|2022-10-26T10:41:24.0512951+08:00;True|2022-10-26T10:36:18.9669938+08:00;True|2022-10-26T10:23:42.5700603+08:00;True|2022-10-26T09:49:18.1242267+08:00;True|2022-10-24T17:44:25.5039390+08:00;True|2022-07-02T00:06:16.6338790+08:00;True|2022-07-02T00:02:49.1000053+08:00;True|2022-07-01T23:23:53.1924783+08:00;True|2022-07-01T14:02:38.1190102+08:00;True|2022-07-01T13:55:33.4591108+08:00;</History>
+    <History>True|2024-11-19T02:44:43.1147974Z;True|2024-11-11T16:07:57.2232009+08:00;True|2024-05-16T13:56:47.8204382+08:00;True|2024-05-09T16:59:48.1703915+08:00;False|2024-05-09T16:54:48.1914196+08:00;True|2024-04-04T11:53:15.6689438+08:00;False|2024-04-04T11:52:41.3417899+08:00;False|2024-04-04T11:50:18.0958240+08:00;True|2023-12-26T12:15:34.2479140+08:00;True|2023-12-26T12:15:13.2347981+08:00;True|2023-12-12T20:07:12.6576370+08:00;True|2022-12-01T15:20:13.0180741+08:00;True|2022-12-01T13:30:29.6610607+08:00;True|2022-12-01T13:10:00.6718954+08:00;True|2022-11-30T16:12:46.0669167+08:00;True|2022-11-30T16:11:46.8013058+08:00;True|2022-11-18T17:16:08.2357388+08:00;True|2022-11-18T17:10:16.7111998+08:00;True|2022-11-18T17:04:10.5678845+08:00;True|2022-11-18T17:01:48.4283015+08:00;True|2022-11-18T16:52:07.1424550+08:00;True|2022-11-07T14:19:02.7595787+08:00;True|2022-11-07T14:16:18.9629209+08:00;True|2022-11-07T14:10:58.7927593+08:00;True|2022-11-07T13:40:15.7710087+08:00;True|2022-11-04T10:51:31.2128411+08:00;True|2022-11-04T10:50:48.9390883+08:00;False|2022-11-04T10:45:25.5349335+08:00;False|2022-11-04T10:38:09.7881861+08:00;False|2022-11-04T10:32:57.3163779+08:00;True|2022-10-31T13:50:19.2799744+08:00;True|2022-10-28T18:12:41.9095520+08:00;True|2022-10-28T15:43:16.2950292+08:00;True|2022-10-28T15:41:52.2233941+08:00;True|2022-10-28T15:30:14.2215199+08:00;True|2022-10-28T11:51:16.0785196+08:00;True|2022-10-28T11:44:51.8315664+08:00;True|2022-10-28T10:33:52.2698494+08:00;True|2022-10-28T09:35:47.1875028+08:00;True|2022-10-28T09:10:26.0008427+08:00;True|2022-10-27T18:39:24.9534804+08:00;True|2022-10-27T18:33:34.4681116+08:00;True|2022-10-27T18:13:21.7875951+08:00;True|2022-10-27T18:12:44.3890244+08:00;True|2022-10-27T18:07:26.1755739+08:00;True|2022-10-27T17:57:58.0347320+08:00;True|2022-10-27T17:34:58.8259465+08:00;True|2022-10-27T17:22:06.3154634+08:00;False|2022-10-27T17:20:19.9004059+08:00;True|2022-10-27T17:18:10.4716763+08:00;True|2022-10-27T17:05:00.4099257+08:00;True|2022-10-27T16:54:07.3727699+08:00;True|2022-10-27T16:42:08.7868428+08:00;True|2022-10-27T16:20:40.9187590+08:00;True|2022-10-27T16:15:48.8887876+08:00;True|2022-10-27T15:32:23.6326778+08:00;True|2022-10-27T15:31:21.2898598+08:00;True|2022-10-27T15:31:06.9752171+08:00;True|2022-10-27T15:30:12.3351290+08:00;True|2022-10-27T15:16:06.6376480+08:00;True|2022-10-27T15:04:16.6181644+08:00;True|2022-10-27T14:56:07.3371453+08:00;True|2022-10-27T14:55:40.9994920+08:00;True|2022-10-26T14:21:13.7358061+08:00;True|2022-10-26T13:58:17.8518712+08:00;True|2022-10-26T10:50:57.8305616+08:00;True|2022-10-26T10:41:24.0512951+08:00;True|2022-10-26T10:36:18.9669938+08:00;True|2022-10-26T10:23:42.5700603+08:00;True|2022-10-26T09:49:18.1242267+08:00;True|2022-10-24T17:44:25.5039390+08:00;True|2022-07-02T00:06:16.6338790+08:00;True|2022-07-02T00:02:49.1000053+08:00;True|2022-07-01T23:23:53.1924783+08:00;True|2022-07-01T14:02:38.1190102+08:00;True|2022-07-01T13:55:33.4591108+08:00;</History>
     <LastFailureDetails />
   </PropertyGroup>
 </Project>
\ No newline at end of file

--
Gitblit v1.9.3