Commit Graph

140 Commits

Author SHA1 Message Date
2ada4246ff bugfix:修复Mqtt服务器详情页变量值不更新的问题,修复修改Mqtt别名后台不更新的问题,重新调整了别名的架构 2025-10-11 18:07:01 +08:00
6daca3eaf6 feat(mqtt): 实现MQTT别名批量修改功能
主要改动:
  - 在 MqttServerDetailView 中,允许用户在关联变量列表中进行多项选择。
  - 修改了 ModifyAlias 命令,使其能够处理多个选中项,并调用批量编辑对话框。
  - 新增了 MqttAliasBatchEditDialogViewModel 的构造函数,使其可以接收并编辑已存在的别名列表。
  - 通过 SelectedItemsBehavior 辅助类,实现了 DataGrid 中 SelectedItems 的双向绑定。
  - 更新了相关视图和视图模型,以支持新的批量操作流程。
2025-10-07 19:04:30 +08:00
b753e5ea73 refactor:删除了DeviceDto,VariableDto,VariableTableDto,改为使用DMS.Core中的实体 2025-10-07 17:51:24 +08:00
94ad940e03 refactor:删除MqttServerDto,将使用MqttServerDto的全部转为使用MqttServer 2025-10-06 19:32:45 +08:00
c85f89db33 refactor:将所有的ItemViewMdoel的名字删除ViewModel,并将命名空间调整为DMS.WPF.ItemViewModel. 2025-10-06 18:17:56 +08:00
6cff70cd87 refactor: 将VariableMqttAlias改为MqttAlias,将VariableMqttAliasItemViewModel改为MqttAliasItem 2025-10-06 17:39:03 +08:00
0965aa1289 修复了错误 2025-10-06 17:03:06 +08:00
1f0495fbe7 1 feat: 优化MQTT服务器详情页面功能
2
    3 - 修改MQTT发布处理器,使用DisplayValue代替DataValue进行数据发布
    4 - 在MqttServiceManager中使用DisplayValue进行消息内容替换
    5 - 增加MQTT服务器编辑功能,允许用户修改服务器配置
    6 - 添加变量MQTT发布别名修改功能,支持右键菜单修改发布名称
    7 - 实现变量值变化事件监听,实时更新UI显示
    8 - 优化MQTT服务器详情页面UI,改进变量关联数据显示
    9 - 修复变量表关联MQTT服务器时的逻辑问题
   10 - 完善导航生命周期事件处理
2025-10-05 19:57:58 +08:00
7a2b67991c 1 feat: 改进MQTT服务器详情页面UI和功能
2
   3 - 将MQTT服务器详情页面的文本框改为只读模式,使用TextBlock显示
   4 - 为MQTT服务器详情区域添加图标和优化间距,提升视觉效果
   5 - 实现顶部导航栏和CommandBar功能,支持返回列表、刷新等操作
   6 - 添加Reload和NavigateToMqtts命令,增强页面功能
   7 - 重构ViewModel,添加MQTT管理、数据存储和导航服务依赖
   8 - 实现页面导航参数处理,根据ID加载对应的MQTT服务器信息
   9 - 使用DockPanel和ScrollViewer优化页面布局,提升用户体验
2025-10-05 17:50:41 +08:00
6b55211dbf feat: 菜单管理重构及MQTT服务器功能增强 2025-10-05 17:07:17 +08:00
80ea47e627 重构MQTT事件处理和激活状态管理功能 2025-10-05 14:45:41 +08:00
b96101dea6 feat: 实现 MQTT 服务事件驱动机制,实时响应服务器变化 2025-10-05 12:52:22 +08:00
a6fc543e4f 1 feat(mqtt): 实现MQTT服务器状态管理与事件系统
2
    3 1. 在MqttServer和MqttServerDto模型中添加IsConnect属性,用于跟踪连接状态
    4 2. 重构MqttManagementService服务,使用事件驱动方式管理服务器状态变化
    5 3. 实现MqttServerChangedEventArgs事件参数类,支持区分不同变更类型
    6 4. 在IEventService中添加OnMqttServerChanged事件,实现事件通知机制
    7 5. 优化数据存储结构,将MqttServers从ObservableCollection改为ObservableDictionary
    8 6. 更新MqttServiceManager以正确处理连接状态和事件触发
    9 7. 在WPF层更新UI以响应服务器状态变化
   10 8. 删除不再需要的Helper类(DataServicesHelper, MessageHelper, SiemensHelper)
   11 9. 在NLog配置中添加调试器输出目标以便调试
   12 10. 完善VariableHistoryViewModel防止空引用异常
2025-10-05 00:28:25 +08:00
d4562e600e 1 feat: 添加变量导入模板配置和工厂模式实现
2
    3 -
      在AppSettings中添加VariableImportTemplate配置项,用于设置变量导入的默认参数(IsActive、PollingIn
      terval、IsHistoryEnabled、HistoryDeadband)
    4 - 修改AppSettings.Load()方法,优化配置加载逻辑
    5 -
      实现IVariableItemViewModelFactory和VariableItemViewModelFactory,使用工厂模式创建VariableItemVie
      wModel实例
    6 - 在ImportOpcUaDialogViewModel中使用工厂创建VariableItemViewModel实例,以应用默认配置
    7 -
      在SettingViewModel和SettingView中添加变量导入设置界面和相关属性(VariablePollingInterval、Variab
      leIsActive、VariableIsHistoryEnabled、VariableHistoryDeadband)
    8 - 移除VariableItemViewModel构造函数中的轮询间隔默认值设置,改由工厂模式设置
    9 - 优化SplashViewModel中配置加载逻辑
   10 - 移除MainView.xaml.cs中已注释的代码
   11 - 调整VariableTableView.xaml的UI布局和菜单结构
   12 - 注册IVariableItemViewModelFactory服务

  这些修改主要实现了几个关键功能:
   1. 引入了工厂模式来创建VariableItemViewModel实例,确保所有新创建的变量项都应用默认配置
   2. 添加了变量导入模板设置,用户可以在设置界面自定义导入变量的默认属性
   3. 对相关UI进行了调整和优化
2025-10-04 20:46:39 +08:00
ec1f94a898 1 refactor(config): 将AppSettings移至Application层并更新配置结构
2
    3 - 将AppSettings从DMS.Infrastructure移至DMS.Application
    4 - 将DatabaseSettings重命名为AppSettings.Database并更新所有引用
    5 - 将配置文件从appSettings.json更改为dms_config.json
    6 - 更新所有项目引用以使用新的AppSettings命名空间
    7 - 移除DI容器中的SqlSugarDbContext直接实例化
    8 - 添加Material Design Icons字体并更新设置视图UI
    9 - 通过移除不必要的变量映射更新来优化S7服务
   10 - 将数据库连接字符串属性名从Database更新为DbName
2025-10-04 18:42:12 +08:00
5eae862d5f feat.修复新添加设备添加变量OpcServer报错问题,修改初始化菜单的内容 2025-10-04 00:42:59 +08:00
24e4259e31 feat.新添加设备的删除变量表界面不更新的问题。 2025-10-03 23:31:04 +08:00
f86a2abed6 1 feat(navigation): 统一添加返回按钮并调整导航宽度
2
   3 - 为VariableTableView和DeviceDetailView添加返回上级页面的按钮
   4 - 将VariableHistoryView的返回按钮改为图标样式,保持一致性
   5 - 调整MainView中NavigationView的展开宽度,从500减小到200
   6 - 清理未使用的命名空间引用
2025-10-03 23:06:04 +08:00
609c4741c1 feat(navigation): 重构导航系统引入导航参数和类型
- 新增NavigationType枚举定义导航类型
 - 新增NavigationParameter类用于传递导航参数
 - 重构INavigationService和INavigatable接口
 - 更新NavigationService实现以支持新的导航方式
 - 更新DeviceDetailViewModel, DevicesViewModel, VariableHistoryViewModel, VariableTableViewModel, MqttsViewModel等
 - 使ViewModelBase实现INavigatable接口
 - 更新MainView中的菜单选择导航逻辑
 - 优化VariableHistoryView界面布局,添加返回变量表按钮
2025-10-03 22:28:58 +08:00
c1818a0c85 重构历史记录条数 2025-10-03 13:40:06 +08:00
30f6019b92 修复缩放比例重置的问题 2025-10-03 12:39:37 +08:00
1858238927 实现VariableHistoryView中图表的动态更新 2025-10-03 12:10:37 +08:00
65c7232efa 在VariableHistoryView中增强图表显示 2025-10-03 11:58:15 +08:00
3d92737df8 修复 DevicesView 中的 DeviceItemTemplate 变量表操作 2025-10-03 10:49:13 +08:00
acd397ea55 特性:为 OpcUaServiceManager 和 S7ServiceManager 添加 VariableChanged 事件订阅
- OpcUaServiceManager 更新:
     - 添加了 OnVariableChanged 事件订阅
     - 实现了 OnVariableChanged 事件处理方法,根据变量属性变化类型进行相应处理
     - 对于 OPC UA Node ID、更新类型或轮询间隔变化,重新设置设备订阅
     - 对于激活状态变化,更新设备上下文中的变量列表
     - 对于变量删除,从设备上下文中移除对应变量

   - S7ServiceManager 更新:
     - 添加了 OnVariableChanged 事件订阅
     - 实现了 OnVariableChanged 事件处理方法,根据变量属性变化类型进行相应处理
     - 对于 S7 地址变化,更新设备上下文中的变量映射
     - 对于激活状态变化,更新设备上下文中的变量列表
     - 对于变量删除,从设备上下文中移除对应变量

   - 改进系统响应性:
     - 使 OPC UA 和 S7 服务能够实时响应变量属性变更
     - 提高了系统在变量配置更改时的动态适应能力
     - 确保服务能够根据变量状态变化及时更新其内部数据结构
2025-10-02 19:47:29 +08:00
3958275367 重构:修改 VariableValueChangedEventArgs 以包含 VariableDto 对象
- 修改 VariableValueChangedEventArgs 类:
     - 移除了 VariableId、VariableName、NewValue 和 UpdateTime 属性
     - 添加了 Variable(VariableDto 类型)和 OldValue 属性
     - 更新了构造函数以接收 VariableDto 对象和旧值

   - 更新事件触发代码:
     - 修改了 UpdateViewProcessor.cs 中的事件触发代码,改为传递 VariableDto 对象和旧值

   - 更新事件处理代码:
     - 修改了 DataEventService.cs 中的事件处理逻辑,改为访问 e.Variable 属性
     - 修改了 VariableHistoryViewModel.cs 中的事件处理逻辑,改为使用 e.Variable 属性
2025-10-02 18:47:45 +08:00
e5e2e8de5b 功能增强:添加 InputDialog 并改进变量管理功能
- 新增 InputDialog 组件:
     - 添加了 InputDialog.xaml 和 InputDialog.xaml.cs 文件
     - 创建了 InputDialogViewModel.cs,继承自 DialogViewModelBase<string?>
     - 实现了可重用的输入对话框,支持自定义标题、消息、标签和占位符

   - 完善变量管理服务:
     - 在 MappingProfile.cs 中添加了 VariableDto 到 VariableDto 的映射配置
     - 在 VariableManagementService.cs 中注入 IMapper 依赖项
     - 修改了 UpdateVariablesAsync 方法,使用 AutoMapper 进行更安全的更新操作

   - 扩展变量表功能:
     - 在 VariableTableViewModel.cs 中添加了 ModifyConversionFormula 命令
     - 实现了批量修改变量转换公式功能,支持用户通过对话框输入新公式
     - 添加了相应的 UI 通知和错误处理
     - 在 VariableTableView.xaml 中添加了"修改数值转换公式"菜单项

   - 集成 InputDialog 到对话框服务:
     - 在 DialogService.cs 中注册了 InputDialogViewModel 和 InputDialog 的映射关系
2025-10-02 18:34:23 +08:00
2a98b40bfe Refactor:
- 重构了 VariableTableDataService 中的 AddVariableTable 方法,使其返回值从 bool 变为新表的 ID
  (int)。这使得服务层更加健壮,并能向调用方提供新创建实体的确切ID。

  Fix:
  - 修复了 DeviceDetailViewModel 在创建变量表后UI不自动更新的Bug。现在视图模型会正确地将新表添加到UI集合中,确保了界面的即时刷新。

  Feat:
  - 为 DeviceDetailViewModel 添加了 IsBusy
  状态。现在“添加”、“编辑”和“删除”等异步操作会更新此状态,防止了用户重复点击,并允许UI在处理期间显示加载指示,提升了用户体验。
2025-10-02 13:19:55 +08:00
1a666b79c8 1. 在 AppSettings 类中添加了 DefaultPollingInterval 属性,用于存储全局默认轮询间隔值
2. 更新了 SettingViewModel 以包含对轮询间隔设置的支持,允许用户在设置页面中修改该值
   3. 修改了 VariableItemViewModel,使其在初始化时从 AppSettings 加载默认轮询间隔值
   4. 更新了 SettingView.xaml,在设置页面的"通用设置"部分添加了轮询间隔配置项
2025-10-02 12:35:42 +08:00
6e9f7c4a44 feat: 为多个服务添加日志记录功能并改进批量导入变量处理
- 为OpcUaServiceManager添加日志记录功能,并实现OnBatchImportVariables事件处理器
  - 为OpcUaService添加全面的日志记录,包括连接、断开、读写节点等操作
  - 为DataEventService添加日志记录功能,跟踪数据加载和变量值变更事件
  - 为S7ServiceManager添加OnBatchImportVariables事件处理器,处理批量导入变量事件
  - 在VariableTableViewModel中改进变量添加逻辑,确保变量被正确添加到数据存储中
  - 在VariableManagementService中完善变量表信息的填充逻辑
2025-10-02 11:26:50 +08:00
078d7b3903 1. 创建了 BatchImportVariablesEventArgs 事件参数类
2. 在 IEventService 接口中添加了 OnBatchImportVariables 事件和 RaiseBatchImportVariables 方法
   3. 在 EventService 实现中添加了对新事件的支持
   4. 在 IVariableManagementService 接口中添加了 BatchImportVariablesAsync 方法
   5. 在 VariableManagementService 中实现了该方法,并在批量导入后触发事件
   6. 更新了 VariableTableViewModel 以使用 IVariableManagementService 而不是 IVariableAppService
2025-10-01 20:13:30 +08:00
4e63ebcb94 修复添加变量切换变量表界面后不显示的问题 2025-10-01 19:41:30 +08:00
e43c0df1cf 完成的变更:
1. 向 VariableTableManagementService 添加了 IEventService 依赖
   2. 将内存操作和事件触发逻辑合并到数据库操作方法中:
      - CreateVariableTableAsync 现在会在数据库创建后自动添加到内存并触发事件
      - UpdateVariableTableAsync 现在会在数据库更新后自动更新内存并触发事件
      - DeleteVariableTableAsync 现在会在数据库删除后自动从内存移除并触发事件
   3. 从类中删除了独立的内存操作方法
   4. 从接口中移除了内存操作方法
   5. 更新了所有调用这些服务的代码,使它们不再调用已删除的内存方法
   6. 扩展了 IEventService 以支持 VariableTableChanged 事件
2025-10-01 19:16:47 +08:00
e84a202438 主要变更:
1. 创建了 DeviceStateType 枚举来区分状态类型(激活/连接)
   2. 创建了 DeviceStateChangedEventArgs 统一事件类
   3. 更新了 IEventService 接口,将两个事件合并为一个
   4. 更新了 EventService 实现以支持新事件
   5. 更新了所有相关服务(DeviceMonitoringService, OpcUaServiceManager, S7ServiceManager, DeviceDataService, DeviceItemViewModel)

  关键优点:
   - 减少了事件类型的数量,简化了事件系统
   - 为设备状态变化提供了一致的处理方式
   - 保持了向后兼容性,将旧类标记为 [Obsolete]
2025-10-01 18:41:05 +08:00
03e92811dd 修复删除设备时的错误 2025-10-01 18:02:33 +08:00
2d457ae248 修改使用TriggerDataService模式 2025-09-23 06:51:29 +08:00
f61c505774 修改了添加触发器的对话框界面 2025-09-22 23:33:34 +08:00
042bc15288 继续修改触发器(未完成,修改一个触发器可以添加多个变量) 2025-09-22 22:58:51 +08:00
0f869cf410 将图形库替换为LiveChartsCore.SkiaSharpView.WPF 2025-09-22 06:24:08 +08:00
bcdb119d11 修改画面 2025-09-19 07:27:56 +08:00
f7ee80bcdd 简单实现图表 2025-09-17 17:18:10 +08:00
e023bf3b55 初步完成图表功能 2025-09-17 14:13:48 +08:00
82c355a392 初步完成单个变量的历史记录查询 2025-09-17 13:32:29 +08:00
74fde6bd8b 完成S7变量启用和停用更新 2025-09-16 14:42:23 +08:00
3102938f92 将设备列表,变量表列表,变量列表从ObservableCollection更换为字典类型的ObservableDictionary 2025-09-16 13:05:37 +08:00
ffa24f861e 修改了目录架构 2025-09-16 12:29:09 +08:00
4773e87886 修改批量导入变量返回实体,防止Io为0的问题 2025-09-15 13:12:14 +08:00
d923b6a116 修改了设备列表的界面 2025-09-14 20:46:31 +08:00
ebf67b98fa 修改了触发器的问题 2025-09-14 19:58:18 +08:00
a8d240b4f9 继续修改触发器 2025-09-14 19:13:40 +08:00