枚举映射代码调整
This commit is contained in:
@@ -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<T> where T : Enum
|
||||
{
|
||||
private static string tn = typeof(T).Name;
|
||||
private static ConcurrentDictionary<string, Dictionary<int, string>> enumDescMap = new();
|
||||
private static ConcurrentDictionary<string, FieldInfo[]?> enumMemberMap = new();
|
||||
|
||||
static GenericEnumDicionary()
|
||||
{
|
||||
enumMemberMap.GetOrAdd(tn, f => typeof(T).GetFields(BindingFlags.Public | BindingFlags.Static));
|
||||
if (enumMemberMap[tn]?.All(f => f.GetCustomAttribute<DescriptionAttribute>() != 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<WmsCarryH, CarryQueryOutput>()
|
||||
.Map(dest => dest.qc_status, src => src.is_check == 0 ? "不合格" : "合格");
|
||||
config.ForType<WmsCarryCode, CarryCodeQueryOutput>()
|
||||
.Map(dest => dest.check_conclusion, src => src.check_conclusion.ToEnum<EnumCheckConclusion>().GetDescription());
|
||||
.Map(dest => dest.check_conclusion, src => GenericEnumDicionary<EnumCheckConclusion>.GetEnumDesc(src.check_conclusion));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user