UIProvider.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using Device;
  2. using Mapster;
  3. using ServiceBase;
  4. namespace EEMSMain.Service;
  5. internal class UIProvider(DeviceCollection deviceCollection) : IUIProvider
  6. {
  7. Task<bool> IUIProvider.InsertNewDevice(DeviceInfo deviceInfo)
  8. {
  9. DeviceInfo_VM device = deviceInfo.Adapt<DeviceInfo_VM>();
  10. device.IsConnected = true;
  11. if (device.Guid is null)
  12. return Task.FromResult(true);
  13. App.Current.Dispatcher.Invoke(() =>
  14. {
  15. deviceCollection.NewDeviceList[device.Guid.Value] = device;
  16. });
  17. return Task.FromResult(true);
  18. }
  19. Task<bool> IUIProvider.UpdateDevice(DeviceInfo deviceInfo)
  20. {
  21. DeviceInfo_VM device = deviceInfo.Adapt<DeviceInfo_VM>();
  22. if (device.Guid is null)
  23. return Task.FromResult(true);
  24. DeviceData_VM deviceData = new()
  25. {
  26. DeviceId = device.Guid.Value,
  27. DeviceModel = device.DeviceModel,
  28. OtherInfo = [],
  29. Alarms = []
  30. };
  31. App.Current.Dispatcher.Invoke(() =>
  32. {
  33. deviceCollection.DeviceDataList[device.Guid.Value] = deviceData;
  34. deviceCollection.DeviceList[device.Guid.Value] = device;
  35. });
  36. return Task.FromResult(true);
  37. }
  38. Task<bool> IUIProvider.UpdateDeviceList(IEnumerable<DeviceInfo> device)
  39. {
  40. return Task.FromResult(true);
  41. }
  42. Task<bool> IUIProvider.UpdateRealtimeData(Guid guid, Dictionary<string, object> data)
  43. {
  44. if (!deviceCollection.DeviceDataList.TryGetValue(guid, out DeviceData_VM? deviceData) || deviceData is null)
  45. return Task.FromResult(false);
  46. App.Current.Dispatcher?.Invoke(() =>
  47. {
  48. deviceData.OtherInfo.Clear();
  49. foreach (var item in data)
  50. {
  51. switch (item.Key)
  52. {
  53. case "Status":
  54. deviceData.DeviceStatus = item.Value.ToString();
  55. break;
  56. default:
  57. deviceData.OtherInfo[item.Key] = item.Value;
  58. break;
  59. }
  60. }
  61. });
  62. return Task.FromResult(true);
  63. }
  64. Task<bool> IUIProvider.UpdateRecipeInfo(Recipe recipeInfo)
  65. {
  66. if (!deviceCollection.DeviceDataList.TryGetValue(recipeInfo.DeviceId, out DeviceData_VM? deviceData) || deviceData is null)
  67. return Task.FromResult(false);
  68. App.Current.Dispatcher?.Invoke(() =>
  69. {
  70. deviceData.RecipeInfo = recipeInfo.Adapt<RecipeInfo_VM>();
  71. });
  72. return Task.FromResult(true);
  73. }
  74. Task<bool> IUIProvider.UpdateAlarm(IEnumerable<Alarm> alarm)
  75. {
  76. if (alarm is null || alarm.FirstOrDefault() is not Alarm first)
  77. return Task.FromResult(true);
  78. if (!deviceCollection.DeviceDataList.TryGetValue(first.DeviceID, out DeviceData_VM? deviceData) || deviceData is null)
  79. return Task.FromResult(false);
  80. App.Current.Dispatcher?.Invoke(() =>
  81. {
  82. deviceData.Alarms ??= [];
  83. deviceData.Alarms.Clear();
  84. foreach (var item in alarm)
  85. deviceData.Alarms.Add(item.Adapt<Alarm_VM>());
  86. });
  87. return Task.FromResult(true);
  88. }
  89. }