From 9eeca6aa905cffea1c95d965b4790fbd20ce2275 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期五, 25 十月 2024 16:19:16 +0800
Subject: [PATCH] 更新字典数据获取
---
WIDESEAWCS_Server/WIDESEAWCS_Core/Utilities/EntityProperties.cs | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 101 insertions(+), 5 deletions(-)
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Core/Utilities/EntityProperties.cs b/WIDESEAWCS_Server/WIDESEAWCS_Core/Utilities/EntityProperties.cs
index c2e4b8a..dec0451 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Core/Utilities/EntityProperties.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Core/Utilities/EntityProperties.cs
@@ -1,5 +1,6 @@
锘縰sing SqlSugar;
using System;
+using System.Collections;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
@@ -28,7 +29,7 @@
if (propertyInfo != null)
{
sugarColumn = propertyInfo.GetCustomAttribute<SugarColumn>();
- dbType = propertyInfo != null ? propertyInfo.GetProperWithDbType() : SqlDbTypeName.NVarChar;
+ dbType = propertyInfo.PropertyType != null ? propertyInfo.GetProperWithDbType() : SqlDbTypeName.NVarChar;
}
dbType = dbType.ToLower();
string val = value?.ToString();
@@ -106,6 +107,16 @@
return (reslutMsg == "" ? true : false, reslutMsg, value);
}
+ public static List<(bool, string, object)> ValidationValueForDbType(this PropertyInfo propertyInfo, params object[] values)
+ {
+ List<(bool, string, object)> result = new List<(bool, string, object)>();
+ foreach (object value in values)
+ {
+ result.Add(propertyInfo.ValidationVal(value));
+ }
+ return result;
+ }
+
private static readonly Dictionary<Type, string> ProperWithDbType = new Dictionary<Type, string>() {
{ typeof(string),SqlDbTypeName.NVarChar },
{ typeof(DateTime),SqlDbTypeName.DateTime},
@@ -117,6 +128,7 @@
{ typeof(byte),SqlDbTypeName.Int },//绫诲瀷寰呭畬
{ typeof(Guid),SqlDbTypeName.UniqueIdentifier}
};
+
public static string GetProperWithDbType(this PropertyInfo propertyInfo)
{
bool result = ProperWithDbType.TryGetValue(propertyInfo.PropertyType, out string value);
@@ -175,12 +187,29 @@
}
continue;
}
- string str = dic[property.Name.FirstLetterToLower()].ToString();
- //灏嗘墍鏈夌┖鍊艰缃负null
- if (dic[property.Name.FirstLetterToLower()] != null && str == string.Empty)
- dic[property.Name.FirstLetterToLower()] = null;
+ if(dic[property.Name.FirstLetterToLower()] != null)
+ {
+ string str = dic[property.Name.FirstLetterToLower()].ToString();
+ //灏嗘墍鏈夌┖鍊艰缃负null
+ if (str == string.Empty)
+ dic[property.Name.FirstLetterToLower()] = null;
+ }
+
}
return string.Empty;
+ }
+
+ public static string ValidateDicInEntity(this Type typeinfo, List<Dictionary<string, object>> dicList, bool removerKey, string[] ignoreFields = null)
+ {
+ PropertyInfo[] propertyInfo = typeinfo.GetProperties();
+ string reslutMsg = string.Empty;
+ foreach (Dictionary<string, object> dic in dicList)
+ {
+ reslutMsg = typeinfo.ValidateDicInEntity(dic, removerKey, propertyInfo, ignoreFields);
+ if (!string.IsNullOrEmpty(reslutMsg))
+ return reslutMsg;
+ }
+ return reslutMsg;
}
public static string GetKeyName(this Type typeinfo)
@@ -212,5 +241,72 @@
}
return null;
}
+
+ public static Type GetDetailType(this Type typeinfo)
+ {
+ PropertyInfo[] properties = typeinfo.GetProperties();
+ foreach (PropertyInfo property in properties)
+ {
+ Navigate? navigate = property.GetCustomAttribute<Navigate>();
+ if (navigate is not null)
+ {
+ if (navigate.GetNavigateType() == NavigateType.OneToOne)
+ return property.PropertyType;
+ else
+ return property.PropertyType.GenericTypeArguments[0];
+ }
+ }
+ return null;
+ }
+
+ public static string GetMainIdByDetail(this Type typeinfo)
+ {
+ PropertyInfo[] properties = typeinfo.GetProperties();
+ foreach (PropertyInfo property in properties)
+ {
+ Navigate? navigate = property.GetCustomAttribute<Navigate>();
+ if (navigate is not null)
+ {
+ return navigate.GetName();
+ }
+ }
+ return null;
+ }
+
+ public static void SetDetailId<T>(this Type typeinfo, T enetiy, object id, string name)
+ {
+ PropertyInfo property = typeinfo.GetProperty(name);
+ if (property != null)
+ {
+ property.SetValue(enetiy, id);
+ }
+ }
+
+ public static PropertyInfo? GetNavigatePro(this Type typeinfo)
+ {
+ PropertyInfo[] properties = typeinfo.GetProperties();
+ foreach (PropertyInfo property in properties)
+ {
+ Navigate? navigate = property.GetCustomAttribute<Navigate>();
+ if (navigate is not null)
+ {
+ return property;
+ }
+ }
+ return null;
+ }
+
+ public static object GetPropertyValue<T>(this Type typeinfo, T data, string propertyName)
+ {
+ if (typeinfo != typeof(T))
+ return null;
+
+ PropertyInfo? property = typeinfo.GetProperty(propertyName);
+ if (property != null)
+ {
+ return property.GetValue(data);
+ }
+ return null;
+ }
}
}
--
Gitblit v1.9.3