bugfix:修复Mqtt服务器详情页变量值不更新的问题,修复修改Mqtt别名后台不更新的问题,重新调整了别名的架构
This commit is contained in:
@@ -49,7 +49,7 @@ public class RepositoryManager : IRepositoryManager
|
||||
VariableTables = variableTables;
|
||||
Variables = variables;
|
||||
MqttServers = mqttServers;
|
||||
VariableMqttAliases = variableMqttAliases;
|
||||
MqttAliases = variableMqttAliases;
|
||||
Menus = menus;
|
||||
VariableHistories = variableHistories;
|
||||
Users = users;
|
||||
@@ -86,7 +86,7 @@ public class RepositoryManager : IRepositoryManager
|
||||
/// <summary>
|
||||
/// 获取变量MQTT别名仓储实例。
|
||||
/// </summary>
|
||||
public IVariableMqttAliasRepository VariableMqttAliases { get; set; }
|
||||
public IVariableMqttAliasRepository MqttAliases { get; set; }
|
||||
/// <summary>
|
||||
/// 获取菜单仓储实例。
|
||||
/// </summary>
|
||||
|
||||
@@ -111,77 +111,4 @@ public class VariableMqttAliasRepository : BaseRepository<DbVariableMqttAlias>,
|
||||
var addedEntities = await base.AddBatchAsync(dbEntities);
|
||||
return _mapper.Map<List<MqttAlias>>(addedEntities);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 异步获取指定变量的所有MQTT别名关联。
|
||||
/// </summary>
|
||||
public async Task<List<MqttAlias>> GetAliasesForVariableAsync(int variableId)
|
||||
{
|
||||
// 查询别名关联,并包含关联的Variable和MqttServer信息
|
||||
var dbList = await _dbContext.GetInstance().Queryable<DbVariableMqttAlias>()
|
||||
.Where(x => x.VariableId == variableId)
|
||||
.ToListAsync();
|
||||
|
||||
// 手动加载关联的Variable和MqttServer实体
|
||||
var variableIds = dbList.Select(x => x.VariableId).Distinct().ToList();
|
||||
var mqttServerIds = dbList.Select(x => x.MqttServerId).Distinct().ToList();
|
||||
|
||||
var variables = await _dbContext.GetInstance().Queryable<DbVariable>()
|
||||
.In(x => x.Id, variableIds)
|
||||
.ToListAsync();
|
||||
|
||||
var mqttServers = await _dbContext.GetInstance().Queryable<DbMqttServer>()
|
||||
.In(x => x.Id, mqttServerIds)
|
||||
.ToListAsync();
|
||||
|
||||
// 将关联实体映射到领域模型
|
||||
var variableDict = variables.ToDictionary(v => v.Id, v => _mapper.Map<Variable>(v));
|
||||
var mqttServerDict = mqttServers.ToDictionary(m => m.Id, m => _mapper.Map<MqttServer>(m));
|
||||
|
||||
// 映射主实体并设置导航属性
|
||||
var result = _mapper.Map<List<MqttAlias>>(dbList);
|
||||
foreach (var alias in result)
|
||||
{
|
||||
if (variableDict.TryGetValue(alias.VariableId, out var variable))
|
||||
{
|
||||
alias.Variable = variable;
|
||||
}
|
||||
|
||||
if (mqttServerDict.TryGetValue(alias.MqttServerId, out var mqttServer))
|
||||
{
|
||||
alias.MqttServer = mqttServer;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 异步根据变量和服务器获取别名关联。
|
||||
/// </summary>
|
||||
public async Task<MqttAlias> GetByVariableAndServerAsync(int variableId, int mqttServerId)
|
||||
{
|
||||
var dbAlias = await _dbContext.GetInstance().Queryable<DbVariableMqttAlias>()
|
||||
.Where(x => x.VariableId == variableId && x.MqttServerId == mqttServerId)
|
||||
.FirstAsync();
|
||||
|
||||
if (dbAlias == null)
|
||||
return null;
|
||||
|
||||
// 手动加载关联的Variable和MqttServer实体
|
||||
var variable = await _dbContext.GetInstance().Queryable<DbVariable>()
|
||||
.Where(x => x.Id == variableId)
|
||||
.FirstAsync();
|
||||
|
||||
var mqttServer = await _dbContext.GetInstance().Queryable<DbMqttServer>()
|
||||
.Where(x => x.Id == mqttServerId)
|
||||
.FirstAsync();
|
||||
|
||||
// 映射主实体并设置导航属性
|
||||
var result = _mapper.Map<MqttAlias>(dbAlias);
|
||||
result.Variable = _mapper.Map<Variable>(variable);
|
||||
result.MqttServer = _mapper.Map<MqttServer>(mqttServer);
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user