|
|
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 |
|
|
|
ea18a6ac2c
|
feat: 增强MQTT服务管理功能并优化设备视图
|
2025-10-05 12:11:04 +08:00 |
|
|
|
b85ffdc21b
|
1 feat: 重构数据加载完成事件的处理机制
2
3 - 从IDataLoaderService接口中移除OnLoadDataCompleted事件
4 - 在IEventService接口中新增OnLoadDataCompleted事件和RaiseLoadDataCompleted方法
5 - 在EventService实现类中实现数据加载完成事件的触发功能
6 - 修改DataLoaderService不再直接触发事件,而是通过IEventService来触发
7 - 更新MQTT、OPC UA和S7后台服务以订阅事件服务中的数据加载完成事件
8 - 修改数据加载完成事件的监听方式,统一使用事件服务进行管理
9
10 此重构改进了事件处理的架构设计,使事件管理更加集中和一致。
|
2025-10-05 11:21:05 +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 |
|
|
|
abcaf3e160
|
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:40:36 +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 |
|
|
|
1dbae9c208
|
feat(HistoryProcessor): 添加死区检查功能以优化数据库写入
- 引入 ConcurrentDictionary 作为安全字典来缓存最后写入的数值
- 实现死区检查逻辑,仅当数值变化超过 HistoryDeadband 时才写入数据库
- 添加日志记录,显示因未超过死区值而跳过写入的情况
- 保持原有功能完整性,仅优化不必要的数据库写入操作
|
2025-10-03 20:13:19 +08:00 |
|
|
|
c1818a0c85
|
重构历史记录条数
|
2025-10-03 13:40:06 +08:00 |
|
|
|
30f6019b92
|
修复缩放比例重置的问题
|
2025-10-03 12:39:37 +08:00 |
|
|
|
ee73026b90
|
修复了图表的中文乱码问题
|
2025-10-03 12:11:14 +08:00 |
|
|
|
1858238927
|
实现VariableHistoryView中图表的动态更新
|
2025-10-03 12:10:37 +08:00 |
|
|
|
65c7232efa
|
在VariableHistoryView中增强图表显示
|
2025-10-03 11:58:15 +08:00 |
|
|
|
6ff4ef1c00
|
修改了界面
|
2025-10-03 11:10:35 +08:00 |
|
|
|
3d92737df8
|
修复 DevicesView 中的 DeviceItemTemplate 变量表操作
|
2025-10-03 10:49:13 +08:00 |
|
|
|
d6bb606b0e
|
本次提交包含了两个主要部分:一个关键的数据库并发问题修复,以及一个关于历史记录功能的增强。
1. 数据库并发修复 (Bug Fix):
2. 历史记录功能增强 (Feature):
`
fix(db): 修复数据库并发连接问题并增强历史记录功能
`
正文:
`
本次提交主要包含一个关键的 Bug 修复和一项功能增强。
1. 修复数据库并发问题:
* 重构 SqlSugarDbContext,使其作为 SqlSugarClient 的工厂。
* GetInstance() 方法现在每次调用都会返回一个新的客户端实例,解决了因单例客户端导致的多线程并发访问 MySqlConnection 的问题。
2. 增强历史记录功能:
* 为 VariableHistory 相关的模型、DTO 和实体添加了 NumericValue 属性,以便在历史记录中同时存储数值和字符串值。
* 更新了 HistoryProcessor 以保存 NumericValue。
* 对 ValueConvertProcessor 的逻辑进行了重构,以更好地支持值转换流程。
|
2025-10-03 00:05:17 +08:00 |
|
|
|
f330f67767
|
本次提交对变量管理和数据处理进行了多项重构和优化:
1. 重构变量管理服务:
* 统一了单个和批量变量的更新逻辑,并引入 AutoMapper 进行对象映射,提高了代码的可维护性。
* 增加了对 IsHistoryEnabled 属性变更的跟踪,允许系统对此类变更做出响应。
2. 改进历史记录:
* HistoryProcessor 现在记录变量的 DisplayValue,使得历史数据与用户界面显示的值保持一致。
3. 修正值转换逻辑:
* ValueConvertProcessor 在应用转换公式后,会同时更新变量的 NumericValue 和 DisplayValue,确保了数据在处理链中的一致性。
|
2025-10-02 23:14:40 +08:00 |
|
|
|
745cd43513
|
本次提交对系统进行了两项主要的重构和优化:
1. 重构数据处理链:
* 移除了 CheckValueChangedProcessor 和 LoggingProcessor,简化了数据处理流程。
* 调整了 App.xaml.cs 中的处理器注册顺序,使处理链更加清晰。
2. 优化OPC UA变量变更处理:
* 完全重构了 OpcUaServiceManager 中的 OnVariableChanged 事件处理方法。
* 新逻辑能够根据变量属性(IsActive, PollingInterval 等)的变化,进行精确的、针对单个节点的订阅和取消订阅操作,取代了之前重置整个设备订阅的低效方式。
* 实现了对已删除变量的订阅取消逻辑,确保了资源的正确释放。
这些变更显著提升了 OPC UA 订阅管理的效率和精确性。
|
2025-10-02 22:30:24 +08:00 |
|
|
|
c4a840c8b8
|
本次提交对 OPC UA 服务的接口进行了重构,主要变更如下:
1. 简化接口: OpcUaService 的 SubscribeToNode 和 UnsubscribeFromNode 方法的参数类型从 OpcUaNode 对象更改为 string 类型的节点ID。这使得上层服务在调用时无需构造完整的
OpcUaNode 对象,降低了接口的复杂性。
2. 更新实现: OpcUaService 和 OpcUaServiceManager 的内部实现已更新,以兼容新的基于字符串的接口。
3. 优化变量更新: OpcUaServiceManager 中的 OnVariableChanged
事件处理逻辑被修改,现在能够更细粒度地处理单个变量的激活状态和轮询间隔的变化,避免了不必要的整个设备订阅的重新加载。
|
2025-10-02 22:03:31 +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 |
|
|
|
f3e7793293
|
1. VariableChangedEventArgs 重构:
- 创建了 ActionChangeType 枚举(与 DataChangeType 相同)
- 创建了 VariablePropertyType 枚举标识变量属性类型
- 重构 VariableChangedEventArgs 类,移除 ChangeTime 和 VariableTable 属性
- 将 ChangeType 从 DataChangeType 改为 ActionChangeType
- 添加了 PropertyType 属性用于标识哪个属性发生变化
|
2025-10-02 19:16:44 +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 |
|
|
|
59637ed0a6
|
更新了
|
2025-10-02 17:41:29 +08:00 |
|
|
|
cdfb906112
|
feat(处理器): 增强变量处理链并实现批量更新
- 新增 UpdateDbVariableProcessor 处理器,通过队列和定时器实现数据库的批量更新,以降低负载。
- 重构 ValueConvertProcessor 处理器,使其能够解析 ConversionFormula 公式,计算出最终的 DisplayValue。
- 扩展 IVariableRepository 仓储接口,添加 UpdateBatchAsync 方法,并使用SqlSugar实现高效的批量更新。
- 优化 VariableContext 模型,将 NewValue 类型统一为 string,简化了数据流并提升了类型安全。
|
2025-10-02 17:35:35 +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 |
|
|
|
226c6c7387
|
主要变更:
1. 将内存操作和事件触发逻辑合并到数据库操作方法中
2. 删除了独立的内存操作方法(AddVariableToMemory、UpdateVariableInMemory、RemoveVariableFromMemory)
3. 更新了接口定义,移除了内存操作方法
4. 确保了数据库操作和内存状态保持同步
|
2025-10-01 19:21:48 +08:00 |
|
|
|
e43c0df1cf
|
完成的变更:
1. 向 VariableTableManagementService 添加了 IEventService 依赖
2. 将内存操作和事件触发逻辑合并到数据库操作方法中:
- CreateVariableTableAsync 现在会在数据库创建后自动添加到内存并触发事件
- UpdateVariableTableAsync 现在会在数据库更新后自动更新内存并触发事件
- DeleteVariableTableAsync 现在会在数据库删除后自动从内存移除并触发事件
3. 从类中删除了独立的内存操作方法
4. 从接口中移除了内存操作方法
5. 更新了所有调用这些服务的代码,使它们不再调用已删除的内存方法
6. 扩展了 IEventService 以支持 VariableTableChanged 事件
|
2025-10-01 19:16:47 +08:00 |
|
|
|
438ee0fe58
|
1. 已成功将内存操作直接合并到数据库操作方法中
2. 已删除了独立的内存操作方法
3. 已更新接口定义,去除了内存操作方法
4. 保留了 IEventService 依赖,因为需要用于触发事件
|
2025-10-01 19:06:12 +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 |
|
|
|
c0223b083a
|
实现的功能:
1. 添加了对 EventService.OnDeviceChanged 事件的订阅
2. 实现了 OnDeviceChanged 事件处理方法,根据变化类型进行相应处理
3. 实现了 HandleDeviceAdded 方法,当设备添加时:
- 检查设备协议是否为 OPC UA
- 将设备添加到监控列表
- 如果设备是激活状态,则自动连接设备
|
2025-10-01 18:28:06 +08:00 |
|
|
|
62ce7093cf
|
1. 从 IDeviceManagementService 接口中移除了 OnDeviceChanged 事件
2. 在 DeviceManagementService 中添加了对 IEventService 的依赖
3. 在 DeviceManagementService 的三个内存操作方法中,将直接事件触发改为通过 _eventService.RaiseDeviceChanged 方法触发
4. EventService 本身已经实现了 OnDeviceChanged 事件和对应的 RaiseDeviceChanged 方法
|
2025-10-01 18:15:51 +08:00 |
|
|
|
2dda2029bd
|
1. 重构 DeviceManagementService 类:
- 修改 CreateDeviceWithDetailsAsync 方法,在数据库创建成功后自动添加到内存
- 修改 UpdateDeviceAsync 方法,在数据库更新成功后自动更新内存
- 修改 DeleteDeviceByIdAsync 方法,在数据库删除成功后自动从内存移除
- 修改 ToggleDeviceActiveStateAsync 方法,在数据库切换激活状态后更新内存
2. 更新 DeviceDataService 类:
- 移除了在 AddDevice 方法中的独立 AddDeviceToMemory 调用
- 移除了在 DeleteDevice 方法中的独立 RemoveDeviceFromMemory 调用
- 为 UpdateDevice 方法添加了注释,说明内存自动更新
3. 更新 DeviceMonitoringService 类:
- 在 OnDeviceActiveChanged 方法中使用 Task 运行异步的 UpdateDeviceAsync 调用
4. 更新接口文档:
- 在 IDeviceManagementService 接口中更新了内存操作方法的注释,说明通常由其他操作自动调用
|
2025-10-01 18:09:30 +08:00 |
|
|
|
03e92811dd
|
修复删除设备时的错误
|
2025-10-01 18:02:33 +08:00 |
|
|
|
eb4bee8963
|
修改触发器相关的内容
|
2025-09-23 09:28:08 +08:00 |
|
|
|
2d457ae248
|
修改使用TriggerDataService模式
|
2025-09-23 06:51:29 +08:00 |
|
|
|
87942a45c8
|
修改了加载触发器
|
2025-09-23 05:48:21 +08:00 |
|
|
|
f61c505774
|
修改了添加触发器的对话框界面
|
2025-09-22 23:33:34 +08:00 |
|
|
|
042bc15288
|
继续修改触发器(未完成,修改一个触发器可以添加多个变量)
|
2025-09-22 22:58:51 +08:00 |
|