Shun 2 gadi atpakaļ
vecāks
revīzija
30879f0303

+ 12 - 0
src/YSAI.DAQ/YSAI.Core/config/ReflectionConfig.json

@@ -12,6 +12,18 @@
               "ClassName": "RelayManageOperate",
               "ConstructorParam": null,
               "MethodDatas": [
+                {
+                  "SN": "[Subscribe]",
+                  "WhetherExecute": false,
+                  "MethodName": "Subscribe",
+                  "MethodParam": null
+                },
+                {
+                  "SN": "[UnSubscribe]",
+                  "WhetherExecute": false,
+                  "MethodName": "UnSubscribe",
+                  "MethodParam": null
+                },
                 {
                   "SN": "[Produce]",
                   "WhetherExecute": false,

+ 36 - 2
src/YSAI.DAQ/YSAI.Core/data/AddressHandler.cs

@@ -126,20 +126,54 @@ namespace YSAI.Core.data
 
         #region 转发库的操作
 
+        /// <summary>
+        /// 订阅
+        /// </summary>
+        /// <param name="Topic">主题</param>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <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;
+        }
+        /// <summary>
+        /// 取消订阅
+        /// </summary>
+        /// <param name="Topic">主题</param>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <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;
+        }
+
         /// <summary>
         /// 生产
         /// </summary>
         /// <param name="Topic">主题</param>
         /// <param name="Content">内容</param>
-        public static OperateResult Produce(string Topic, string Content)
+        /// <param name="ISns">实例唯一标识符集合,空则全部发送</param>
+        /// <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 }) as OperateResult;
+            return reflectionOperate.ExecuteMethod($"{ClassSN}{MethodSN}", new object[] { Topic, Content, ISns }) as OperateResult;
         }
+
         /// <summary>
         /// 程序集唯一标识符集合
         /// </summary>

+ 3 - 3
src/YSAI.DAQ/YSAI.Core/interface/only/IManage.cs

@@ -24,11 +24,11 @@ namespace YSAI.Core.@interface.only
         OperateResult SettingLib(List<IFormFile> FormFiles);
 
         /// <summary>
-        /// 删除文件
+        /// 删除文件
         /// </summary>
-        /// <param name="LibNames">库文件名集合</param>
+        /// <param name="FileNames">文件名集合</param>
         /// <returns>统一出参</returns>
-        OperateResult DeleteLib(List<string> LibNames);
+        OperateResult DeleteFile(List<string> FileNames);
 
         /// <summary>
         /// 设置库配置文件

+ 8 - 7
src/YSAI.DAQ/YSAI.DaqManage/DaqManageOperate.cs

@@ -401,7 +401,7 @@ namespace YSAI.DaqManage
                 }
                 if (!iocState)
                 {
-                    OnEventHandler?.Invoke(this, new EventResult(false, $"{assembly.FullName}程序集中未找到继承{InterfaceFullName}此接口的类"));
+                    OnEventHandler?.Invoke(this, new EventResult(false, $"未找到继承 {InterfaceFullName} 此接口的类"));
                 }
             }
             catch (Exception)
@@ -901,6 +901,7 @@ namespace YSAI.DaqManage
         }
         public OperateResult Write(string AddressName, string Value, DataType DaType, string ISn)
         {
+            Depart("Write");
             ConcurrentDictionary<string, object> pairs = new ConcurrentDictionary<string, object>();
             try
             {
@@ -960,13 +961,13 @@ namespace YSAI.DaqManage
                 return Break("SettingLib", false, ex.Message);
             }
         }
-        public OperateResult DeleteLib(List<string> LibNames)
+        public OperateResult DeleteFile(List<string> FileNames)
         {
-            Depart("DeleteLib");
+            Depart("DeleteFile");
             try
             {
                 List<string> FailMessage = new List<string>();
-                foreach (string LibName in LibNames) 
+                foreach (string LibName in FileNames) 
                 {
                     string path = Path.Combine(basics.LibFolder, LibName);
 
@@ -981,13 +982,13 @@ namespace YSAI.DaqManage
                 }
                 if (FailMessage.Count > 0)
                 {
-                    return Break("DeleteLib", false, $"存在{FailMessage.Count}个失败信息", FailMessage, ResultType.Json);
+                    return Break("DeleteFile", false, $"存在{FailMessage.Count}个失败信息", FailMessage, ResultType.Json);
                 }
-                return Break("DeleteLib", true);
+                return Break("DeleteFile", true);
             }
             catch (Exception ex)
             {
-                return Break("DeleteLib", false, ex.Message);
+                return Break("DeleteFile", false, ex.Message);
             }
         }
         public OperateResult SettingLibConfig(List<IFormFile> FormFiles)

+ 151 - 0
src/YSAI.DAQ/YSAI.Manage/Controllers/DaqOperateController.cs

@@ -0,0 +1,151 @@
+using Microsoft.AspNetCore.Mvc;
+using YSAI.Core.data;
+using YSAI.Core.@enum;
+using YSAI.DaqManage;
+
+namespace YSAI.Manage.Controllers
+{
+    /// <summary>
+    /// 采集库操作
+    /// </summary>
+    [ApiController]
+    [Route("api/[controller]/[action]")]
+    public class DaqOperateController : Controller
+    {
+        /// <summary>
+        /// 统一操作结果
+        /// </summary>
+        private readonly DaqManageOperate daqManageOperate = Program.daqManageOperate;
+
+        /// <summary>
+        /// 批量读取
+        /// </summary>
+        /// <param name="FormFile">地址数据文件</param>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult Reads(IFormFile FormFile, string ISn)
+        {
+            return daqManageOperate.Read(FormFile, ISn);
+        }
+   
+        
+        /// <summary>
+        /// 单点读取
+        /// </summary>
+        /// <param name="AddressName">地址名称</param>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult Read(string AddressName, string ISn)
+        {
+            return daqManageOperate.Read(AddressName, ISn);
+        }
+      
+        
+        /// <summary>
+        /// 单点写入
+        /// </summary>
+        /// <param name="AddressName">地址名称</param>
+        /// <param name="Value">值</param>
+        /// <param name="DaType">数据类型</param>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult Write(string AddressName, string Value, DataType DaType, string ISn)
+        {
+            return daqManageOperate.Write(AddressName, Value, DaType, ISn);
+        }
+
+
+        /// <summary>
+        /// 订阅
+        /// </summary>
+        /// <param name="FormFile">地址数据文件</param>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult Subscribe(IFormFile FormFile, string ISn)
+        {
+            return daqManageOperate.Subscribe(FormFile, ISn);
+        }
+
+
+        /// <summary>
+        /// 取消订阅
+        /// </summary>
+        /// <param name="FormFile">地址数据文件</param>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns></returns>
+        [HttpPost]
+        public OperateResult UnSubscribe(IFormFile FormFile, string ISn)
+        {
+            return daqManageOperate.UnSubscribe(FormFile, ISn);
+        }
+     
+        
+        /// <summary>
+        /// 程序集唯一标识符集合
+        /// </summary>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public List<string>? TypeSns()
+        {
+            return daqManageOperate.TypeSns();
+        }
+
+        /// <summary>
+        /// 实例唯一标识符集合
+        /// </summary>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public List<string>? InstanceSns()
+        {
+            return daqManageOperate.InstanceSns();
+        }
+
+        /// <summary>
+        /// 释放指定实例
+        /// </summary>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult DisposeISn(string ISn)
+        {
+            return daqManageOperate.DisposeISn(ISn);
+        }
+
+        /// <summary>
+        /// 移除指定实例
+        /// </summary>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult Remove(string ISn)
+        {
+            return daqManageOperate.RemoveISn(ISn);
+        }
+
+        /// <summary>
+        /// 打开
+        /// </summary>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult On(string ISn)
+        {
+            return daqManageOperate.On(ISn);
+        }
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult Off(string ISn)
+        {
+            return daqManageOperate.Off(ISn);
+        }
+    }
+}

+ 65 - 0
src/YSAI.DAQ/YSAI.Manage/Controllers/FileOperateController.cs

@@ -0,0 +1,65 @@
+using Microsoft.AspNetCore.Mvc;
+using YSAI.Core.data;
+using YSAI.DaqManage;
+
+namespace YSAI.Manage.Controllers
+{
+    /// <summary>
+    /// 文件操作
+    /// </summary>
+    [ApiController]
+    [Route("api/[controller]/[action]")]
+    public class FileOperateController : Controller
+    {
+        /// <summary>
+        /// 统一操作结果
+        /// </summary>
+        private readonly DaqManageOperate daqManageOperate = Program.daqManageOperate;
+
+
+        /// <summary>
+        /// 设置库文件
+        /// </summary>
+        /// <param name="FormFiles">文件集合</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult SettingLib(List<IFormFile> FormFiles)
+        {
+            return daqManageOperate.SettingLib(FormFiles);
+        }
+
+        /// <summary>
+        /// 删除文件
+        /// </summary>
+        /// <param name="FileNames">文件名集合</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult DeleteFile(List<string> FileNames)
+        {
+            return daqManageOperate.DeleteFile(FileNames);
+        }
+
+        /// <summary>
+        /// 设置库配置文件
+        /// </summary>
+        /// <param name="FormFiles">文件集合</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult SettingLibConfig(List<IFormFile> FormFiles)
+        {
+            return daqManageOperate.SettingLibConfig(FormFiles);
+        }
+
+        /// <summary>
+        /// 修改库配置文件
+        /// </summary>
+        /// <param name="FormFiles">文件集合</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult UpdateLibConfig(List<IFormFile> FormFiles)
+        {
+            return daqManageOperate.UpdateLibConfig(FormFiles);
+        }
+
+    }
+}

+ 90 - 0
src/YSAI.DAQ/YSAI.Manage/Controllers/InfoOperateController.cs

@@ -0,0 +1,90 @@
+using Microsoft.AspNetCore.Mvc;
+using YSAI.Core.@enum;
+using YSAI.Core.data;
+using YSAI.DB;
+using YSAI.Kafka;
+using YSAI.Modbus.client;
+using YSAI.Mqtt.client;
+using YSAI.Opc.da.client;
+using YSAI.Opc.da.http;
+using YSAI.Opc.ua.client;
+using YSAI.RabbitMQ;
+using YSAI.S7.client;
+using YSAI.Unility;
+
+namespace YSAI.Manage.Controllers
+{
+    /// <summary>
+    /// 信息操作
+    /// </summary>
+    [ApiController]
+    [Route("api/[controller]/[action]")]
+    public class InfoOperateController : Controller
+    {
+        /// <summary>
+        /// 参数
+        /// </summary>
+        /// <param name="DType">库类型</param>
+        /// <returns>统一出参</returns>
+        [HttpGet]
+        public object Param(LibType DType)
+        {
+            switch (DType)
+            {
+                case LibType.DB:
+                    return new DBData.Basics();
+                case LibType.Modbus:
+                    return new ModbusClientData.Basics();
+                case LibType.OpcUa:
+                    return new OpcUaClientData.Basics();
+                case LibType.OpcDa:
+                    return new OpcDaClientData.Basics();
+                case LibType.OpcDaHttp:
+                    return new OpcDaHttpData.Basics();
+                case LibType.S7:
+                    return new S7ClientData.Basics();
+                case LibType.Kafka:
+                    return new KafkaData.Basics();
+                case LibType.Mqtt:
+                    return new MqttClientData.Basics();
+                case LibType.RabbitMQ:
+                    return new RabbitMQData.Basics();
+                default:
+                    return new OperateResult(false, "输入有误", 0.1);
+            }
+        }
+
+        /// <summary>
+        /// 参数详情
+        /// </summary>
+        /// <param name="DType">库类型</param>
+        /// <returns>统一出参</returns>
+        [HttpGet]
+        public OperateResult ParamDetails(LibType DType)
+        {
+            switch (DType)
+            {
+                case LibType.DB:
+                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<DBData.Basics>(), RType: ResultType.Json);
+                case LibType.Modbus:
+                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<ModbusClientData.Basics>(), RType: ResultType.Json);
+                case LibType.OpcUa:
+                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<OpcUaClientData.Basics>(), RType: ResultType.Json);
+                case LibType.OpcDa:
+                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<OpcDaClientData.Basics>(), RType: ResultType.Json);
+                case LibType.OpcDaHttp:
+                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<OpcDaHttpData.Basics>(), RType: ResultType.Json);
+                case LibType.S7:
+                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<S7ClientData.Basics>(), RType: ResultType.Json);
+                case LibType.Kafka:
+                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<KafkaData.Basics>(), RType: ResultType.Json);
+                case LibType.Mqtt:
+                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<MqttClientData.Basics>(), RType: ResultType.Json);
+                case LibType.RabbitMQ:
+                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<RabbitMQData.Basics>(), RType: ResultType.Json);
+                default:
+                    return new OperateResult(false, "输入有误", 0.1);
+            }
+        }
+    }
+}

+ 0 - 369
src/YSAI.DAQ/YSAI.Manage/Controllers/OperateController.cs

@@ -1,369 +0,0 @@
-using Google.Protobuf.WellKnownTypes;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.Extensions.Configuration;
-using System.Collections.Concurrent;
-using System.Drawing;
-using System.Text;
-using YSAI.Core.data;
-using YSAI.Core.@enum;
-using YSAI.Core.@interface.only;
-using YSAI.Core.@interface.unify;
-using YSAI.DaqManage;
-using YSAI.DB;
-using YSAI.Kafka;
-using YSAI.Modbus.client;
-using YSAI.Mqtt.client;
-using YSAI.Opc.da.client;
-using YSAI.Opc.da.http;
-using YSAI.Opc.ua.client;
-using YSAI.RabbitMQ;
-using YSAI.RelayManage;
-using YSAI.S7.client;
-using YSAI.Unility;
-using static System.Net.Mime.MediaTypeNames;
-
-namespace YSAI.Manage.Controllers
-{
-    /// <summary>
-    /// 采集库操作
-    /// </summary>
-    [ApiController]
-    [Route("api/[controller]/[action]")]
-    public class OperateController : Controller
-    {
-        /// <summary>
-        /// 统一操作结果
-        /// </summary>
-        private readonly DaqManageOperate daqManageOperate = Program.daqManageOperate;
-
-        /// <summary>
-        /// 参数
-        /// </summary>
-        /// <param name="DType">数采库类型</param>
-        /// <returns>统一出参</returns>
-        [HttpGet]
-        public object Param(LibType DType)
-        {
-            switch (DType)
-            {
-                case LibType.DB:
-                    return new DBData.Basics();
-                case LibType.Modbus:
-                    return new ModbusClientData.Basics();
-                case LibType.OpcUa:
-                    return new OpcUaClientData.Basics();
-                case LibType.OpcDa:
-                    return new OpcDaClientData.Basics();
-                case LibType.OpcDaHttp:
-                    return new OpcDaHttpData.Basics();
-                case LibType.S7:
-                    return new S7ClientData.Basics();
-                case LibType.Kafka:
-                    return new KafkaData.Basics();
-                case LibType.Mqtt:
-                    return new MqttClientData.Basics();
-                case LibType.RabbitMQ:
-                    return new RabbitMQData.Basics();
-                default:
-                    return new OperateResult(false, "输入有误", 0.1);
-            }
-        }
-
-     
-        
-        /// <summary>
-        /// 参数详情
-        /// </summary>
-        /// <param name="DType">数采库类型</param>
-        /// <returns>统一出参</returns>
-        [HttpGet]
-        public OperateResult ParamDetails(LibType DType)
-        {
-            switch (DType)
-            {
-                case LibType.DB:
-                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<DBData.Basics>(), RType: ResultType.Json);
-                case LibType.Modbus:
-                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<ModbusClientData.Basics>(), RType: ResultType.Json);
-                case LibType.OpcUa:
-                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<OpcUaClientData.Basics>(), RType: ResultType.Json);
-                case LibType.OpcDa:
-                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<OpcDaClientData.Basics>(), RType: ResultType.Json);
-                case LibType.OpcDaHttp:
-                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<OpcDaHttpData.Basics>(), RType: ResultType.Json);
-                case LibType.S7:
-                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<S7ClientData.Basics>(), RType: ResultType.Json);
-                case LibType.Kafka:
-                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<KafkaData.Basics>(), RType: ResultType.Json);
-                case LibType.Mqtt:
-                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<MqttClientData.Basics>(), RType: ResultType.Json);
-                case LibType.RabbitMQ:
-                    return new OperateResult(true, string.Empty, 0.1, RData: ReflexTool.GetClassAllPropertyData<RabbitMQData.Basics>(), RType: ResultType.Json);
-                default:
-                    return new OperateResult(false, "输入有误", 0.1);
-            }
-        }
-
-
-
-        /// <summary>
-        /// 设置库文件
-        /// </summary>
-        /// <param name="FormFiles">文件集合</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult SettingLib(List<IFormFile> FormFiles)
-        {
-            return daqManageOperate.SettingLib(FormFiles);
-        }
-        
-
-        /// <summary>
-        /// 删除库文件
-        /// </summary>
-        /// <param name="LibNames">库文件名集合</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult DeleteLib(List<string> LibNames)
-        {
-            return daqManageOperate.DeleteLib(LibNames);
-        }
-    
-        
-        /// <summary>
-        /// 设置库配置文件
-        /// </summary>
-        /// <param name="FormFiles">文件集合</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult SettingLibConfig(List<IFormFile> FormFiles)
-        {
-            return daqManageOperate.SettingLibConfig(FormFiles);
-        }
-
-        /// <summary>
-        /// 修改库配置文件
-        /// </summary>
-        /// <param name="FormFiles">文件集合</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult UpdateLibConfig(List<IFormFile> FormFiles)
-        {
-            return daqManageOperate.UpdateLibConfig(FormFiles);
-        }
-
-
-
-        /// <summary>
-        /// 批量读取
-        /// </summary>
-        /// <param name="FormFile">地址数据文件</param>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult BatchRead(IFormFile FormFile, string ISn)
-        {
-            return daqManageOperate.Read(FormFile, ISn);
-        }
-   
-        
-        /// <summary>
-        /// 单点读取
-        /// </summary>
-        /// <param name="AddressName">地址名称</param>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult Read(string AddressName, string ISn)
-        {
-            return daqManageOperate.Read(AddressName, ISn);
-        }
-      
-        
-        /// <summary>
-        /// 单点写入
-        /// </summary>
-        /// <param name="AddressName">地址名称</param>
-        /// <param name="Value">值</param>
-        /// <param name="DaType">数据类型</param>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult Write(string AddressName, string Value, DataType DaType, string ISn)
-        {
-            return daqManageOperate.Write(AddressName, Value, DaType, ISn);
-        }
-
-
-        /// <summary>
-        /// 订阅
-        /// </summary>
-        /// <param name="FormFile">地址数据文件</param>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult Subscribe(IFormFile FormFile, string ISn)
-        {
-            return daqManageOperate.Subscribe(FormFile, ISn);
-        }
-
-
-        /// <summary>
-        /// 取消订阅
-        /// </summary>
-        /// <param name="FormFile">地址数据文件</param>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns></returns>
-        [HttpPost]
-        public OperateResult UnSubscribe(IFormFile FormFile, string ISn)
-        {
-            return daqManageOperate.UnSubscribe(FormFile, ISn);
-        }
-     
-        
-        /// <summary>
-        /// 程序集唯一标识符集合
-        /// </summary>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public List<string>? TypeSns()
-        {
-            return daqManageOperate.TypeSns();
-        }
-
-        /// <summary>
-        /// 实例唯一标识符集合
-        /// </summary>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public List<string>? InstanceSns()
-        {
-            return daqManageOperate.InstanceSns();
-        }
-
-        /// <summary>
-        /// 释放指定实例
-        /// </summary>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult DisposeISn(string ISn)
-        {
-            return daqManageOperate.DisposeISn(ISn);
-        }
-
-        /// <summary>
-        /// 移除指定实例
-        /// </summary>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult Remove(string ISn)
-        {
-            return daqManageOperate.RemoveISn(ISn);
-        }
-
-        /// <summary>
-        /// 打开
-        /// </summary>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult On(string ISn)
-        {
-            return daqManageOperate.On(ISn);
-        }
-
-        /// <summary>
-        /// 关闭
-        /// </summary>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult Off(string ISn)
-        {
-            return daqManageOperate.Off(ISn);
-        }
-
-
-        //***********************************
-
-
-        /// <summary>
-        /// 打开
-        /// </summary>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult RelayOn(string ISn)
-        {
-            return AddressHandler.On(ISn);
-        }
-
-        /// <summary>
-        /// 关闭
-        /// </summary>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult RelayOff(string ISn)
-        {
-            return AddressHandler.Off(ISn);
-        }
-
-        /// <summary>
-        /// 程序集唯一标识符集合
-        /// </summary>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public List<string>? RelayTypeSns()
-        {
-            return AddressHandler.TypeSns();
-        }
-
-        /// <summary>
-        /// 实例唯一标识符集合
-        /// </summary>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public List<string>? RelayInstanceSns()
-        {
-            return AddressHandler.InstanceSns();
-        }
-
-        /// <summary>
-        /// 释放指定实例
-        /// </summary>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult RelayDisposeISn(string ISn)
-        {
-            return AddressHandler.DisposeISn(ISn);
-        }
-
-        /// <summary>
-        /// 移除指定实例
-        /// </summary>
-        /// <param name="ISn">实例唯一标识符</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult RelayRemove(string ISn)
-        {
-            return AddressHandler.RemoveISn(ISn);
-        }
-
-        /// <summary>
-        /// 数据转发
-        /// </summary>
-        /// <param name="Topic">主题</param>
-        /// <param name="Content">内容</param>
-        /// <returns>统一出参</returns>
-        [HttpPost]
-        public OperateResult Relay(string Topic, string Content)
-        {
-            return AddressHandler.Produce(Topic, Content);
-        }
-    }
-}

+ 90 - 0
src/YSAI.DAQ/YSAI.Manage/Controllers/RelayOperateController.cs

@@ -0,0 +1,90 @@
+using Microsoft.AspNetCore.Mvc;
+using YSAI.Core.data;
+
+namespace YSAI.Manage.Controllers
+{
+    /// <summary>
+    /// 转发库操作
+    /// </summary>
+    [ApiController]
+    [Route("api/[controller]/[action]")]
+    public class RelayOperateController : Controller
+    {
+        /// <summary>
+        /// 打开
+        /// </summary>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult On(string ISn)
+        {
+            return AddressHandler.On(ISn);
+        }
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult Off(string ISn)
+        {
+            return AddressHandler.Off(ISn);
+        }
+
+        /// <summary>
+        /// 程序集唯一标识符集合
+        /// </summary>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public List<string>? TypeSns()
+        {
+            return AddressHandler.TypeSns();
+        }
+
+        /// <summary>
+        /// 实例唯一标识符集合
+        /// </summary>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public List<string>? InstanceSns()
+        {
+            return AddressHandler.InstanceSns();
+        }
+
+        /// <summary>
+        /// 释放指定实例
+        /// </summary>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult DisposeISn(string ISn)
+        {
+            return AddressHandler.DisposeISn(ISn);
+        }
+
+        /// <summary>
+        /// 移除指定实例
+        /// </summary>
+        /// <param name="ISn">实例唯一标识符</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult Remove(string ISn)
+        {
+            return AddressHandler.RemoveISn(ISn);
+        }
+
+        /// <summary>
+        /// 数据转发
+        /// </summary>
+        /// <param name="Topic">主题</param>
+        /// <param name="Content">内容</param>
+        /// <param name="ISns">实例唯一标识符集合,空则全部发送</param>
+        /// <returns>统一出参</returns>
+        [HttpPost]
+        public OperateResult Relay(string Topic, string Content, List<string>? ISns = null)
+        {
+            return AddressHandler.Produce(Topic, Content, ISns);
+        }
+    }
+}

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

@@ -10,7 +10,6 @@ namespace YSAI.Manage
 {
     public class Program
     {
-
         public static DaqManageOperate daqManageOperate;
         static void DaqEvent(object? sender, YSAI.Core.data.EventResult e)
         {

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

@@ -5,6 +5,5 @@
       "Microsoft.AspNetCore": "Warning"
     }
   },
-  "AllowedHosts": "*",
-  "AutoInit": false
+  "AllowedHosts": "*"
 }

+ 9 - 7
src/YSAI.DAQ/YSAI.RelayManage/RelayManageOperate.cs

@@ -437,7 +437,7 @@ namespace YSAI.RelayManage
                 }
                 if (!iocState)
                 {
-                    OnEventHandler?.Invoke(this, new EventResult(false, $"{assembly.FullName}程序集中未找到继承{InterfaceFullName}此接口的类"));
+                    OnEventHandler?.Invoke(this, new EventResult(false, $"未找到继承 {InterfaceFullName} 此接口的类"));
                 }
             }
             catch (Exception)
@@ -729,13 +729,13 @@ namespace YSAI.RelayManage
                 return Break("SettingLib", false, ex.Message);
             }
         }
-        public OperateResult DeleteLib(List<string> LibNames)
+        public OperateResult DeleteFile(List<string> FileNames)
         {
-            Depart("DeleteLib");
+            Depart("DeleteFile");
             try
             {
                 List<string> FailMessage = new List<string>();
-                foreach (string LibName in LibNames)
+                foreach (string LibName in FileNames)
                 {
                     string path = Path.Combine(basics.LibFolder, LibName);
 
@@ -750,13 +750,13 @@ namespace YSAI.RelayManage
                 }
                 if (FailMessage.Count > 0)
                 {
-                    return Break("DeleteLib", false, $"存在{FailMessage.Count}个失败信息", FailMessage, ResultType.Json);
+                    return Break("DeleteFile", false, $"存在{FailMessage.Count}个失败信息", FailMessage, ResultType.Json);
                 }
-                return Break("DeleteLib", true);
+                return Break("DeleteFile", true);
             }
             catch (Exception ex)
             {
-                return Break("DeleteLib", false, ex.Message);
+                return Break("DeleteFile", false, ex.Message);
             }
         }
         public OperateResult SettingLibConfig(List<IFormFile> FormFiles)
@@ -957,6 +957,7 @@ namespace YSAI.RelayManage
                 return Break("Produce", false, ex.Message);
             }
         }
+
         public OperateResult Subscribe(string Topic, string ISn)
         {
             Depart("Subscribe");
@@ -976,6 +977,7 @@ namespace YSAI.RelayManage
                 return Break("Subscribe", false, ex.Message);
             }
         }
+
         public OperateResult UnSubscribe(string Topic, string ISn)
         {
             Depart("UnSubscribe");