Mqtt服务器添加,编辑,删除调试完成
This commit is contained in:
@@ -72,7 +72,7 @@ public partial class App : Application
|
||||
services.AddSingleton<IDialogService, DialogService>();
|
||||
services.AddSingleton<GrowlNotificationService>();
|
||||
services.AddHostedService<S7BackgroundService>(); // Register as HostedService
|
||||
services.AddHostedService<MqttBackgroundService>();
|
||||
// services.AddHostedService<MqttBackgroundService>();
|
||||
services.AddSingleton<MainViewModel>();
|
||||
services.AddSingleton<HomeViewModel>();
|
||||
services.AddSingleton<DevicesViewModel>();
|
||||
|
||||
@@ -188,4 +188,11 @@ public class MenuRepository
|
||||
return result?.CopyTo<MenuBean>();
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<MenuBean> GetMainMenuByName(string name)
|
||||
{
|
||||
using var db = DbContext.GetInstance();
|
||||
var dbMenu= await db.Queryable<DbMenu>().FirstAsync(m => m.Name == name && m.Type == MenuType.MainMenu);
|
||||
return dbMenu.CopyTo<MenuBean>();
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,9 @@ public class MqttRepository
|
||||
stopwatch.Start();
|
||||
using (var _db = DbContext.GetInstance())
|
||||
{
|
||||
var result = await _db.Queryable<DbMqtt>().In(id).SingleAsync();
|
||||
var result = await _db.Queryable<DbMqtt>()
|
||||
.In(id)
|
||||
.SingleAsync();
|
||||
stopwatch.Stop();
|
||||
Logger.Info($"根据ID '{id}' 获取Mqtt配置耗时:{stopwatch.ElapsedMilliseconds}ms");
|
||||
return result.CopyTo<Mqtt>();
|
||||
@@ -53,10 +55,12 @@ public class MqttRepository
|
||||
stopwatch.Start();
|
||||
using (var _db = DbContext.GetInstance())
|
||||
{
|
||||
var result = await _db.Queryable<DbMqtt>().ToListAsync();
|
||||
var result = await _db.Queryable<DbMqtt>()
|
||||
.ToListAsync();
|
||||
stopwatch.Stop();
|
||||
Logger.Info($"获取所有Mqtt配置耗时:{stopwatch.ElapsedMilliseconds}ms");
|
||||
return result.Select(m=>m.CopyTo<Mqtt>()).ToList();
|
||||
return result.Select(m => m.CopyTo<Mqtt>())
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,19 +73,21 @@ public class MqttRepository
|
||||
{
|
||||
Stopwatch stopwatch = new Stopwatch();
|
||||
stopwatch.Start();
|
||||
using (var db = DbContext.GetInstance())
|
||||
{
|
||||
using var db = DbContext.GetInstance();
|
||||
await db.BeginTranAsync();
|
||||
try
|
||||
{
|
||||
var result = await db.Insertable(mqtt.CopyTo<DbMqtt>()).ExecuteReturnIdentityAsync();
|
||||
var result = await db.Insertable(mqtt.CopyTo<DbMqtt>())
|
||||
.ExecuteReturnIdentityAsync();
|
||||
var mqttMenu = await _menuRepository.GetMainMenuByName("Mqtt服务器");
|
||||
// Add menu entry
|
||||
var menu = new MenuBean()
|
||||
{
|
||||
Name = mqtt.Name,
|
||||
Icon = SegoeFluentIcons.Wifi.Glyph,
|
||||
Type = MenuType.MqttMenu,
|
||||
DataId = result
|
||||
DataId = result,
|
||||
ParentId = mqttMenu.Id,
|
||||
};
|
||||
await _menuRepository.Add(menu, db);
|
||||
await db.CommitTranAsync();
|
||||
@@ -96,7 +102,6 @@ public class MqttRepository
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新Mqtt配置
|
||||
@@ -112,7 +117,8 @@ public class MqttRepository
|
||||
await db.BeginTranAsync();
|
||||
try
|
||||
{
|
||||
var result = await db.Updateable(mqtt.CopyTo<DbMqtt>()).ExecuteCommandAsync();
|
||||
var result = await db.Updateable(mqtt.CopyTo<DbMqtt>())
|
||||
.ExecuteCommandAsync();
|
||||
// Update menu entry
|
||||
var menu = await _menuRepository.GetMenuByDataId(mqtt.Id, MenuType.MqttMenu);
|
||||
if (menu != null)
|
||||
@@ -120,6 +126,7 @@ public class MqttRepository
|
||||
menu.Name = mqtt.Name;
|
||||
await _menuRepository.Edit(menu, db);
|
||||
}
|
||||
|
||||
await db.CommitTranAsync();
|
||||
stopwatch.Stop();
|
||||
Logger.Info($"更新Mqtt配置 '{mqtt.Name}' 耗时:{stopwatch.ElapsedMilliseconds}ms");
|
||||
@@ -148,13 +155,12 @@ public class MqttRepository
|
||||
await db.BeginTranAsync();
|
||||
try
|
||||
{
|
||||
var result = await db.Deleteable<DbMqtt>().In(mqtt.Id).ExecuteCommandAsync();
|
||||
var result = await db.Deleteable<DbMqtt>()
|
||||
.In(mqtt.Id)
|
||||
.ExecuteCommandAsync();
|
||||
// Delete menu entry
|
||||
var menu = await _menuRepository.GetMenuByDataId(mqtt.Id, MenuType.MqttMenu);
|
||||
if (menu != null)
|
||||
{
|
||||
await _menuRepository.DeleteMenu(menu, db);
|
||||
}
|
||||
await db.CommitTranAsync();
|
||||
stopwatch.Stop();
|
||||
Logger.Info($"删除Mqtt配置ID '{mqtt.Id}' 耗时:{stopwatch.ElapsedMilliseconds}ms");
|
||||
|
||||
@@ -150,13 +150,16 @@ public partial class MainViewModel : ViewModelBase
|
||||
{
|
||||
switch (menu.Type)
|
||||
{
|
||||
// 导航到一级菜单
|
||||
case MenuType.MainMenu:
|
||||
menu.ViewModel = DataServicesHelper.GetMainViewModel(menu.Name);
|
||||
break;
|
||||
// 导航到设备下面的菜单
|
||||
case MenuType.DeviceMenu:
|
||||
menu.ViewModel = App.Current.Services.GetRequiredService<DeviceDetailViewModel>();
|
||||
menu.Data = _dataServices.Devices.FirstOrDefault(d => d.Id == menu.DataId);
|
||||
break;
|
||||
// 导航到变量表菜单
|
||||
case MenuType.VariableTableMenu:
|
||||
VariableTableViewModel varTableVM =
|
||||
App.Current.Services.GetRequiredService<VariableTableViewModel>();
|
||||
@@ -166,16 +169,15 @@ public partial class MainViewModel : ViewModelBase
|
||||
varTableVM.IsLoadCompletion = false;
|
||||
menu.ViewModel = varTableVM;
|
||||
menu.Data = varTableVM.VariableTable;
|
||||
|
||||
break;
|
||||
// 导航到添加变量表的菜单
|
||||
case MenuType.AddVariableTableMenu:
|
||||
|
||||
await AddVariableTable(menu);
|
||||
return;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
if (menu.Type == MenuType.AddVariableTableMenu)
|
||||
return;
|
||||
|
||||
if (menu.ViewModel != null)
|
||||
{
|
||||
|
||||
@@ -63,6 +63,7 @@ public partial class MqttsViewModel : ViewModelBase
|
||||
|
||||
await _mqttRepository.Add(mqtt);
|
||||
MessageHelper.SendLoadMessage(LoadTypes.Mqtts);
|
||||
MessageHelper.SendLoadMessage(LoadTypes.Menu);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -87,8 +88,8 @@ public partial class MqttsViewModel : ViewModelBase
|
||||
if (isDel)
|
||||
{
|
||||
await _mqttRepository.Delete(SelectedMqtt);
|
||||
|
||||
MessageHelper.SendLoadMessage(LoadTypes.Mqtts);
|
||||
MessageHelper.SendLoadMessage(LoadTypes.Menu);
|
||||
NotificationHelper.ShowMessage($"删除MQTT成功,MQTT名:{SelectedMqtt.Name}", NotificationType.Success);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user