From 37454e625df68d40897112b2e8c2e3cf4d7163e3 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期三, 25 三月 2026 11:43:10 +0800
Subject: [PATCH] 1
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs | 75 ++++++++++++++++++-------------------
1 files changed, 37 insertions(+), 38 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
index aae83ad..09541ce 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
@@ -873,7 +873,10 @@
{
Type type = entity.GetType();
Assembly assembly = type.Assembly;
- Type? htyType = assembly.GetType(type.FullName + "_Hty");
+
+ Type? htyType = assembly.GetTypes().FirstOrDefault(t => !t.IsInterface && !t.IsAbstract && type.IsAssignableFrom(t) && typeof(IBaseHistoryEntity).IsAssignableFrom(t));
+
+ //assembly.GetType(type.FullName + "_Hty");
if (htyType != null)
{
object? obj = Activator.CreateInstance(htyType);
@@ -892,7 +895,7 @@
PropertyInfo propertyInfo = propertyInfos[i];
PropertyInfo? property = type.GetProperty(propertyInfo.Name);
- if (property != null)
+ if (property != null && property.CanWrite)
{
if (propertyInfo.Name == nameof(BaseEntity.Modifier))
{
@@ -905,7 +908,7 @@
}
}
if (obj != null)
- _db.InsertableByObject(obj).AS(type.Name + "_Hty").ExecuteCommand();
+ _db.InsertableByObject(obj).AS(htyType.Name).ExecuteCommand();
}
}
return DeleteData(entity);
@@ -917,52 +920,48 @@
{
Type type = typeof(TEntity);
Assembly assembly = type.Assembly;
- Type? htyType = assembly.GetType(type.FullName + "_Hty");
+
+ Type? htyType = assembly.GetTypes().FirstOrDefault(t => !t.IsInterface && !t.IsAbstract && type.IsAssignableFrom(t) && typeof(IBaseHistoryEntity).IsAssignableFrom(t));
if (htyType != null)
{
- object? obj2 = Activator.CreateInstance(htyType);
- PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
- PropertyInfo? operateTypePro = htyType.GetProperty(nameof(IBaseHistoryEntity.OperateType));
- PropertyInfo? sourceIdPro = htyType.GetProperty(nameof(IBaseHistoryEntity.SourceId));
- if (obj2 != null && keyPro != null && operateTypePro != null && sourceIdPro != null)
+ List<object> list = new List<object>();
+ foreach (var item in entities)
{
- List<PropertyInfo> propertyInfos = htyType.GetProperties().Where(x => x.Name != operateTypePro.Name && x.Name != sourceIdPro.Name && x.Name != keyPro.Name).ToList();
- List<object> list = new List<object>();
- foreach (var item in entities)
+ object? obj = Activator.CreateInstance(htyType);
+ PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+ PropertyInfo? operateTypePro = htyType.GetProperty(nameof(IBaseHistoryEntity.OperateType));
+ PropertyInfo? sourceIdPro = htyType.GetProperty(nameof(IBaseHistoryEntity.SourceId));
+ if (obj != null && keyPro != null && operateTypePro != null && sourceIdPro != null)
{
- object? obj = Activator.CreateInstance(htyType);
- if (obj != null)
- {
- operateTypePro.SetValue(obj, operateType.ToString());
- sourceIdPro.SetValue(obj, keyPro.GetValue(item));
- for (int i = 0; i < propertyInfos.Count; i++)
- {
- PropertyInfo propertyInfo = propertyInfos[i];
- PropertyInfo? property = type.GetProperty(propertyInfo.Name);
+ operateTypePro.SetValue(obj, operateType.ToString());
+ sourceIdPro.SetValue(obj, keyPro.GetValue(item));
- if (property != null)
+ List<PropertyInfo> propertyInfos = htyType.GetProperties().Where(x => x.Name != operateTypePro.Name && x.Name != sourceIdPro.Name && x.Name != keyPro.Name).ToList();
+
+ for (int i = 0; i < propertyInfos.Count; i++)
+ {
+ PropertyInfo propertyInfo = propertyInfos[i];
+ PropertyInfo? property = type.GetProperty(propertyInfo.Name);
+
+ if (property != null && property.CanWrite)
+ {
+ if (propertyInfo.Name == nameof(BaseEntity.Modifier))
{
- if (propertyInfo.Name == nameof(BaseEntity.Modifier))
- {
- propertyInfo.SetValue(obj, App.User.UserId > 0 ? App.User.UserName : "System");
- }
- else if (propertyInfo.Name == nameof(BaseEntity.ModifyDate))
- {
- propertyInfo.SetValue(obj, DateTime.Now);
- }
- else
- {
- propertyInfo.SetValue(obj, property.GetValue(item));
- }
+ propertyInfo.SetValue(obj, App.User.UserId > 0 ? App.User.UserName : "System");
+ }
+ else
+ {
+ propertyInfo.SetValue(obj, property.GetValue(item));
}
}
- list.Add(obj);
}
- }
- if (list.Count > 0)
- _db.InsertableByObject(list).AS(type.Name + "_Hty").ExecuteCommand();
+ list.Add(obj);
+ }
}
+
+ if (list != null && list.Any())
+ _db.InsertableByObject(list).AS(htyType.Name).ExecuteCommand();
}
return DeleteData(entities);
}
--
Gitblit v1.9.3