林豪 左 пре 2 година
родитељ
комит
56234fafe0
2 измењених фајлова са 59 додато и 4 уклоњено
  1. 55 0
      ServiceCenter/Extensions/TypeExtension.cs
  2. 4 4
      WCS.WorkEngineering/Systems/SrmSystems.cs

+ 55 - 0
ServiceCenter/Extensions/TypeExtension.cs

@@ -86,6 +86,61 @@ namespace ServiceCenter.Extensions
             return value.Replace("G", "").ToShort();
         }
 
+        /// <summary>
+        /// 扩展方法,获得枚举的Description
+        /// </summary>
+        /// <param name="value">枚举值</param>
+        /// <param name="nameInstead">当枚举值没有定义DescriptionAttribute,是否使用枚举名代替,默认是使用</param>
+        /// <returns>枚举的Description</returns>
+        public static string GetDescription(this Enum value, Boolean nameInstead = true)
+        {
+            Type type = value.GetType();
+            string name = Enum.GetName(type, value);
+            if (name == null)
+            {
+                return null;
+            }
+
+            FieldInfo field = type.GetField(name);
+            DescriptionAttribute attribute = System.Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
+
+            if (attribute == null && nameInstead == true)
+            {
+                return name;
+            }
+            return attribute?.Description;
+        }
+
+        /// <summary>
+        /// 获取属性的描述信息
+        /// </summary>
+        public static string GetDescription(this Type type, string proName)
+        {
+            PropertyInfo pro = type.GetProperty(proName);
+            string des = proName;
+            if (pro != null)
+            {
+                des = pro.GetDescription();
+            }
+            return des;
+        }
+
+
+
+        /// <summary>
+        /// 获取属性的描述信息
+        /// </summary>
+        public static string GetDescription(this MemberInfo info)
+        {
+            var attrs = (DescriptionAttribute[])info.GetCustomAttributes(typeof(DescriptionAttribute), false);
+            string des = info.Name;
+            foreach (DescriptionAttribute attr in attrs)
+            {
+                des = attr.Description;
+            }
+            return des;
+        }
+
         /// <summary>
         /// 数据映射
         /// </summary>

+ 4 - 4
WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -79,12 +79,12 @@ namespace WCS.WorkEngineering.Systems
                           if (task.Type == TaskType.EmptyInit && task.Status == TaskStatus.ConveyorExecution)
                           {
                               var taskDtl = db.Default.Queryable<WCS_TaskDtl>().Where(v => v.ParentTaskCode == task.ID && v.Desc == "任务下发堆垛机执行").SplitTable(v => v.Take(2)).ToList();
-                              if (!taskDtl.Any()) throw new KnownException($"任务{task.ID}状态是{task.Status.Description()}.堆垛机完成任务需要对应任务状态处于堆垛机执行中", LogLevelEnum.High);
+                              if (!taskDtl.Any()) throw new KnownException($"任务{task.ID}状态是{task.Status.GetDescription()}.堆垛机完成任务需要对应任务状态处于堆垛机执行中", LogLevelEnum.High);
                               World.Log($"堆垛机任务处理:结束--异常完成任务{obj.Data2.TaskFinishiId}异常", LogLevelEnum.Mid);
                           }
                           else
                           {
-                              throw new KnownException($"任务{task.ID}状态是{task.Status.Description()}.堆垛机完成任务需要对应任务状态处于堆垛机执行中", LogLevelEnum.High);
+                              throw new KnownException($"任务{task.ID}状态是{task.Status.GetDescription()}.堆垛机完成任务需要对应任务状态处于堆垛机执行中", LogLevelEnum.High);
                           }
 
                       }
@@ -152,8 +152,8 @@ namespace WCS.WorkEngineering.Systems
 
             //堆垛机是否可以下发任务
             if (obj.Data2.VoucherNo != obj.Data.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{obj.Data.VoucherNo},DB521:{obj.Data2.VoucherNo}", LogLevelEnum.Mid);
-            if (obj.Data2.AutoStatus != SrmAutoStatus.Automatic) throw new KnownException($"堆垛机处于{obj.Data2.AutoStatus}模式", LogLevelEnum.Low);
-            if (obj.Data2.RunStatus != SrmRunStatus.Idle) throw new KnownException($"堆垛机处于{obj.Data2.RunStatus}状态", LogLevelEnum.High);
+            if (obj.Data2.AutoStatus != SrmAutoStatus.Automatic) throw new KnownException($"堆垛机处于{obj.Data2.AutoStatus.GetDescription()}模式", LogLevelEnum.Low);
+            if (obj.Data2.RunStatus != SrmRunStatus.Idle) throw new KnownException($"堆垛机处于{obj.Data2.RunStatus.GetDescription()}状态", LogLevelEnum.High);
 
             //默认没有移库任务
             bool isTransfer = false;