Shun 2 år sedan
förälder
incheckning
ad11afa58b
29 ändrade filer med 146 tillägg och 48 borttagningar
  1. 65 19
      src/YSAI.DAQ/YSAI.DaqManage/DaqManageOperate.cs
  2. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Can.Pack.zip
  3. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Can.Pack/YSAI.Can.dll
  4. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Can.Pack/YSAI.Can.pdb
  5. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Can.Pack/YSAI.Core.dll
  6. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.DB.Pack/YSAI.Core.dll
  7. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.DB.Pack/YSAI.DB.dll
  8. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.DB.Pack/YSAI.DB.pdb
  9. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Kafka.Pack/YSAI.Core.dll
  10. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Kafka.Pack/YSAI.Kafka.dll
  11. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Kafka.Pack/YSAI.Kafka.pdb
  12. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Modbus.Pack/YSAI.Core.dll
  13. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Modbus.Pack/YSAI.Modbus.dll
  14. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Modbus.Pack/YSAI.Modbus.pdb
  15. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Mqtt.Pack/YSAI.Core.dll
  16. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Mqtt.Pack/YSAI.Mqtt.dll
  17. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Mqtt.Pack/YSAI.Mqtt.pdb
  18. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Opc.Pack/YSAI.Core.dll
  19. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Opc.Pack/YSAI.Opc.dll
  20. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.Opc.Pack/YSAI.Opc.pdb
  21. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.RabbitMQ.Pack/YSAI.Core.dll
  22. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.RabbitMQ.Pack/YSAI.RabbitMQ.dll
  23. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.RabbitMQ.Pack/YSAI.RabbitMQ.pdb
  24. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.S7.Pack/YSAI.Core.dll
  25. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.S7.Pack/YSAI.S7.dll
  26. BIN
      src/YSAI.DAQ/YSAI.Lib/YSAI.S7.Pack/YSAI.S7.pdb
  27. 7 7
      src/YSAI.DAQ/YSAI.Manage/Controllers/FileOperateController.cs
  28. 68 19
      src/YSAI.DAQ/YSAI.RelayManage/RelayManageOperate.cs
  29. 6 3
      src/YSAI.DAQ/YSAI.Test.Console/Program.cs

+ 65 - 19
src/YSAI.DAQ/YSAI.DaqManage/DaqManageOperate.cs

@@ -9,6 +9,7 @@ using static YSAI.DaqManage.DaqManageData;
 using YSAI.Core.@enum;
 using Microsoft.Extensions.FileSystemGlobbing;
 using System.IO;
+using System.IO.Compression;
 
 namespace YSAI.DaqManage
 {
@@ -693,7 +694,7 @@ namespace YSAI.DaqManage
         /// </summary>
         /// <param name="file">文件</param>
         /// <param name="path">路径</param>
-        private static void WriteFile(IFormFile file, string path)
+        private void WriteFile(IFormFile file, string path)
         {
             var stream = file.OpenReadStream();
 
@@ -1131,25 +1132,39 @@ namespace YSAI.DaqManage
             return Write(pairs, ISn);
         }
         /// <summary>
-        /// 设置库文件ZIP
+        /// 设置库文件压缩包
         /// </summary>
-        /// <param name="FormFiles">文件集合</param>
+        /// <param name="FormFiles">压缩包集合</param>
         /// <returns>统一出参</returns>
         public OperateResult SettingLibZip(List<IFormFile> FormFiles)
         {
-            Depart("SettingLib");
+            Depart("SettingLibZip");
             try
             {
                 List<string> FailMessage=new List<string>();
                 FormFiles.ForEach(file =>
                 {
-                    var LibName = file.FileName;
+                    string LibName = file.FileName;
 
                     string path = Path.Combine(basics.LibFolder, LibName);
 
+                    string typePath = Path.Combine(basics.LibFolder, LibName.Split('.')[LibName.Split('.').Length - 2]);
+
                     if (!System.IO.File.Exists(path))
                     {
-                        WriteFile(file, path);
+                        if (!System.IO.Directory.Exists(typePath))
+                        {
+                            //写入文件
+                            WriteFile(file, path);
+                            //解压压缩包
+                            ZipFile.ExtractToDirectory(path, basics.LibFolder);
+                            //删除压缩包
+                            File.Delete(path);
+                        }
+                        else
+                        {
+                            FailMessage.Add($"{LibName} 已存在");
+                        }
                     }
                     else
                     {
@@ -1158,33 +1173,64 @@ namespace YSAI.DaqManage
                 });
                 if (FailMessage.Count > 0)
                 {
-                    return Break("SettingLib", false, $"存在 {FailMessage.Count} 个失败信息",FailMessage,ResultType.Json);
+                    return Break("SettingLibZip", false, $"存在 {FailMessage.Count} 个失败信息",FailMessage,ResultType.Json);
                 }
-                return Break("SettingLib", true);
+                return Break("SettingLibZip", true);
             }
             catch (Exception ex)
             {
-                return Break("SettingLib", false, ex.Message, Exc: ex);
+                return Break("SettingLibZip", false, ex.Message, Exc: ex);
             }
         }
         /// <summary>
-        /// 删除文件
+        /// 删除文件夹(会自动释放此库的所有实例与程序集)
         /// </summary>
-        /// <param name="FileNames">文件名集合</param>
+        /// <param name="FileNames">文件名集合</param>
         /// <returns>统一出参</returns>
-        public OperateResult DeleteFile(List<string> FileNames)
+        public OperateResult DeleteLibFolder(List<string> FileNames)
         {
-            Depart("DeleteFile");
+            Depart("DeleteLibFolder");
             try
             {
                 List<string> FailMessage = new List<string>();
-                foreach (string LibName in FileNames) 
+                foreach (string LibName in FileNames)
                 {
                     string path = Path.Combine(basics.LibFolder, LibName);
 
-                    if (System.IO.File.Exists(path))
+                    if (System.IO.Directory.Exists(path))
                     {
-                        System.IO.File.Delete(path);
+                        List<string> IArray = new List<string>();
+                        List<string> TArray = new List<string>();
+                        foreach (var item in InstanceIoc)
+                        {
+                            if (item.Key.Contains(LibName.Replace(".Pack",string.Empty)))
+                            {
+                                IArray.Add(item.Key);
+                            }
+                        }
+                        foreach (var item in TypeIoc)
+                        {
+                            if (item.Key.Contains(LibName.Replace(".Pack", string.Empty)))
+                            {
+                                TArray.Add(item.Key);
+                            }
+                        }
+                        if (IArray.Count.Equals(0) && TArray.Count.Equals(0))
+                        {
+                            System.IO.Directory.Delete(path);
+                        }
+                        else
+                        {
+                            foreach (var item in IArray)
+                            {
+                                DisposeISn(item);
+                            }
+                            foreach (var item in TArray)
+                            {
+                                TypeIoc.Remove(item, out _);
+                            }
+                            System.IO.Directory.Delete(path);
+                        }
                     }
                     else
                     {
@@ -1193,13 +1239,13 @@ namespace YSAI.DaqManage
                 }
                 if (FailMessage.Count > 0)
                 {
-                    return Break("DeleteFile", false, $"存在{FailMessage.Count}个失败信息", FailMessage, ResultType.Json);
+                    return Break("DeleteLibFolder", false, $"存在{FailMessage.Count}个失败信息", FailMessage, ResultType.Json);
                 }
-                return Break("DeleteFile", true);
+                return Break("DeleteLibFolder", true);
             }
             catch (Exception ex)
             {
-                return Break("DeleteFile", false, ex.Message, Exc: ex);
+                return Break("DeleteLibFolder", false, ex.Message, Exc: ex);
             }
         }
         /// <summary>

BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Can.Pack.zip


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Can.Pack/YSAI.Can.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Can.Pack/YSAI.Can.pdb


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Can.Pack/YSAI.Core.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.DB.Pack/YSAI.Core.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.DB.Pack/YSAI.DB.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.DB.Pack/YSAI.DB.pdb


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Kafka.Pack/YSAI.Core.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Kafka.Pack/YSAI.Kafka.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Kafka.Pack/YSAI.Kafka.pdb


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Modbus.Pack/YSAI.Core.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Modbus.Pack/YSAI.Modbus.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Modbus.Pack/YSAI.Modbus.pdb


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Mqtt.Pack/YSAI.Core.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Mqtt.Pack/YSAI.Mqtt.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Mqtt.Pack/YSAI.Mqtt.pdb


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Opc.Pack/YSAI.Core.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Opc.Pack/YSAI.Opc.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.Opc.Pack/YSAI.Opc.pdb


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.RabbitMQ.Pack/YSAI.Core.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.RabbitMQ.Pack/YSAI.RabbitMQ.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.RabbitMQ.Pack/YSAI.RabbitMQ.pdb


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.S7.Pack/YSAI.Core.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.S7.Pack/YSAI.S7.dll


BIN
src/YSAI.DAQ/YSAI.Lib/YSAI.S7.Pack/YSAI.S7.pdb


+ 7 - 7
src/YSAI.DAQ/YSAI.Manage/Controllers/FileOperateController.cs

@@ -19,25 +19,25 @@ namespace YSAI.Manage.Controllers
 
 
         /// <summary>
-        /// 设置库文件
+        /// 设置库文件压缩包
         /// </summary>
-        /// <param name="FormFiles">文件集合</param>
+        /// <param name="FormFiles">压缩包集合</param>
         /// <returns>统一出参</returns>
         [HttpPost]
-        public OperateResult SettingLib(List<IFormFile> FormFiles)
+        public OperateResult SettingLibZip(List<IFormFile> FormFiles)
         {
             return daqManageOperate.SettingLibZip(FormFiles);
         }
 
         /// <summary>
-        /// 删除文件
+        /// 删除文件夹(会自动释放此库的所有实例与程序集)
         /// </summary>
-        /// <param name="FileNames">文件名集合</param>
+        /// <param name="FileNames">文件名集合</param>
         /// <returns>统一出参</returns>
         [HttpPost]
-        public OperateResult DeleteFile(List<string> FileNames)
+        public OperateResult DeleteLibFolder(List<string> FileNames)
         {
-            return daqManageOperate.DeleteFile(FileNames);
+            return daqManageOperate.DeleteLibFolder(FileNames);
         }
 
         /// <summary>

+ 68 - 19
src/YSAI.DAQ/YSAI.RelayManage/RelayManageOperate.cs

@@ -3,7 +3,9 @@ using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Concurrent;
 using System.Collections.Generic;
+using System.IO.Compression;
 using System.Linq;
+using System.Net.Mail;
 using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
@@ -763,7 +765,7 @@ namespace YSAI.RelayManage
         /// </summary>
         /// <param name="file">文件</param>
         /// <param name="path">路径</param>
-        private static void WriteFile(IFormFile file, string path)
+        private void WriteFile(IFormFile file, string path)
         {
             var stream = file.OpenReadStream();
 
@@ -804,25 +806,39 @@ namespace YSAI.RelayManage
             ThisObjList = null;
         }
         /// <summary>
-        /// 设置库文件
+        /// 设置库文件压缩包
         /// </summary>
-        /// <param name="FormFiles">文件集合</param>
+        /// <param name="FormFiles">压缩包集合</param>
         /// <returns>统一出参</returns>
-        public OperateResult SettingLib(List<IFormFile> FormFiles)
+        public OperateResult SettingLibZip(List<IFormFile> FormFiles)
         {
-            Depart("SettingLib");
+            Depart("SettingLibZip");
             try
             {
                 List<string> FailMessage = new List<string>();
                 FormFiles.ForEach(file =>
                 {
-                    var LibName = file.FileName;
+                    string LibName = file.FileName;
 
                     string path = Path.Combine(basics.LibFolder, LibName);
 
+                    string typePath = Path.Combine(basics.LibFolder, LibName.Split('.')[LibName.Split('.').Length - 2]);
+
                     if (!System.IO.File.Exists(path))
                     {
-                        WriteFile(file, path);
+                        if (!System.IO.Directory.Exists(typePath))
+                        {
+                            //写入文件
+                            WriteFile(file, path);
+                            //解压压缩包
+                            ZipFile.ExtractToDirectory(path, basics.LibFolder);
+                            //删除压缩包
+                            File.Delete(path);
+                        }
+                        else
+                        {
+                            FailMessage.Add($"{LibName} 已存在");
+                        }
                     }
                     else
                     {
@@ -831,23 +847,23 @@ namespace YSAI.RelayManage
                 });
                 if (FailMessage.Count > 0)
                 {
-                    return Break("SettingLib", false, $"存在{FailMessage.Count}个失败信息", FailMessage, ResultType.Json);
+                    return Break("SettingLibZip", false, $"存在 {FailMessage.Count} 个失败信息", FailMessage, ResultType.Json);
                 }
-                return Break("SettingLib", true);
+                return Break("SettingLibZip", true);
             }
             catch (Exception ex)
             {
-                return Break("SettingLib", false, ex.Message, Exc: ex);
+                return Break("SettingLibZip", false, ex.Message, Exc: ex);
             }
         }
         /// <summary>
-        /// 删除文件
+        /// 删除文件夹(会自动释放此库的所有实例与程序集)
         /// </summary>
-        /// <param name="FileNames">文件名集合</param>
+        /// <param name="FileNames">文件名集合</param>
         /// <returns>统一出参</returns>
-        public OperateResult DeleteFile(List<string> FileNames)
+        public OperateResult DeleteLibFolder(List<string> FileNames)
         {
-            Depart("DeleteFile");
+            Depart("DeleteLibFolder");
             try
             {
                 List<string> FailMessage = new List<string>();
@@ -855,9 +871,40 @@ namespace YSAI.RelayManage
                 {
                     string path = Path.Combine(basics.LibFolder, LibName);
 
-                    if (System.IO.File.Exists(path))
+                    if (System.IO.Directory.Exists(path))
                     {
-                        System.IO.File.Delete(path);
+                        List<string> IArray = new List<string>();
+                        List<string> TArray = new List<string>();
+                        foreach (var item in InstanceIoc)
+                        {
+                            if (item.Key.Contains(LibName.Replace(".Pack", string.Empty)))
+                            {
+                                IArray.Add(item.Key);
+                            }
+                        }
+                        foreach (var item in TypeIoc)
+                        {
+                            if (item.Key.Contains(LibName.Replace(".Pack", string.Empty)))
+                            {
+                                TArray.Add(item.Key);
+                            }
+                        }
+                        if (IArray.Count.Equals(0) && TArray.Count.Equals(0))
+                        {
+                            System.IO.Directory.Delete(path);
+                        }
+                        else
+                        {
+                            foreach (var item in IArray)
+                            {
+                                DisposeISn(item);
+                            }
+                            foreach (var item in TArray)
+                            {
+                                TypeIoc.Remove(item, out _);
+                            }
+                            System.IO.Directory.Delete(path);
+                        }
                     }
                     else
                     {
@@ -866,15 +913,16 @@ namespace YSAI.RelayManage
                 }
                 if (FailMessage.Count > 0)
                 {
-                    return Break("DeleteFile", false, $"存在{FailMessage.Count}个失败信息", FailMessage, ResultType.Json);
+                    return Break("DeleteLibFolder", false, $"存在{FailMessage.Count}个失败信息", FailMessage, ResultType.Json);
                 }
-                return Break("DeleteFile", true);
+                return Break("DeleteLibFolder", true);
             }
             catch (Exception ex)
             {
-                return Break("DeleteFile", false, ex.Message, Exc: ex);
+                return Break("DeleteLibFolder", false, ex.Message, Exc: ex);
             }
         }
+        
         /// <summary>
         /// 设置库配置文件
         /// </summary>
@@ -975,6 +1023,7 @@ namespace YSAI.RelayManage
             }
         }
 
+       
         /// <summary>
         /// 程序集唯一标识符集合
         /// </summary>

+ 6 - 3
src/YSAI.DAQ/YSAI.Test.Console/Program.cs

@@ -26,9 +26,12 @@ using YSAI.Unility;
 using ZstdSharp.Unsafe;
 using static YSAI.Modbus.client.ModbusClientData;
 
+//创建一个应用程序域
+AppDomain domain = AppDomain.CreateDomain("YSAI.Can");
+//
+domain.
 
-
-Console.WriteLine(Guid.NewGuid().ToString().Replace("-", string.Empty).Trim().ToUpper());
+//Console.WriteLine(Guid.NewGuid().ToString().Replace("-", string.Empty).Trim().ToUpper());
 
 //
 //OpcUaClientOperate opcUaClientOperate = OpcUaClientOperate.Instance(new OpcUaClientData.Basics
@@ -128,7 +131,7 @@ Console.WriteLine(Guid.NewGuid().ToString().Replace("-", string.Empty).Trim().To
 //        //keyValues.Add(deviceType.ToString(), jsonD.ToJson());
 //        //even?.Invoke(this, new EventParam() { Message = "非标TCP数据解析完成", State = true, Params = keyValues, DeviceType = deviceType });
 //    }
-  
+
 
 
 //}