From c80e57a4e819d5c6a7db94b7f8b305d038c2b456 Mon Sep 17 00:00:00 2001
From: Diego <2248356998@qq.com>
Date: Wed, 25 Jun 2025 11:17:04 +0800
Subject: [PATCH] build: 10.8.24
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
fix: 变量离线后再次上线,如果值不变,会导致在线状态不刷新
fix: s7离线恢复时,可能触发多次协议握手导致异常
---
LICENSE | 2 +-
.../Common/DisposeBase.cs | 5 --
.../Configuration/Config.cs | 2 -
.../Extension/ProcessHelper.cs | 6 --
.../Extension/StringHelper.cs | 41 ----------
.../Reflection/IIndexAccessor.cs | 15 ----
.../Reflection/Reflect.cs | 7 +-
.../ThingsGateway.NewLife.X/Xml/XmlConfig.cs | 1 -
.../Extensions/GenericExtensions.cs | 2 -
.../CodeFirstProvider/CodeFirstProvider.cs | 6 +-
.../DeleteProvider/DeleteableProvider.cs | 4 +-
.../Sugar/Abstract/DynamicBuilder/Helper.cs | 4 +-
.../EntityMaintenance/EntityMaintenance.cs | 2 +-
.../InsertableProvider/InsertableHelper.cs | 8 +-
.../InsertableProvider/SubInserable.cs | 11 +--
.../QueryableProvider/MappingFieldsHelper.cs | 8 +-
.../QueryableProvider/QueryableExecuteSql.cs | 42 +++++-----
.../QueryableExecuteSqlAsync.cs | 42 +++++-----
.../QueryableProvider/QueryableHelper.cs | 76 +++++++++----------
.../QueryableProvider/QueryableProvider.cs | 28 +++----
.../QueryableProvider02-05.cs | 8 +-
.../SqlBuilderProvider/DeleteBuilder.cs | 4 +-
.../SqlBuilderProvider/QueryBuilder.cs | 6 +-
.../SugarProvider/SqlSugarProvider.cs | 18 +----
.../UpdateProvider/UpdateableProvider.cs | 28 +++----
.../Sugar/Entities/EntityInfo.cs | 2 +-
.../Entities/Mapping/SugarMappingAttribute.cs | 4 +-
.../ExpressionsToSql/Common/ExpressionTool.cs | 4 +-
.../ExpressionsToSql/DbMethods/SqlFunc.cs | 22 +++---
.../ResolveItems/MapperExpressionResolve.cs | 6 +-
.../ResolveItems/MemberNoExpressionResolve.cs | 2 +-
.../ResolveItems/NewArrayExpessionResolve.cs | 2 +-
.../Sugar/Interface/IQueryable.cs | 16 ++--
.../Sugar/Interface/ISqlSugarClient.cs | 5 --
.../Sugar/Interface/ISubInsertable.cs | 2 -
.../Sugar/Interface/IUpdateable.cs | 10 +--
.../Json2Sql/JsonModels/SelectFieldModel.cs | 3 -
.../Json2Sql/ModelToSql/SelectModelToSql.cs | 4 +-
.../Sugar/Json2Sql/ModelToSql/SqlPart.cs | 2 +-
.../Provider/Queryable/AppendSelect.cs | 10 +--
.../Realization/Dm/CodeFirst/DmCodeFirst.cs | 2 +-
.../Dm/DbMaintenance/DmDbMaintenance.cs | 4 +-
.../Realization/Dm/Queryable/DmQueryable.cs | 4 +-
.../Kdbndp/CodeFirst/KdbndpCodeFirst.cs | 2 +-
.../Kdbndp/Queryable/KdbndpQueryable.cs | 2 +-
.../MySql/CodeFirst/MySqlCodeFirst.cs | 2 +-
.../MySql/Queryable/MySqlQueryable.cs | 4 +-
.../DbMaintenance/OracleDbMaintenance.cs | 4 +-
.../Oscar/CodeFirst/OscarCodeFirst.cs | 2 +-
.../Oscar/Queryable/OscarQueryable.cs | 4 +-
.../CodeFirst/PostgreSQLCodeFirst.cs | 2 +-
.../Queryable/PostgreSqlQueryable.cs | 4 +-
.../QuestDB/CodeFirst/QuestDBCodeFirst.cs | 2 +-
.../QuestDB/Queryable/QuestDBQueryable.cs | 4 +-
.../Sqlite/CodeFirst/SqliteCodeFirst.cs | 2 +-
.../Sqlite/Queryable/SqliteQueryable.cs | 4 +-
.../Sugar/SqlSugarClient.cs | 10 ---
.../Sugar/SqlSugarScope.cs | 11 ---
.../Sugar/Utilities/UtilMethods.cs | 5 --
.../Queryable/TDengineSqlQueryable.cs | 4 +-
src/Directory.Build.props | 4 +-
.../Device/DeviceBase.cs | 31 +++++++-
.../Device/DeviceExtension.cs | 2 +-
.../Device/IDevice.cs | 4 +-
.../ThingsGateway.Foundation.csproj | 4 +-
.../Variable/IVariable.cs | 1 +
.../Variable/VariableClass.cs | 3 +
.../Driver/Collect/CollectFoundationBase.cs | 23 +++++-
.../Model/DeviceRunTime.cs | 6 ++
.../Model/VariableRunTime.cs | 11 ++-
.../ThingsGateway.Gateway.Application.csproj | 4 +-
.../Variable/ValueTransformConfigPage.razor | 8 +-
.../ValueTransformConfigPage.razor.cs | 3 +-
.../S7/SiemensS7Master.cs | 25 +++---
.../Dlt645_2007/Dlt645_2007Master.cs | 7 ++
.../ModbusMaster/ModbusMaster.cs | 5 ++
.../ModbusSlave/ModbusSlave.cs | 12 +--
.../OpcDaMaster/OpcDaMaster.cs | 35 ++++++++-
.../OpcUaMaster/OpcUaMaster.cs | 30 +++++++-
.../SiemensS7Master/SiemensS7Master.cs | 6 ++
.../ThingsGateway.Upgrade.csproj | 2 +-
src/Version.props | 2 +-
82 files changed, 380 insertions(+), 396 deletions(-)
delete mode 100644 src/Admin/ThingsGateway.NewLife.X/Reflection/IIndexAccessor.cs
diff --git a/LICENSE b/LICENSE
index d08d44d4e..ba546c6ab 100644
--- a/LICENSE
+++ b/LICENSE
@@ -85,7 +85,7 @@
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
+ as of the date such litigation is field.
4. Cachetribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
diff --git a/src/Admin/ThingsGateway.NewLife.X/Common/DisposeBase.cs b/src/Admin/ThingsGateway.NewLife.X/Common/DisposeBase.cs
index addf50bf1..4d5ac4c39 100644
--- a/src/Admin/ThingsGateway.NewLife.X/Common/DisposeBase.cs
+++ b/src/Admin/ThingsGateway.NewLife.X/Common/DisposeBase.cs
@@ -79,11 +79,6 @@ public abstract class DisposeBase : IDisposable2
OnDisposed?.Invoke(this, EventArgs.Empty);
}
- ///// 释放资源,参数表示是否由Dispose调用。该方法保证OnDispose只被调用一次!
- /////
- //[Obsolete("=>Dispose")]
- //protected virtual void OnDispose(Boolean disposing) { }
-
/// 析构函数
///
/// 如果忘记调用Dispose,这里会释放非托管资源。
diff --git a/src/Admin/ThingsGateway.NewLife.X/Configuration/Config.cs b/src/Admin/ThingsGateway.NewLife.X/Configuration/Config.cs
index 79df08e32..716be2dcb 100644
--- a/src/Admin/ThingsGateway.NewLife.X/Configuration/Config.cs
+++ b/src/Admin/ThingsGateway.NewLife.X/Configuration/Config.cs
@@ -95,7 +95,6 @@ public class Config where TConfig : Config, new()
#region 属性
/// 是否新的配置文件
[XmlIgnore, IgnoreDataMember]
- //[Obsolete("=>_Provider.IsNew")]
public Boolean IsNew => Provider?.IsNew ?? false;
#endregion
@@ -104,7 +103,6 @@ public class Config where TConfig : Config, new()
protected virtual void OnLoaded() { }
/// 保存到配置文件中去
- //[Obsolete("=>Provider.Save")]
public virtual void Save() => Provider?.Save(this);
#endregion
}
\ No newline at end of file
diff --git a/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs b/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs
index 9ff38c12a..058ed9168 100644
--- a/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs
+++ b/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs
@@ -41,12 +41,6 @@ public static class ProcessHelper
return pname;
}
- /// 获取二级进程名
- ///
- ///
- [Obsolete("=>GetProcessName", true)]
- public static String GetProcessName2(this Process process) => GetProcessName(process);
-
///// 根据名称获取进程。支持dotnet/java
/////
/////
diff --git a/src/Admin/ThingsGateway.NewLife.X/Extension/StringHelper.cs b/src/Admin/ThingsGateway.NewLife.X/Extension/StringHelper.cs
index a46d41162..27889d0d5 100644
--- a/src/Admin/ThingsGateway.NewLife.X/Extension/StringHelper.cs
+++ b/src/Admin/ThingsGateway.NewLife.X/Extension/StringHelper.cs
@@ -236,25 +236,6 @@ public static class StringHelper
return sb.Return(true);
}
- ///// 把一个列表组合成为一个字符串,默认逗号分隔
- /////
- ///// 组合分隔符,默认逗号
- ///// 把对象转为字符串的委托
- /////
- //[Obsolete]
- //public static String Join(this IEnumerable value, String separator, Func? func)
- //{
- // var sb = Pool.StringBuilder.Get();
- // if (value != null)
- // {
- // if (func == null) func = obj => obj + "";
- // foreach (var item in value)
- // {
- // sb.Separate(separator).Append(func(item));
- // }
- // }
- // return sb.Put(true);
- //}
/// 把一个列表组合成为一个字符串,默认逗号分隔
///
@@ -301,28 +282,6 @@ public static class StringHelper
return encoding.GetBytes(value);
}
- /// 格式化字符串。特别支持无格式化字符串的时间参数
- /// 格式字符串
- /// 参数
- ///
- [Obsolete("建议使用插值字符串")]
- public static String F(this String value, params Object?[] args)
- {
- if (String.IsNullOrEmpty(value)) return value;
-
- // 特殊处理时间格式化。这些年,无数项目实施因为时间格式问题让人发狂
- for (var i = 0; i < args.Length; i++)
- {
- if (args[i] is DateTime dt)
- {
- // 没有写格式化字符串的时间参数,一律转为标准时间字符串
- if (value.Contains("{" + i + "}")) args[i] = dt.ToFullString();
- }
- }
-
- return String.Format(value, args);
- }
-
/// 指定输入是否匹配目标表达式,支持*匹配
/// 匹配表达式
/// 输入字符串
diff --git a/src/Admin/ThingsGateway.NewLife.X/Reflection/IIndexAccessor.cs b/src/Admin/ThingsGateway.NewLife.X/Reflection/IIndexAccessor.cs
deleted file mode 100644
index 620701e9a..000000000
--- a/src/Admin/ThingsGateway.NewLife.X/Reflection/IIndexAccessor.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace ThingsGateway.NewLife.Reflection
-{
- ///
- /// 索引器接访问口。
- /// 该接口用于通过名称快速访问对象属性或字段(属性优先)。
- ///
- //[Obsolete("=>IIndex")]
- public interface IIndexAccessor
- {
- /// 获取/设置 指定名称的属性或字段的值
- /// 名称
- ///
- Object this[String name] { get; set; }
- }
-}
\ No newline at end of file
diff --git a/src/Admin/ThingsGateway.NewLife.X/Reflection/Reflect.cs b/src/Admin/ThingsGateway.NewLife.X/Reflection/Reflect.cs
index 1146cac0a..6d7b751cd 100644
--- a/src/Admin/ThingsGateway.NewLife.X/Reflection/Reflect.cs
+++ b/src/Admin/ThingsGateway.NewLife.X/Reflection/Reflect.cs
@@ -521,12 +521,7 @@ public static class Reflect
///
public static IEnumerable GetAllSubclasses(this Type baseType) => Provider.GetAllSubclasses(baseType);
- ///// 在所有程序集中查找指定基类或接口的子类实现
- ///// 基类或接口
- ///// 是否加载为加载程序集
- /////
- //[Obsolete]
- //public static IEnumerable GetAllSubclasses(this Type baseType, Boolean isLoadAssembly) => Provider.GetAllSubclasses(baseType, isLoadAssembly);
+
#endregion
#region 辅助方法
diff --git a/src/Admin/ThingsGateway.NewLife.X/Xml/XmlConfig.cs b/src/Admin/ThingsGateway.NewLife.X/Xml/XmlConfig.cs
index ca7e9de1c..fea1aca42 100644
--- a/src/Admin/ThingsGateway.NewLife.X/Xml/XmlConfig.cs
+++ b/src/Admin/ThingsGateway.NewLife.X/Xml/XmlConfig.cs
@@ -20,7 +20,6 @@ namespace ThingsGateway.NewLife.Xml;
/// 用户也可以通过配置实体类的静态构造函数修改基类的和来动态配置加载信息。
///
///
-//[Obsolete("=>Config")]
public class XmlConfig : DisposeBase where TConfig : XmlConfig, new()
{
#region 静态
diff --git a/src/Admin/ThingsGateway.Razor/Extensions/GenericExtensions.cs b/src/Admin/ThingsGateway.Razor/Extensions/GenericExtensions.cs
index 19497829b..a3f1d09a2 100644
--- a/src/Admin/ThingsGateway.Razor/Extensions/GenericExtensions.cs
+++ b/src/Admin/ThingsGateway.Razor/Extensions/GenericExtensions.cs
@@ -10,8 +10,6 @@
using System.Reflection;
-using ThingsGateway.NewLife.Caching;
-
namespace ThingsGateway.Extension.Generic;
///
diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs
index 2e0c46f61..25d254f60 100644
--- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs
+++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs
@@ -355,7 +355,7 @@ namespace ThingsGateway.SqlSugar
{
var querybulder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
querybulder.Context = this.Context;
- var fileds = item.IndexFields
+ var fields = item.IndexFields
.Select(it =>
{
var dbColumn = entityInfo.Columns.FirstOrDefault(z => z.PropertyName == it.Key);
@@ -366,7 +366,7 @@ namespace ThingsGateway.SqlSugar
return new KeyValuePair(dbColumn.DbColumnName, it.Value);
})
.Select(it => querybulder.GetTranslationColumnName(it.Key) + " " + it.Value).ToArray();
- this.Context.DbMaintenance.CreateIndex(entityInfo.DbTableName, fileds, item.IndexName + include, item.IsUnique);
+ this.Context.DbMaintenance.CreateIndex(entityInfo.DbTableName, fields, item.IndexName + include, item.IsUnique);
}
}
}
@@ -384,7 +384,7 @@ namespace ThingsGateway.SqlSugar
DbColumnInfo dbColumnInfo = EntityColumnToDbColumn(entityInfo, tableName, item);
columns.Add(dbColumnInfo);
}
- if (entityInfo.IsCreateTableFiledSort)
+ if (entityInfo.IsCreateTableFieldSort)
{
columns = columns.OrderBy(c => c.CreateTableFieldSort).ToList();
columns = columns.OrderBy(it => it.IsPrimarykey ? 0 : 1).ToList();
diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DeleteProvider/DeleteableProvider.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DeleteProvider/DeleteableProvider.cs
index 8d72729f5..083a648b2 100644
--- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DeleteProvider/DeleteableProvider.cs
+++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DeleteProvider/DeleteableProvider.cs
@@ -154,7 +154,7 @@ namespace ThingsGateway.SqlSugar
if (DeleteBuilder.BigDataInValues == null)
DeleteBuilder.BigDataInValues = new List