You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

6.0 KiB

统计配置功能实现说明

概述

本功能实现了通过StatisticsController动态控制统计消息中的samplesrf参数,支持根据IP地址为不同客户端设置不同的统计配置。

功能特性

1. 全局统计配置

  • 设置默认的samplesrf
  • 所有未配置特定参数的客户端将使用全局默认值

2. 客户端特定配置

  • 根据客户端名称或IP地址设置特定的统计参数
  • 支持启用/禁用配置
  • 可添加描述信息

3. 动态配置管理

  • 通过Web界面实时修改配置
  • 配置自动保存到statistics_config.json文件
  • 支持配置列表查看和编辑
  • 支持配置导入/导出功能

页面结构

两个独立页面:

  1. Statistics/Index.cshtml - 统计数据监控页面

    • 实时统计数据展示
    • 客户端状态监控
    • SSE实时数据推送
    • 小区详细信息查看
  2. Statistics/Config.cshtml - 统计配置管理页面

    • 全局配置管理
    • 客户端特定配置
    • 配置列表管理
    • 配置导入/导出

文件结构

新增文件

  • Models/StatisticsConfig.cs - 统计配置模型
  • statistics_config.json - 统计配置文件
  • Views/Statistics/Config.cshtml - 统计配置管理页面

修改文件

  • Services/LTEClientWebSocket.cs - 添加统计配置支持
  • Services/WebSocketManagerService.cs - 添加配置管理功能
  • Controllers/StatisticsController.cs - 添加配置管理API和Config方法
  • Views/Shared/_Layout.cshtml - 添加导航菜单链接

核心实现

1. 统计配置模型

public class StatisticsConfig
{
    public string IpAddress { get; set; } = string.Empty;
    public string ClientName { get; set; } = string.Empty;
    public bool EnableSamples { get; set; } = false;
    public bool EnableRf { get; set; } = false;
    public bool IsEnabled { get; set; } = true;
    public string Description { get; set; } = string.Empty;
}

public class GlobalStatisticsConfig
{
    public bool DefaultSamples { get; set; } = false;
    public bool DefaultRf { get; set; } = false;
    public List<StatisticsConfig> ClientConfigs { get; set; } = new List<StatisticsConfig>();
}

2. WebSocket客户端配置

LTEClientWebSocket类中添加了统计配置字段和方法:

// 统计配置相关字段
private bool _enableSamples = false;
private bool _enableRf = false;

// 设置统计配置
public void SetStatisticsConfig(bool enableSamples, bool enableRf)
{
    _enableSamples = enableSamples;
    _enableRf = enableRf;
}

// 在UpdateStats方法中使用配置
var msg = new JObject { 
    ["message"] = "stats", 
    ["samples"] = _enableSamples, 
    ["rf"] = _enableRf 
};

3. 配置管理服务

WebSocketManagerService中添加了配置管理功能:

// 加载和保存配置
private void LoadStatisticsConfig()
private void SaveStatisticsConfig()

// 配置管理方法
public GlobalStatisticsConfig GetGlobalStatisticsConfig()
public void SetGlobalStatisticsConfig(GlobalStatisticsConfig config)
public StatisticsConfig? GetClientStatisticsConfig(string clientName)
public void SetClientStatisticsConfig(StatisticsConfig config)
public StatisticsConfig? GetStatisticsConfigByIp(string ipAddress)

// 应用配置到客户端
private void UpdateClientStatisticsConfig(string clientName)
private void UpdateAllClientsStatisticsConfig()

4. API接口

StatisticsController中添加了配置管理API:

[HttpGet] GetGlobalStatisticsConfig()
[HttpPost] SetGlobalStatisticsConfig([FromBody] GlobalStatisticsConfig config)
[HttpGet] GetClientStatisticsConfig(string clientName)
[HttpPost] SetClientStatisticsConfig([FromBody] StatisticsConfig config)
[HttpGet] GetStatisticsConfigByIp(string ipAddress)
[HttpGet] GetAllClientStatisticsConfigs()
public IActionResult Config() // 配置管理页面

使用方法

1. 访问统计数据页面

  • 通过导航菜单点击"统计数据"或访问 /Statistics/Index
  • 查看实时统计数据、客户端状态、小区信息等

2. 访问配置管理页面

  • 通过导航菜单点击"统计配置"或访问 /Statistics/Config
  • 管理全局配置和客户端特定配置

3. 设置全局配置

  • 在"全局统计配置"部分设置默认的samples和rf值
  • 点击"保存配置"按钮保存

4. 设置客户端特定配置

  • 在"客户端特定配置"部分输入客户端信息
  • 设置特定的samples和rf值
  • 点击"保存配置"按钮保存

5. 查看配置列表

  • 在"配置列表"部分可以看到所有已配置的客户端
  • 点击"编辑"按钮可以修改现有配置
  • 支持配置导入/导出功能

配置优先级

  1. 客户端特定配置 - 如果客户端有特定的配置且启用,则使用该配置
  2. 全局默认配置 - 如果客户端没有特定配置,则使用全局默认值
  3. 系统默认值 - 如果都没有配置,则使用系统默认值(samples=false, rf=false)

配置文件格式

{
  "defaultSamples": false,
  "defaultRf": false,
  "clientConfigs": [
    {
      "ipAddress": "192.168.13.12",
      "clientName": "TestClient1",
      "enableSamples": true,
      "enableRf": false,
      "isEnabled": true,
      "description": "测试客户端1 - 启用samples"
    }
  ]
}

页面优势

拆分的好处:

  1. 职责分离 - 数据监控和配置管理各司其职
  2. 用户体验 - 每个页面功能专注,界面简洁
  3. 维护性 - 代码结构清晰,易于维护和扩展
  4. 性能 - 避免单个页面过于复杂,加载更快

注意事项

  1. 配置修改后会自动应用到所有已连接的客户端
  2. 新连接的客户端会自动应用相应的配置
  3. 配置文件会在应用启动时自动加载
  4. 配置修改会实时保存到文件,重启应用后配置仍然有效
  5. 两个页面功能独立,用户可以根据需要分别访问

扩展功能

可以根据需要扩展以下功能:

  • 配置模板管理
  • 配置版本控制
  • 配置变更日志
  • 批量配置操作
  • 配置验证和测试