mirror of
https://gitee.com/ThingsGateway/ThingsGateway.git
synced 2025-10-20 18:51:28 +08:00
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f626b4e5fc | ||
![]() |
bc23200e66 | ||
![]() |
95ab59fd5a | ||
![]() |
0bbee003b0 | ||
![]() |
d20cb7a928 |
@@ -18,11 +18,11 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BootstrapBlazor.TableExport" Version="9.2.2" />
|
||||
<PackageReference Include="BootstrapBlazor.TableExport" Version="9.2.3" />
|
||||
<!--<PackageReference Include="MiniExcel" Version="1.39.0" />-->
|
||||
<PackageReference Include="UAParser" Version="3.1.47" />
|
||||
<PackageReference Include="Rougamo.Fody" Version="5.0.0" />
|
||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.188" />
|
||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.189" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.1" />
|
||||
|
@@ -7,7 +7,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BootstrapBlazor.FontAwesome" Version="9.0.2" />
|
||||
<PackageReference Include="BootstrapBlazor" Version="9.5.5" />
|
||||
<PackageReference Include="BootstrapBlazor" Version="9.5.8" />
|
||||
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
||||
</ItemGroup>
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<PluginVersion>10.4.19</PluginVersion>
|
||||
<ProPluginVersion>10.4.19</ProPluginVersion>
|
||||
<PluginVersion>10.4.22</PluginVersion>
|
||||
<ProPluginVersion>10.4.22</ProPluginVersion>
|
||||
<AuthenticationVersion>2.1.7</AuthenticationVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
|
@@ -7,7 +7,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CS-Script" Version="4.8.27" />
|
||||
<PackageReference Include="CS-Script" Version="4.9.5" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@@ -10,8 +10,8 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="9.0.4" />
|
||||
<PackageReference Include="TouchSocket" Version="3.0.25" />
|
||||
<PackageReference Include="TouchSocket.SerialPorts" Version="3.0.25" />
|
||||
<PackageReference Include="TouchSocket" Version="3.0.26" />
|
||||
<PackageReference Include="TouchSocket.SerialPorts" Version="3.0.26" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@@ -310,7 +310,6 @@ internal static class RuntimeServiceHelper
|
||||
}
|
||||
}
|
||||
|
||||
item.Value.Dispose();
|
||||
}
|
||||
if (group.Key != null)
|
||||
{
|
||||
@@ -321,6 +320,19 @@ internal static class RuntimeServiceHelper
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void VariableRuntimesDispose(IEnumerable<long> variableIds)
|
||||
{
|
||||
|
||||
foreach (var variableId in variableIds)
|
||||
{
|
||||
|
||||
if (GlobalData.IdVariables.TryGetValue(variableId, out var variableRuntime))
|
||||
{
|
||||
variableRuntime.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static void AddCollectChangedDriver(IEnumerable<VariableRuntime> newVariableRuntimes, ConcurrentHashSet<IDriver> changedDriver)
|
||||
|
@@ -43,10 +43,10 @@ public class VariableRuntimeService : IVariableRuntimeService
|
||||
//获取变量,先找到原插件线程,然后修改插件线程内的字典,再改动全局字典,最后刷新插件
|
||||
|
||||
ConcurrentHashSet<IDriver> changedDriver = new();
|
||||
|
||||
RuntimeServiceHelper.VariableRuntimesDispose(variableIds);
|
||||
RuntimeServiceHelper.AddCollectChangedDriver(newVariableRuntimes, changedDriver);
|
||||
RuntimeServiceHelper.AddBusinessChangedDriver(variableIds, changedDriver);
|
||||
|
||||
RuntimeServiceHelper.AddCollectChangedDriver(newVariableRuntimes, changedDriver);
|
||||
|
||||
if (restart)
|
||||
{
|
||||
@@ -79,9 +79,9 @@ public class VariableRuntimeService : IVariableRuntimeService
|
||||
|
||||
ConcurrentHashSet<IDriver> changedDriver = new();
|
||||
|
||||
RuntimeServiceHelper.AddBusinessChangedDriver(variableIds, changedDriver);
|
||||
|
||||
RuntimeServiceHelper.VariableRuntimesDispose(variableIds);
|
||||
RuntimeServiceHelper.AddCollectChangedDriver(newVariableRuntimes, changedDriver);
|
||||
RuntimeServiceHelper.AddBusinessChangedDriver(variableIds, changedDriver);
|
||||
|
||||
if (restart)
|
||||
{
|
||||
@@ -111,6 +111,7 @@ public class VariableRuntimeService : IVariableRuntimeService
|
||||
ConcurrentHashSet<IDriver> changedDriver = new();
|
||||
|
||||
RuntimeServiceHelper.AddBusinessChangedDriver(variableIds, changedDriver);
|
||||
RuntimeServiceHelper.VariableRuntimesDispose(variableIds);
|
||||
|
||||
if (restart)
|
||||
{
|
||||
@@ -144,10 +145,9 @@ public class VariableRuntimeService : IVariableRuntimeService
|
||||
var variableIds = newVariableRuntimes.Select(a => a.Id).ToHashSet();
|
||||
|
||||
ConcurrentHashSet<IDriver> changedDriver = new();
|
||||
|
||||
RuntimeServiceHelper.AddBusinessChangedDriver(variableIds, changedDriver);
|
||||
|
||||
RuntimeServiceHelper.VariableRuntimesDispose(variableIds);
|
||||
RuntimeServiceHelper.AddCollectChangedDriver(newVariableRuntimes, changedDriver);
|
||||
RuntimeServiceHelper.AddBusinessChangedDriver(variableIds, changedDriver);
|
||||
|
||||
if (restart)
|
||||
{
|
||||
@@ -237,10 +237,9 @@ public class VariableRuntimeService : IVariableRuntimeService
|
||||
|
||||
ConcurrentHashSet<IDriver> changedDriver = new();
|
||||
|
||||
|
||||
RuntimeServiceHelper.AddBusinessChangedDriver(variableIds, changedDriver);
|
||||
|
||||
RuntimeServiceHelper.VariableRuntimesDispose(variableIds);
|
||||
RuntimeServiceHelper.AddCollectChangedDriver(newVariableRuntimes, changedDriver);
|
||||
RuntimeServiceHelper.AddBusinessChangedDriver(variableIds, changedDriver);
|
||||
|
||||
if (restart)
|
||||
{
|
||||
|
@@ -81,5 +81,23 @@ public class Startup : AppStartup
|
||||
});
|
||||
var fullName = Assembly.GetExecutingAssembly().FullName;//获取程序集全名
|
||||
CodeFirstUtils.CodeFirst(fullName!);//CodeFirst
|
||||
|
||||
|
||||
|
||||
//10.4.9 删除logenable
|
||||
try
|
||||
{
|
||||
using var db = DbContext.GetDB<Channel>();
|
||||
if (!db.DbMaintenance.IsAnyColumn(nameof(Channel), "LogEnable", false)) return;
|
||||
var tables = db.DbMaintenance.DropColumn(nameof(Channel), "LogEnable");
|
||||
}
|
||||
catch { }
|
||||
try
|
||||
{
|
||||
using var db = DbContext.GetDB<Device>();
|
||||
if (!db.DbMaintenance.IsAnyColumn(nameof(Device), "LogEnable", false)) return;
|
||||
var tables = db.DbMaintenance.DropColumn(nameof(Device), "LogEnable");
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
@@ -9,8 +9,8 @@
|
||||
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
|
||||
<PackageReference Include="SqlSugar.TDengineCore" Version="4.18.6" />
|
||||
<PackageReference Include="Rougamo.Fody" Version="5.0.0" />
|
||||
<PackageReference Include="TouchSocket.Dmtp" Version="3.0.25" />
|
||||
<PackageReference Include="TouchSocket.WebApi.Swagger" Version="3.0.25" />
|
||||
<PackageReference Include="TouchSocket.Dmtp" Version="3.0.26" />
|
||||
<PackageReference Include="TouchSocket.WebApi.Swagger" Version="3.0.26" />
|
||||
<PackageReference Include="ThingsGateway.Authentication" Version="$(AuthenticationVersion)" />
|
||||
|
||||
</ItemGroup>
|
||||
|
@@ -35,6 +35,7 @@
|
||||
"BigTextScriptHistoryTable": "DynamicScriptHistoryTable",
|
||||
"BigTextScriptRealTable": "DynamicScriptRealTable",
|
||||
"RealTableBusinessInterval": "RealTableBusinessInterval",
|
||||
"SqlDBSplitType": "SplitType",
|
||||
|
||||
"BusinessUpdateEnum": "BusinessUpdateEnum",
|
||||
"BusinessInterval": "BusinessInterval",
|
||||
|
@@ -35,7 +35,7 @@
|
||||
"BigTextScriptHistoryTable": "历史表动态脚本",
|
||||
"BigTextScriptRealTable": "实时表动态脚本",
|
||||
"RealTableBusinessInterval": "实时表定时上传间隔",
|
||||
|
||||
"SqlDBSplitType": "分表模式",
|
||||
"BusinessUpdateEnum": "上传模式",
|
||||
"BusinessInterval": "定时上传间隔",
|
||||
"IsAllVariable": "选择全部变量",
|
||||
|
@@ -1,12 +0,0 @@
|
||||
|
||||
|
||||
namespace ThingsGateway.Plugin.SqlDB;
|
||||
|
||||
public enum DbType
|
||||
{
|
||||
MySql = 0,
|
||||
SqlServer = 1,
|
||||
Sqlite = 2,
|
||||
Oracle = 3,
|
||||
PostgreSQL = 4,
|
||||
}
|
@@ -14,7 +14,7 @@ using SqlSugar;
|
||||
|
||||
namespace ThingsGateway.Plugin.SqlDB;
|
||||
|
||||
[SplitTable(SplitType.Week)]//按周分表 (自带分表支持 年、季、月、周、日)
|
||||
[SplitTable(SplitType._Custom01)]//按周分表 (自带分表支持 年、季、月、周、日)
|
||||
[SugarTable("{name}_{year}{month}{day}", TableDescription = "设备采集历史表")]//3个变量必须要有
|
||||
[SugarIndex("index_Id", nameof(SQLHistoryValue.Id), OrderByType.Desc)]
|
||||
[SugarIndex("index_Name", nameof(SQLHistoryValue.Name), OrderByType.Desc)]
|
||||
|
@@ -8,6 +8,10 @@
|
||||
// QQ群:605534569
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using Mapster;
|
||||
|
||||
using Microsoft.Data.Sqlite;
|
||||
|
||||
using SqlSugar;
|
||||
|
||||
using System.Reflection;
|
||||
@@ -17,11 +21,11 @@ namespace ThingsGateway.Plugin.SqlDB;
|
||||
|
||||
public class SqlDBDateSplitTableService : DateSplitTableService
|
||||
{
|
||||
private SqlDBProducerProperty sqlDBProducerProperty;
|
||||
private SqlDBProducerProperty _sqlDBProducerProperty;
|
||||
|
||||
public SqlDBDateSplitTableService(SqlDBProducerProperty sqlDBProducerProperty)
|
||||
{
|
||||
this.sqlDBProducerProperty = sqlDBProducerProperty;
|
||||
this._sqlDBProducerProperty = sqlDBProducerProperty;
|
||||
}
|
||||
|
||||
#region Core
|
||||
@@ -29,7 +33,7 @@ public class SqlDBDateSplitTableService : DateSplitTableService
|
||||
public override List<SplitTableInfo> GetAllTables(ISqlSugarClient db, EntityInfo EntityInfo, List<DbTableInfo> tableInfos)
|
||||
{
|
||||
CheckTableName(EntityInfo.DbTableName);
|
||||
string regex = "^" + EntityInfo.DbTableName.Replace("{year}", "([0-9]{2,4})").Replace("{day}", "([0-9]{1,2})").Replace("{month}", "([0-9]{1,2})").Replace("{name}", sqlDBProducerProperty.HistoryDBTableName);
|
||||
string regex = "^" + EntityInfo.DbTableName.Replace("{year}", "([0-9]{2,4})").Replace("{day}", "([0-9]{1,2})").Replace("{month}", "([0-9]{1,2})").Replace("{name}", _sqlDBProducerProperty.HistoryDBTableName);
|
||||
List<string> list = (from it in tableInfos
|
||||
where Regex.IsMatch(it.Name, regex, RegexOptions.IgnoreCase)
|
||||
select it.Name).Reverse().ToList();
|
||||
@@ -51,16 +55,9 @@ public class SqlDBDateSplitTableService : DateSplitTableService
|
||||
|
||||
public override string GetTableName(ISqlSugarClient db, EntityInfo EntityInfo)
|
||||
{
|
||||
var splitTableAttribute = EntityInfo.Type.GetCustomAttribute<SplitTableAttribute>();
|
||||
if (splitTableAttribute != null)
|
||||
{
|
||||
var type = splitTableAttribute.SplitType;
|
||||
return GetTableName(db, EntityInfo, type);
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetTableName(db, EntityInfo, SplitType.Day);
|
||||
}
|
||||
var type = (SplitType)_sqlDBProducerProperty.SqlDBSplitType;
|
||||
return GetTableName(db, EntityInfo, type);
|
||||
|
||||
}
|
||||
|
||||
public override string GetTableName(ISqlSugarClient db, EntityInfo EntityInfo, SplitType splitType)
|
||||
@@ -154,8 +151,9 @@ public class SqlDBDateSplitTableService : DateSplitTableService
|
||||
|
||||
private string GetTableNameByDate(EntityInfo EntityInfo, SplitType splitType, DateTime date)
|
||||
{
|
||||
date = ConvertDateBySplitType(date, splitType);
|
||||
return EntityInfo.DbTableName.Replace("{year}", date.Year + "").Replace("{day}", SqlDBDateSplitTableService.PadLeft2(date.Day + "")).Replace("{month}", SqlDBDateSplitTableService.PadLeft2(date.Month + "")).Replace("{name}", sqlDBProducerProperty.HistoryDBTableName);
|
||||
var type = (SplitType)_sqlDBProducerProperty.SqlDBSplitType;
|
||||
date = ConvertDateBySplitType(date, type);
|
||||
return EntityInfo.DbTableName.Replace("{year}", date.Year + "").Replace("{day}", SqlDBDateSplitTableService.PadLeft2(date.Day + "")).Replace("{month}", SqlDBDateSplitTableService.PadLeft2(date.Month + "")).Replace("{name}", _sqlDBProducerProperty.HistoryDBTableName);
|
||||
}
|
||||
|
||||
private static string PadLeft2(string str)
|
||||
|
@@ -13,7 +13,23 @@ using BootstrapBlazor.Components;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace ThingsGateway.Plugin.SqlDB;
|
||||
|
||||
public enum DbType
|
||||
{
|
||||
MySql = 0,
|
||||
SqlServer = 1,
|
||||
Sqlite = 2,
|
||||
Oracle = 3,
|
||||
PostgreSQL = 4,
|
||||
}
|
||||
public enum SqlDBSplitType
|
||||
{
|
||||
Day = 0,
|
||||
Week = 1,
|
||||
Month = 2,
|
||||
Month_6 = 1000,
|
||||
Season = 3,
|
||||
Year = 4,
|
||||
}
|
||||
/// <summary>
|
||||
/// SqlDBProducerProperty
|
||||
/// </summary>
|
||||
@@ -34,6 +50,9 @@ public class SqlDBProducerProperty : BusinessPropertyWithCacheInterval
|
||||
[DynamicProperty]
|
||||
public DbType DbType { get; set; } = DbType.SqlServer;
|
||||
|
||||
[DynamicProperty]
|
||||
public SqlDBSplitType SqlDBSplitType { get; set; } = SqlDBSplitType.Week;
|
||||
|
||||
[DynamicProperty]
|
||||
[Required]
|
||||
[AutoGenerateColumn(ComponentType = typeof(Textarea), Rows = 1)]
|
||||
|
@@ -9,7 +9,7 @@
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Gateway\ThingsGateway.Gateway.Razor\ThingsGateway.Gateway.Razor.csproj">
|
||||
</ProjectReference>
|
||||
<PackageReference Include="Confluent.Kafka" Version="2.9.0" GeneratePathProperty="true">
|
||||
<PackageReference Include="Confluent.Kafka" Version="2.10.0" GeneratePathProperty="true">
|
||||
<PrivateAssets>contentFiles;compile;build;buildMultitargeting;buildTransitive;analyzers;</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
@@ -6,7 +6,7 @@
|
||||
"Startway": "", // 启动方式:DOTNET: (直接启动) ;WindowsService:(windows服务) PM2, Systemctl等不需要配置。对应文件夹下的命令文件
|
||||
|
||||
"AppSettings": {
|
||||
"InjectSpecificationDocument": false, // 生产环境是否开启Swagger
|
||||
"InjectSpecificationDocument": true, // 生产环境是否开启Swagger
|
||||
"ExternalAssemblies": [ "Plugins" ], // 插件目录
|
||||
|
||||
// nuget动态加载的程序集
|
||||
|
@@ -16,7 +16,7 @@
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="TouchSocket.Dmtp" Version="3.0.25" />
|
||||
<PackageReference Include="TouchSocket.Dmtp" Version="3.0.26" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Version>10.4.19</Version>
|
||||
<Version>10.4.22</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
Reference in New Issue
Block a user