UIProvider.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. if (deviceInfo.Guid is null)
  22. return Task.FromResult(true);
  23. App.Current.Dispatcher.Invoke(() =>
  24. {
  25. if (!deviceCollection.DeviceList.TryGetValue(deviceInfo.Guid.Value, out DeviceInfo_VM? device) || device is null)
  26. {
  27. device = deviceInfo.Adapt<DeviceInfo_VM>();
  28. deviceCollection.DeviceList[deviceInfo.Guid.Value] = device;
  29. }
  30. else
  31. {
  32. deviceInfo.Adapt(device);
  33. }
  34. if (!deviceCollection.DeviceDataList.TryGetValue(deviceInfo.Guid.Value, out DeviceData_VM? deviceData) || deviceData is null)
  35. {
  36. deviceData = new()
  37. {
  38. DeviceId = deviceInfo.Guid.Value,
  39. DeviceModel = device.DeviceModel,
  40. OtherInfo = [],
  41. Alarms = []
  42. };
  43. deviceCollection.DeviceDataList[deviceInfo.Guid.Value] = deviceData;
  44. }
  45. else
  46. {
  47. deviceData.DeviceModel = device.DeviceModel;
  48. }
  49. });
  50. return Task.FromResult(true);
  51. }
  52. Task<bool> IUIProvider.UpdateDeviceList(IEnumerable<DeviceInfo> device)
  53. {
  54. return Task.FromResult(true);
  55. }
  56. Task<bool> IUIProvider.UpdateRealtimeData(Guid guid, Dictionary<string, object> data)
  57. {
  58. if (!deviceCollection.DeviceDataList.TryGetValue(guid, out DeviceData_VM? deviceData) || deviceData is null)
  59. return Task.FromResult(false);
  60. App.Current.Dispatcher?.Invoke(() =>
  61. {
  62. deviceData.OtherInfo.Clear();
  63. foreach (var item in data)
  64. {
  65. switch (item.Key)
  66. {
  67. case "Status":
  68. deviceData.DeviceStatus = item.Value.ToString();
  69. break;
  70. default:
  71. deviceData.OtherInfo[item.Key] = item.Value;
  72. break;
  73. }
  74. }
  75. });
  76. return Task.FromResult(true);
  77. }
  78. Task<bool> IUIProvider.UpdateRecipeInfo(Recipe recipeInfo)
  79. {
  80. if (!deviceCollection.DeviceDataList.TryGetValue(recipeInfo.DeviceId, out DeviceData_VM? deviceData) || deviceData is null)
  81. return Task.FromResult(false);
  82. App.Current.Dispatcher?.Invoke(() =>
  83. {
  84. deviceData.RecipeInfo = recipeInfo.Adapt<RecipeInfo_VM>();
  85. });
  86. return Task.FromResult(true);
  87. }
  88. Task<bool> IUIProvider.UpdateAlarm(IEnumerable<Alarm> alarm)
  89. {
  90. if (alarm is null || alarm.FirstOrDefault() is not Alarm first)
  91. return Task.FromResult(true);
  92. if (!deviceCollection.DeviceDataList.TryGetValue(first.DeviceID, out DeviceData_VM? deviceData) || deviceData is null)
  93. return Task.FromResult(false);
  94. App.Current.Dispatcher?.Invoke(() =>
  95. {
  96. deviceData.Alarms ??= [];
  97. deviceData.Alarms.Clear();
  98. foreach (var item in alarm)
  99. deviceData.Alarms.Add(item.Adapt<Alarm_VM>());
  100. });
  101. return Task.FromResult(true);
  102. }
  103. }