using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; using Quartz; using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Communicator; using WIDESEAWCS_Core.Enums; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_QuartzJob.DeviceBase; using WIDESEAWCS_QuartzJob.DeviceEnum; namespace WIDESEAWCS_QuartzJob { public class Storage { public static List Devices = new List(); } public class QuartzJobCommonMethod { public static string GetVueDictionary(string key) { string result = ""; try { switch (key) { case "deviceType": { Type type = typeof(IDevice); var basePath = AppContext.BaseDirectory; string path = Path.Combine(basePath, Assembly.GetExecutingAssembly().GetName().Name); Assembly assembly = Assembly.LoadFrom(path); List types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList(); List data = new List(); foreach (var deviceType in types) { DescriptionAttribute? description = deviceType.GetCustomAttribute(); if (description != null) { data.Add(new { key = deviceType.Name, value = description.Description }); } else { data.Add(new { key = deviceType.Name, value = deviceType.Name }); } } object obj = new { DicNo = key, Config = "", Data = data }; result = obj.Serialize(); } break; case "jobAssembly": { object obj = new { DicNo = key, Config = "", Data = new List() { new { key = "WIDESEAWCS_Tasks", value = "WIDESEAWCS_Tasks" } } }; result = obj.Serialize(); } break; case "jobClassName": { Type type = typeof(IJob); var basePath = AppContext.BaseDirectory; string path = Path.Combine(basePath, $"WIDESEAWCS_Tasks"); Assembly assembly = Assembly.LoadFrom(path); List types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList(); object obj = new { DicNo = key, Config = "", Data = types.Select(x => new { key = x.Name, value = x.Name }), }; result = obj.Serialize(); } break; case "deviceStatus": { List data = new List(); Type type = typeof(DeviceStatusEnum); List enums = Enum.GetValues(typeof(DeviceStatusEnum)).Cast().ToList(); int index = 0; foreach (var item in enums) { FieldInfo? fieldInfo = typeof(DeviceStatusEnum).GetField(((DeviceStatusEnum)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute(); if (description != null) { data.Add(new { key = item.ToString(), value = description.Description }); } else { data.Add(new { key = item.ToString(), value = item.ToString() }); } index++; } object obj = new { DicNo = key, Config = "", Data = data }; result = obj.Serialize(); } break; case "taskType": { List data = new List(); #region TaskInboundTypeEnum { Type type = typeof(TaskInboundTypeEnum); List enums = Enum.GetValues(typeof(TaskInboundTypeEnum)).Cast().ToList(); int index = 0; foreach (var item in enums) { FieldInfo? fieldInfo = typeof(TaskInboundTypeEnum).GetField(((TaskInboundTypeEnum)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute(); if (description != null) { data.Add(new { key = item.ToString(), value = description.Description }); } else { data.Add(new { key = item.ToString(), value = item.ToString() }); } index++; } } #endregion #region TaskOutboundTypeEnum { Type type = typeof(TaskOutboundTypeEnum); List enums = Enum.GetValues(typeof(TaskOutboundTypeEnum)).Cast().ToList(); int index = 0; foreach (var item in enums) { FieldInfo? fieldInfo = typeof(TaskOutboundTypeEnum).GetField(((TaskOutboundTypeEnum)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute(); if (description != null) { data.Add(new { key = item.ToString(), value = description.Description }); } else { data.Add(new { key = item.ToString(), value = item.ToString() }); } index++; } } #endregion #region TaskRelocationTypeEnum { Type type = typeof(TaskRelocationTypeEnum); List enums = Enum.GetValues(typeof(TaskRelocationTypeEnum)).Cast().ToList(); int index = 0; foreach (var item in enums) { FieldInfo? fieldInfo = typeof(TaskRelocationTypeEnum).GetField(((TaskRelocationTypeEnum)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute(); if (description != null) { data.Add(new { key = item.ToString(), value = description.Description }); } else { data.Add(new { key = item.ToString(), value = item.ToString() }); } index++; } } #endregion #region TaskOtherTypeEnum { Type type = typeof(TaskOtherTypeEnum); List enums = Enum.GetValues(typeof(TaskOtherTypeEnum)).Cast().ToList(); int index = 0; foreach (var item in enums) { FieldInfo? fieldInfo = typeof(TaskOtherTypeEnum).GetField(((TaskOtherTypeEnum)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute(); if (description != null) { data.Add(new { key = item.ToString(), value = description.Description }); } else { data.Add(new { key = item.ToString(), value = item.ToString() }); } index++; } } #endregion object obj = new { DicNo = key, Config = "", Data = data }; result = obj.Serialize(); } break; case "taskState": { List data = new List(); #region TaskInStatusEnum { Type type = typeof(TaskInStatusEnum); List enums = Enum.GetValues(typeof(TaskInStatusEnum)).Cast().ToList(); int index = 0; foreach (var item in enums) { FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute(); if (description != null) { data.Add(new { key = item.ToString(), value = description.Description }); } else { data.Add(new { key = item.ToString(), value = item.ToString() }); } index++; } } #endregion #region TaskOutStatusEnum { Type type = typeof(TaskOutStatusEnum); List enums = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast().ToList(); int index = 0; foreach (var item in enums) { FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute(); if (description != null) { data.Add(new { key = item.ToString(), value = description.Description }); } else { data.Add(new { key = item.ToString(), value = item.ToString() }); } index++; } } #endregion object obj = new { DicNo = key, Config = "", Data = data }; result = obj.Serialize(); } break; case "devicePlcType": { Type type = typeof(BaseCommunicator); var basePath = AppContext.BaseDirectory; string path = Path.Combine(basePath, $"WIDESEAWCS_Communicator.dll"); Assembly assembly = Assembly.LoadFrom(path); List types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList(); List data = new List(); foreach (var deviceType in types) { DescriptionAttribute? description = deviceType.GetCustomAttribute(); if (description != null) { data.Add(new { key = deviceType.Name, value = description.Description }); } else { data.Add(new { key = deviceType.Name, value = deviceType.Name }); } } object obj = new { DicNo = key, Config = "", Data = data }; result = JsonConvert.SerializeObject(obj); } break; case "inOutType": { List data = new List(); Type type = typeof(RouterInOutType); List enums = Enum.GetValues(typeof(RouterInOutType)).Cast().ToList(); int index = 0; foreach (var item in enums) { FieldInfo? fieldInfo = typeof(RouterInOutType).GetField(((RouterInOutType)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute(); if (description != null) { data.Add(new { key = item.ToString(), value = description.Description }); } else { data.Add(new { key = item.ToString(), value = item.ToString() }); } index++; } object obj = new { DicNo = key, Config = "", Data = data }; result = obj.Serialize(); } break; } return result; } catch (Exception ex) { return ""; } } } }