z8018
2026-01-08 1bf2ea761ca55bddde7c88b1341c873d50b2f0f3
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs
@@ -920,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);
        }