diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/GenericEnumDicionary.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/GenericEnumDicionary.cs new file mode 100644 index 00000000..c8183b00 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/GenericEnumDicionary.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using JNPF.Common.Extension; +using Spire.Pdf.Widget; +using Tnb.WarehouseMgr.Entities.Enums; + +namespace Tnb.WarehouseMgr.Entities.Consts +{ + + public class GenericEnumDicionary where T : Enum + { + private static string tn = typeof(T).Name; + private static ConcurrentDictionary> enumDescMap = new(); + private static ConcurrentDictionary enumMemberMap = new(); + + static GenericEnumDicionary() + { + enumMemberMap.GetOrAdd(tn, f => typeof(T).GetFields(BindingFlags.Public | BindingFlags.Static)); + if (enumMemberMap[tn]?.All(f => f.GetCustomAttribute() != null) ?? false) + { + enumDescMap.GetOrAdd(tn, dic => typeof(T).GetEnumDescDictionary()); + } + } + public static string GetEnumDesc(int enumVal) + { + return enumDescMap.ContainsKey(tn) ? enumDescMap[tn]?[enumVal] ?? string.Empty : string.Empty; + } + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Mapper/Mapper.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Mapper/Mapper.cs index 1deef1ac..832fb911 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Mapper/Mapper.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Mapper/Mapper.cs @@ -6,6 +6,7 @@ using Tnb.WarehouseMgr.Entities.Dto.Outputs; using Tnb.Common; using JNPF.Common.Extension; using Tnb.WarehouseMgr.Entities.Enums; +using Tnb.WarehouseMgr.Entities.Consts; namespace Tnb.WarehouseMgr.Entities.Mapper { @@ -23,7 +24,7 @@ namespace Tnb.WarehouseMgr.Entities.Mapper config.ForType() .Map(dest => dest.qc_status, src => src.is_check == 0 ? "不合格" : "合格"); config.ForType() - .Map(dest => dest.check_conclusion, src => src.check_conclusion.ToEnum().GetDescription()); + .Map(dest => dest.check_conclusion, src => GenericEnumDicionary.GetEnumDesc(src.check_conclusion)); } } } \ No newline at end of file