lixun 2 år sedan
förälder
incheckning
06f7cd749f

+ 103 - 0
src/YSAI.DAQ/YSAI.Manage/Controllers/LibInfoController.cs

@@ -0,0 +1,103 @@
+using Microsoft.AspNetCore.Mvc;
+using System.ComponentModel;
+using System.Reflection.Metadata.Ecma335;
+using YSAI.Core.data;
+using YSAI.Core.@enum;
+using YSAI.Core.@interface.unify;
+using YSAI.DB;
+using YSAI.Kafka;
+using YSAI.Log;
+using YSAI.Manage.or;
+using YSAI.Modbus.client;
+using YSAI.Mqtt.client;
+using YSAI.Mqtt.service;
+using YSAI.Mqtt.service.websocket;
+using YSAI.Opc.da.client;
+using YSAI.Opc.da.http;
+using YSAI.Opc.ua.client;
+using YSAI.Opc.ua.service;
+using YSAI.RabbitMQ;
+using YSAI.S7.client;
+using YSAI.Unility;
+
+namespace YSAI.Manage.Controllers
+{
+    /// <summary>
+    /// 库文件信息
+    /// </summary>
+    [ApiController]
+    [Route("api/[controller]/[action]")]
+    public class LibInfoController : Controller
+    {
+
+        private readonly IConfiguration configuration;
+        private Or operateResult;
+        public LibInfoController(IConfiguration configuration, Or operateResult)
+        {
+            this.configuration = configuration;
+            this.operateResult = operateResult;
+            operateResult.LogHead = "[ LibInfo 操作 ]";
+            operateResult.ClassName = "LibInfo";
+        }
+
+        /// <summary>
+        /// 获取库文件集合
+        /// </summary>
+        /// <returns>rData:库文件名集合</returns>
+        [HttpGet]
+        [Description("获取库文件集合")]
+        public IActionResult array()
+        {
+            //开始记录运行时间
+            RunTimeTool.Instance($"{operateResult.ClassName}.array").StartRecord();
+            return Ok(operateResult.Break("array",true,RData: configuration.GetSection("Config:LibArray").Get<List<string>>(), RType:ResultType.Json));
+        }
+
+        /// <summary>
+        /// 获取库文件实例参数
+        /// </summary>
+        /// <param name="name">库文件名</param>
+        /// <returns>rData:库文件所需实例参数集合</returns>
+        [HttpGet]
+        [Description("获取库文件实例参数")]
+        public IActionResult param(string name)
+        {
+            //开始记录运行时间
+            RunTimeTool.Instance($"{operateResult.ClassName}.param").StartRecord();
+            switch (name)
+            {
+                case "DB":
+                   return Ok(operateResult.Break("param",true,RData: ReflexTool.GetClassAllPropertyData<DBData.Basics>(),RType:ResultType.Json));
+                case "KafkaAdmin":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<KafkaAdminData.Basics>(), RType: ResultType.Json));
+                case "KafkaConsumer":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<KafkaConsumerData.Basics>(), RType: ResultType.Json));
+                case "KafkaProducer":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<KafkaProducerData.Basics>(), RType: ResultType.Json));
+                case "ModbusClient":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<ModbusClientData.Basics>(), RType: ResultType.Json));
+                case "MqttService":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<MqttServiceData.Basics>(), RType: ResultType.Json));
+                case "MqttWebSocketService":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<MqttWebSocketServiceData.Basics>(), RType: ResultType.Json));
+                case "MqttClient":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<MqttClientData.Basics>(), RType: ResultType.Json));
+                case "OpcDaClient":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<OpcDaClientData.Basics>(), RType: ResultType.Json));
+                case "OpcDaHttp":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<OpcDaHttpData.Basics>(), RType: ResultType.Json));
+                case "OpcUaClient":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<OpcUaClientData.Basics>(), RType: ResultType.Json));
+                case "OpcUaService":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<OpcUaServiceData.Basics>(), RType: ResultType.Json));
+                case "RabbitMQConsumer":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<RabbitMQData.Basics>(), RType: ResultType.Json));
+                case "RabbitMQPublisher":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<RabbitMQData.Basics>(), RType: ResultType.Json));
+                case "S7Client":
+                    return Ok(operateResult.Break("param", true, RData: ReflexTool.GetClassAllPropertyData<S7ClientData.Basics>(), RType: ResultType.Json));
+            }
+            return Ok(operateResult.Break("param", false, "输入有误"));
+        }
+    }
+}

+ 0 - 140
src/YSAI.DAQ/YSAI.Manage/Controllers/libController.cs

@@ -1,140 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-using System.ComponentModel;
-using System.Reflection.Metadata.Ecma335;
-using YSAI.Core.data;
-using YSAI.Core.@enum;
-using YSAI.Core.@interface.unify;
-using YSAI.DB;
-using YSAI.Kafka;
-using YSAI.Log;
-using YSAI.Modbus.client;
-using YSAI.Mqtt.client;
-using YSAI.Mqtt.service;
-using YSAI.Mqtt.service.websocket;
-using YSAI.Opc.da.client;
-using YSAI.Opc.da.http;
-using YSAI.Opc.ua.client;
-using YSAI.Opc.ua.service;
-using YSAI.RabbitMQ;
-using YSAI.S7.client;
-using YSAI.Unility;
-
-namespace YSAI.Manage.Controllers
-{
-    /// <summary>
-    /// 库文件信息
-    /// </summary>
-    [ApiController]
-    [Route("api/[controller]/[action]")]
-    public class libController : Controller,IOr
-    {
-        /// <summary>
-        /// 获取库文件集合
-        /// </summary>
-        /// <returns></returns>
-        [HttpGet]
-        [Description("获取库文件集合")]
-        public IActionResult array()
-        {
-            //开始记录运行时间
-            RunTimeTool.Instance($"{ClassName}.array").StartRecord();
-            return Ok(Break("array",true,RData: libArray,RType:ResultType.Json));
-        }
-        /// <summary>
-        /// 获取库文件实例参数
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        [HttpGet]
-        [Description("获取库文件实例参数")]
-        public IActionResult param(string name)
-        {
-            //开始记录运行时间
-            RunTimeTool.Instance($"{ClassName}.param").StartRecord();
-            switch (name)
-            {
-                case "DB":
-                   return Ok(Break("param",true,RData: ReflexTool.GetClassAllPropertyData<DBData.Basics>(),RType:ResultType.Json));
-                case "KafkaAdmin":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<KafkaAdminData.Basics>(), RType: ResultType.Json));
-                case "KafkaConsumer":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<KafkaConsumerData.Basics>(), RType: ResultType.Json));
-                case "KafkaProducer":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<KafkaProducerData.Basics>(), RType: ResultType.Json));
-                case "ModbusClient":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<ModbusClientData.Basics>(), RType: ResultType.Json));
-                case "MqttService":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<MqttServiceData.Basics>(), RType: ResultType.Json));
-                case "MqttWebSocketService":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<MqttWebSocketServiceData.Basics>(), RType: ResultType.Json));
-                case "MqttClient":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<MqttClientData.Basics>(), RType: ResultType.Json));
-                case "OpcDaClient":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<OpcDaClientData.Basics>(), RType: ResultType.Json));
-                case "OpcDaHttp":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<OpcDaHttpData.Basics>(), RType: ResultType.Json));
-                case "OpcUaClient":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<OpcUaClientData.Basics>(), RType: ResultType.Json));
-                case "OpcUaService":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<OpcUaServiceData.Basics>(), RType: ResultType.Json));
-                case "RabbitMQConsumer":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<RabbitMQData.Basics>(), RType: ResultType.Json));
-                case "RabbitMQPublisher":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<RabbitMQData.Basics>(), RType: ResultType.Json));
-                case "S7Client":
-                    return Ok(Break("param", true, RData: ReflexTool.GetClassAllPropertyData<S7ClientData.Basics>(), RType: ResultType.Json));
-            }
-            return Ok(Break("param", false, "输入有误"));
-        }
-        /// <summary>
-        /// 库文件集合
-        /// </summary>
-        private string[] libArray = new string[]
-       {
-            "DB",
-            "KafkaAdmin",
-            "KafkaConsumer",
-            "KafkaProducer",
-            "ModbusClient",
-            "MqttClient",
-            "MqttService",
-            "MqttWebSocketService",
-            "OpcDaClient",
-            "OpcDaHttp",
-            "OpcUaClient",
-            "OpcUaService",
-            "RabbitMQConsumer",
-            "RabbitMQPublisher",
-            "S7Client"
-       };
-
-        public string LogHead => "[ lib 操作 ]";
-
-        public string ClassName => "lib";
-
-        [NonAction]
-        public Task<OperateResult> BreakAsync(string MethodName, bool State, string? Message = null, object? RData = null, ResultType RType = ResultType.NULL)
-        {
-            return Task.Run(() =>
-            {
-                return Break(MethodName, State, Message, RData, RType);
-            });
-        }
-        [NonAction]
-        public OperateResult Break(string MethodName, bool State, string? Message = null, object? RData = null, ResultType RType = ResultType.NULL)
-        {
-            //返回运行时间(毫秒)
-            double runTime = RunTimeTool.Instance($"{ClassName}.{MethodName}").StopRecord().milliseconds;
-            //消息数据组织
-            string message = $"{LogHead} ( {MethodName} {(State ? "成功" : "异常")} ){(string.IsNullOrEmpty(Message) ? "" : $" : {Message}")}";
-            //异常则输出日志
-            if (!State) { LogHelper.Error(message, $"{ClassName}.log"); }
-            //返回状态
-            return new OperateResult(State, message, runTime, RData, RType);
-        }
-
-        
-
-        
-    }
-}

+ 6 - 1
src/YSAI.DAQ/YSAI.Manage/Program.cs

@@ -1,5 +1,9 @@
+
+using Microsoft.Extensions.Configuration.Json;
 using System.Reflection;
 using YSAI.Core.@interface.unify;
+using YSAI.Manage.Controllers;
+using YSAI.Manage.or;
 
 namespace YSAI.Manage
 {
@@ -9,8 +13,9 @@ namespace YSAI.Manage
         {
             var builder = WebApplication.CreateBuilder(args);
 
-            // Add services to the container.
+            builder.Services.AddSingleton<Or>();
 
+            // Add services to the container.
             builder.Services.AddControllers();
             // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
             builder.Services.AddEndpointsApiExplorer();

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/Properties/launchSettings.json

@@ -14,7 +14,7 @@
       "dotnetRunMessages": true,
       "launchBrowser": true,
       "launchUrl": "swagger",
-      "applicationUrl": "https://localhost:7205;http://localhost:5237",
+      "applicationUrl": "https://192.168.2.38:7205;http://192.168.2.38:5237",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
       }

+ 4 - 1
src/YSAI.DAQ/YSAI.Manage/appsettings.json

@@ -5,5 +5,8 @@
       "Microsoft.AspNetCore": "Warning"
     }
   },
-  "AllowedHosts": "*"
+  "AllowedHosts": "*",
+  "Config": {
+    "LibArray": [ "DB", "KafkaAdmin", "KafkaConsumer", "KafkaProducer", "ModbusClient", "MqttClient", "MqttService", "MqttWebSocketService", "OpcDaClient", "OpcDaHttp", "OpcUaClient", "OpcUaService", "RabbitMQConsumer", "RabbitMQPublisher", "S7Client" ]
+  }
 }

+ 41 - 0
src/YSAI.DAQ/YSAI.Manage/or/Or.cs

@@ -0,0 +1,41 @@
+using YSAI.Core.data;
+using YSAI.Core.@enum;
+using YSAI.Core.@interface.unify;
+using YSAI.Log;
+using YSAI.Unility;
+
+namespace YSAI.Manage.or
+{
+    /// <summary>
+    /// 统一返回结果
+    /// </summary>
+    public class Or
+    {
+        public virtual string LogHead
+        {
+            get; set;
+        }
+        public virtual string ClassName
+        {
+            get; set;
+        }
+        public virtual Task<OperateResult> BreakAsync(string MethodName, bool State, string? Message = null, object? RData = null, ResultType RType = ResultType.NULL)
+        {
+            return Task.Run(() =>
+            {
+                return Break(MethodName, State, Message, RData, RType);
+            });
+        }
+        public virtual OperateResult Break(string MethodName, bool State, string? Message = null, object? RData = null, ResultType RType = ResultType.NULL)
+        {
+            //返回运行时间(毫秒)
+            double runTime = RunTimeTool.Instance($"{ClassName}.{MethodName}").StopRecord().milliseconds;
+            //消息数据组织
+            string message = $"{LogHead} ( {MethodName} {(State ? "成功" : "异常")} ){(string.IsNullOrEmpty(Message) ? "" : $" : {Message}")}";
+            //异常则输出日志
+            if (!State) { LogHelper.Error(message, $"{ClassName}.log"); }
+            //返回状态
+            return new OperateResult(State, message, runTime, RData, RType);
+        }
+    }
+}

+ 36 - 2
src/YSAI.DAQ/YSAI.Unility/ReflexTool.cs

@@ -159,14 +159,48 @@ namespace YSAI.Unility
                     libInstanceParam.paramType = "Enum";
                     libInstanceParam.enumArray = pi.PropertyType.GetAllItems();
                 }
-                else if(pi.PropertyType.BaseType.Name.Equals("Object"))
+                else
                 {
-                    Console.WriteLine();
+                    libInstanceParam.objArray= GetClassAllPropertyData(pi.PropertyType);
                 }
                 libInstanceParams.Add(libInstanceParam);
             }
             return libInstanceParams;
         }
+
+        /// <summary>
+        /// 获取类中所有属性信息
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        public static List<LibInstanceParam>? GetClassAllPropertyData(Type type)
+        {
+            try
+            {
+                List<LibInstanceParam> libInstanceParams = new List<LibInstanceParam>();
+                //创建实体对象实例
+                var tac = Activator.CreateInstance(type);
+                System.Type t = tac.GetType();//获得该类的Type
+                foreach (PropertyInfo pi in t.GetProperties())
+                {
+                    LibInstanceParam libInstanceParam = new LibInstanceParam();
+                    libInstanceParam.name = pi.Name;
+                    libInstanceParam.describe = pi.GetDescription();
+                    libInstanceParam.paramType = pi.PropertyType.Name.ToString();
+                    if (pi.PropertyType.BaseType.Name.Equals("Enum"))
+                    {
+                        libInstanceParam.paramType = "Enum";
+                        libInstanceParam.enumArray = pi.PropertyType.GetAllItems();
+                    }
+                    libInstanceParams.Add(libInstanceParam);
+                }
+                return libInstanceParams;
+            }
+            catch (Exception)
+            {
+                return null;
+            }
+            
+        }
         /// <summary>
         /// 库文件实例参数
         /// </summary>