Shun 2 years ago
parent
commit
fa2c2c54f1

+ 0 - 6
src/YSAI.DAQ/YSAI.Core/YSAI.Core.csproj

@@ -18,10 +18,4 @@
 		<ProjectReference Include="..\YSAI.Unility\YSAI.Unility.csproj" />
 	</ItemGroup>
 
-	<ItemGroup>
-	  <None Update="config\ReflectionConfig.json">
-	    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-	  </None>
-	</ItemGroup>
-
 </Project>

+ 142 - 65
src/YSAI.DAQ/YSAI.Core/data/AddressHandler.cs

@@ -60,15 +60,19 @@ namespace YSAI.Core.data
                 addressValue.Time = DateTime.Now.ToLocalTime();
                 addressValue.Quality = 1;
 
-                //转发
-                OperateResult operateResult = Produce(PacketType.Message.ToString(), addressValue.ToJson().JsonFormatting());
-                if (!operateResult.State)
+                //反射状态为true才进行操作
+                if (reflectionOperate.ReflectionState)
                 {
-                    //当数据转发失败,就存到本地
-                    DynamicObj.Value = addressValue.ToJson();
-                    DynamicObj.State = operateResult.State;
-                    DynamicObj.Exception = operateResult.Message;
-                    LogHelper.FailData(DynamicObj.ToJson(), FailDataLog);
+                    //转发
+                    OperateResult operateResult = Produce(PacketType.Message.ToString(), addressValue.ToJson().JsonFormatting());
+                    if (!operateResult.State)
+                    {
+                        //当数据转发失败,就存到本地
+                        DynamicObj.Value = addressValue.ToJson();
+                        DynamicObj.State = operateResult.State;
+                        DynamicObj.Exception = operateResult.Message;
+                        LogHelper.FailData(DynamicObj.ToJson(), FailDataLog);
+                    }
                 }
 
                 return addressValue;
@@ -134,12 +138,20 @@ namespace YSAI.Core.data
         /// <returns>统一出参</returns>
         public static OperateResult Subscribe(string Topic, string ISn)
         {
-            //类的唯一标识符
-            string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
-            //方法的唯一标识符
-            string MethodSN = "[Subscribe]";
-            //执行转发方法
-            return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { Topic, ISn }) as OperateResult;
+            //反射状态为true才进行操作
+            if (reflectionOperate.ReflectionState)
+            {
+                //类的唯一标识符
+                string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
+                //方法的唯一标识符
+                string MethodSN = "[Subscribe]";
+                //执行转发方法
+                return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { Topic, ISn }) as OperateResult;
+            }
+            else
+            {
+                return new OperateResult(false, $"反射状态 {reflectionOperate.ReflectionState} 不做此操作", 0.1);
+            }
         }
         /// <summary>
         /// 取消订阅
@@ -149,12 +161,20 @@ namespace YSAI.Core.data
         /// <returns>统一出参</returns>
         public static OperateResult UnSubscribe(string Topic, string ISn)
         {
-            //类的唯一标识符
-            string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
-            //方法的唯一标识符
-            string MethodSN = "[UnSubscribe]";
-            //执行转发方法
-            return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { Topic, ISn }) as OperateResult;
+            //反射状态为true才进行操作
+            if (reflectionOperate.ReflectionState)
+            {
+                //类的唯一标识符
+                string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
+                //方法的唯一标识符
+                string MethodSN = "[UnSubscribe]";
+                //执行转发方法
+                return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { Topic, ISn }) as OperateResult;
+            }
+            else
+            {
+                return new OperateResult(false, $"反射状态 {reflectionOperate.ReflectionState} 不做此操作", 0.1);
+            }
         }
 
         /// <summary>
@@ -166,12 +186,20 @@ namespace YSAI.Core.data
         /// <returns>统一出参</returns>
         public static OperateResult Produce(string Topic, string Content,List<string>? ISns = null)
         {
-            //类的唯一标识符
-            string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
-            //方法的唯一标识符
-            string MethodSN = "[Produce]";
-            //执行转发方法
-            return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { Topic, Content, ISns }) as OperateResult;
+            //反射状态为true才进行操作
+            if (reflectionOperate.ReflectionState)
+            {
+                //类的唯一标识符
+                string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
+                //方法的唯一标识符
+                string MethodSN = "[Produce]";
+                //执行转发方法
+                return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { Topic, Content, ISns }) as OperateResult;
+            }
+            else
+            {
+                return new OperateResult(false, $"反射状态 {reflectionOperate.ReflectionState} 不做此操作", 0.1);
+            }
         }
 
         /// <summary>
@@ -179,24 +207,40 @@ namespace YSAI.Core.data
         /// </summary>
         public static List<string>? TypeSns()
         {
-            //类的唯一标识符
-            string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
-            //方法的唯一标识符
-            string MethodSN = "[TypeSns]";
-            //执行转发方法
-            return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", null) as List<string>;
+            //反射状态为true才进行操作
+            if (reflectionOperate.ReflectionState)
+            {
+                //类的唯一标识符
+                string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
+                //方法的唯一标识符
+                string MethodSN = "[TypeSns]";
+                //执行转发方法
+                return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", null) as List<string>;
+            }
+            else
+            {
+                return null;
+            }
         }
         /// <summary>
         /// 实例唯一标识符集合
         /// </summary>
         public static List<string>? InstanceSns()
         {
-            //类的唯一标识符
-            string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
-            //方法的唯一标识符
-            string MethodSN = "[InstanceSns]";
-            //执行转发方法
-            return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", null) as List<string>;
+            //反射状态为true才进行操作
+            if (reflectionOperate.ReflectionState)
+            {
+                //类的唯一标识符
+                string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
+                //方法的唯一标识符
+                string MethodSN = "[InstanceSns]";
+                //执行转发方法
+                return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", null) as List<string>;
+            }
+            else
+            {
+                return null;
+            }
         }
         /// <summary>
         /// 释放指定实例
@@ -205,12 +249,20 @@ namespace YSAI.Core.data
         /// <returns>统一出参</returns>
         public static OperateResult DisposeISn(string ISn)
         {
-            //类的唯一标识符
-            string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
-            //方法的唯一标识符
-            string MethodSN = "[DisposeISn]";
-            //执行转发方法
-            return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { ISn }) as OperateResult;
+            //反射状态为true才进行操作
+            if (reflectionOperate.ReflectionState)
+            {
+                //类的唯一标识符
+                string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
+                //方法的唯一标识符
+                string MethodSN = "[DisposeISn]";
+                //执行转发方法
+                return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { ISn }) as OperateResult;
+            }
+            else
+            {
+                return new OperateResult(false, $"反射状态 {reflectionOperate.ReflectionState} 不做此操作", 0.1);
+            }
         }
         /// <summary>
         /// 移除指定实例
@@ -219,12 +271,20 @@ namespace YSAI.Core.data
         /// <returns>统一出参</returns>
         public static OperateResult RemoveISn(string ISn)
         {
-            //类的唯一标识符
-            string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
-            //方法的唯一标识符
-            string MethodSN = "[RemoveISn]";
-            //执行转发方法
-            return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { ISn }) as OperateResult;
+            //反射状态为true才进行操作
+            if (reflectionOperate.ReflectionState)
+            {
+                //类的唯一标识符
+                string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
+                //方法的唯一标识符
+                string MethodSN = "[RemoveISn]";
+                //执行转发方法
+                return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { ISn }) as OperateResult;
+            }
+            else
+            {
+                return new OperateResult(false, $"反射状态 {reflectionOperate.ReflectionState} 不做此操作", 0.1);
+            }
         }
         /// <summary>
         /// 打开
@@ -233,12 +293,20 @@ namespace YSAI.Core.data
         /// <returns>统一出参</returns>
         public static OperateResult On(string ISn)
         {
-            //类的唯一标识符
-            string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
-            //方法的唯一标识符
-            string MethodSN = "[On]";
-            //执行转发方法
-            return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { ISn }) as OperateResult;
+            //反射状态为true才进行操作
+            if (reflectionOperate.ReflectionState)
+            {
+                //类的唯一标识符
+                string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
+                //方法的唯一标识符
+                string MethodSN = "[On]";
+                //执行转发方法
+                return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { ISn }) as OperateResult;
+            }
+            else
+            {
+                return new OperateResult(false, $"反射状态 {reflectionOperate.ReflectionState} 不做此操作", 0.1);
+            }
         }
         /// <summary>
         /// 关闭
@@ -247,12 +315,20 @@ namespace YSAI.Core.data
         /// <returns>统一出参</returns>
         public static OperateResult Off(string ISn)
         {
-            //类的唯一标识符
-            string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
-            //方法的唯一标识符
-            string MethodSN = "[Off]";
-            //执行转发方法
-            return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { ISn }) as OperateResult;
+            //反射状态为true才进行操作
+            if (reflectionOperate.ReflectionState)
+            {
+                //类的唯一标识符
+                string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
+                //方法的唯一标识符
+                string MethodSN = "[Off]";
+                //执行转发方法
+                return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { ISn }) as OperateResult;
+            }
+            else
+            {
+                return new OperateResult(false, $"反射状态 {reflectionOperate.ReflectionState} 不做此操作", 0.1);
+            }
         }
         /// <summary>
         /// 转发事件注册
@@ -260,7 +336,8 @@ namespace YSAI.Core.data
         /// <returns></returns>
         public static OperateResult RelayEventRegister(Action<object, object> action, bool Register = true)
         {
-            try
+            //反射状态为true才进行操作
+            if (reflectionOperate.ReflectionState)
             {
                 //类的唯一标识符
                 string ClassSN = "YSAI.RelayManage.RelayManageOperate[Instance]";
@@ -269,9 +346,9 @@ namespace YSAI.Core.data
                 //注册事件
                 return reflectionOperate.RegisterEvent($"{ClassSN}{EventSN}", Register, P2: action);
             }
-            catch (Exception ex)
+            else
             {
-                return new OperateResult(false, $"转发事件注册异常:{ex.Message}", 0.1);
+                return new OperateResult(false, $"反射状态 {reflectionOperate.ReflectionState} 不做此操作", 0.1);
             }
         }
 

+ 8 - 0
src/YSAI.DAQ/YSAI.Core/reflection/ReflectionOperate.cs

@@ -135,6 +135,12 @@ namespace YSAI.Core.reflection
             }
             return false;
         }
+
+        /// <summary>
+        /// 反射状态
+        /// </summary>
+        public bool ReflectionState { get; set; }
+
         /// <summary>
         /// 构造函数处理配置
         /// </summary>
@@ -303,6 +309,7 @@ namespace YSAI.Core.reflection
                         }
                     }
                 }
+                ReflectionState = true;
                 return Break("Init", true, "反射初始化成功", MethodIocContainer);
             }
             catch (Exception ex)
@@ -571,6 +578,7 @@ namespace YSAI.Core.reflection
 
         public void Dispose()
         {
+            ReflectionState = false;
             ObjectIocContainer.Clear();
             MethodIocContainer.Clear();
             EventIocContainer.Clear();

+ 9 - 0
src/YSAI.DAQ/YSAI.DAQ.sln

@@ -73,6 +73,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lib", "lib", "{7EB5153B-770
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "windows", "windows", "{1856E9E1-33C4-45C1-832C-854F9BE1ACC4}"
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scada", "scada", "{6C5A77B5-E246-41D2-A761-ACFF550D5255}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.SCADA", "YSAI.SCADA\YSAI.SCADA.csproj", "{D6C9C5DE-DBCF-40D0-96A6-02A88FBAA013}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -187,6 +191,10 @@ Global
 		{623C8558-8901-4D69-B1AC-1615597E8B88}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{623C8558-8901-4D69-B1AC-1615597E8B88}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{623C8558-8901-4D69-B1AC-1615597E8B88}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D6C9C5DE-DBCF-40D0-96A6-02A88FBAA013}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D6C9C5DE-DBCF-40D0-96A6-02A88FBAA013}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D6C9C5DE-DBCF-40D0-96A6-02A88FBAA013}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D6C9C5DE-DBCF-40D0-96A6-02A88FBAA013}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -223,6 +231,7 @@ Global
 		{DD9020DC-A51F-48F2-83FA-A3F10A43220F} = {ECAD410C-2895-4836-BCA7-D4EF340E778E}
 		{623C8558-8901-4D69-B1AC-1615597E8B88} = {12CB0510-7B1E-4518-AA3B-412A4D323D42}
 		{1856E9E1-33C4-45C1-832C-854F9BE1ACC4} = {ECAD410C-2895-4836-BCA7-D4EF340E778E}
+		{D6C9C5DE-DBCF-40D0-96A6-02A88FBAA013} = {6C5A77B5-E246-41D2-A761-ACFF550D5255}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {5D5D3927-6714-40C0-84EA-44C5BA4C5E87}

+ 10 - 0
src/YSAI.DAQ/YSAI.Manage/YSAI.Manage.csproj

@@ -8,6 +8,16 @@
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
 
+  <ItemGroup>
+    <Content Remove="config\ReflectionConfig.json" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <None Include="config\ReflectionConfig.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+  </ItemGroup>
+
   <ItemGroup>
     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
   </ItemGroup>

src/YSAI.DAQ/YSAI.Core/config/ReflectionConfig.json → src/YSAI.DAQ/YSAI.Manage/config/ReflectionConfig.json


+ 10 - 0
src/YSAI.DAQ/YSAI.SCADA/Program.cs

@@ -0,0 +1,10 @@
+namespace YSAI.SCADA
+{
+    internal class Program
+    {
+        static void Main(string[] args)
+        {
+            Console.WriteLine("Hello, World!");
+        }
+    }
+}

File diff suppressed because it is too large
+ 24 - 0
src/YSAI.DAQ/YSAI.SCADA/YSAI.SCADA.csproj