hutongqing
2024-10-15 0d07b90fd906e52ce486484aa53a6850983b1325
WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Storage.cs
@@ -22,269 +22,4 @@
    {
        public static List<IDevice> Devices = new List<IDevice>();
    }
    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, $"WIDESEAWCS_QuartzJob.dll");
                            Assembly assembly = Assembly.LoadFrom(path);
                            List<Type> types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList();
                            List<object> data = new List<object>();
                            foreach (var deviceType in types)
                            {
                                DescriptionAttribute? description = deviceType.GetCustomAttribute<DescriptionAttribute>();
                                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<object>() { 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<Type> 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<object> data = new List<object>();
                            Type type = typeof(DeviceStatusEnum);
                            List<int> enums = Enum.GetValues(typeof(DeviceStatusEnum)).Cast<int>().ToList();
                            int index = 0;
                            foreach (var item in enums)
                            {
                                FieldInfo? fieldInfo = typeof(DeviceStatusEnum).GetField(((DeviceStatusEnum)item).ToString());
                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                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<object> data = new List<object>();
                            #region TaskInboundTypeEnum
                            {
                                Type type = typeof(TaskInboundTypeEnum);
                                List<int> enums = Enum.GetValues(typeof(TaskInboundTypeEnum)).Cast<int>().ToList();
                                int index = 0;
                                foreach (var item in enums)
                                {
                                    FieldInfo? fieldInfo = typeof(TaskInboundTypeEnum).GetField(((TaskInboundTypeEnum)item).ToString());
                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                    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<int> enums = Enum.GetValues(typeof(TaskOutboundTypeEnum)).Cast<int>().ToList();
                                int index = 0;
                                foreach (var item in enums)
                                {
                                    FieldInfo? fieldInfo = typeof(TaskOutboundTypeEnum).GetField(((TaskOutboundTypeEnum)item).ToString());
                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                    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<int> enums = Enum.GetValues(typeof(TaskRelocationTypeEnum)).Cast<int>().ToList();
                                int index = 0;
                                foreach (var item in enums)
                                {
                                    FieldInfo? fieldInfo = typeof(TaskRelocationTypeEnum).GetField(((TaskRelocationTypeEnum)item).ToString());
                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                    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<int> enums = Enum.GetValues(typeof(TaskOtherTypeEnum)).Cast<int>().ToList();
                                int index = 0;
                                foreach (var item in enums)
                                {
                                    FieldInfo? fieldInfo = typeof(TaskOtherTypeEnum).GetField(((TaskOtherTypeEnum)item).ToString());
                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                    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<object> data = new List<object>();
                            #region TaskInStatusEnum
                            {
                                Type type = typeof(TaskInStatusEnum);
                                List<int> enums = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().ToList();
                                int index = 0;
                                foreach (var item in enums)
                                {
                                    FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString());
                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                    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<int> enums = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().ToList();
                                int index = 0;
                                foreach (var item in enums)
                                {
                                    FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString());
                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                    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<Type> types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList();
                            List<object> data = new List<object>();
                            foreach (var deviceType in types)
                            {
                                DescriptionAttribute? description = deviceType.GetCustomAttribute<DescriptionAttribute>();
                                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;
                }
                return result;
            }
            catch (Exception ex)
            {
                return "";
            }
        }
    }
}