Files
SecMPS/doc/整合方案/Vol.Pro_统一设备管理_区域树与地图绑定方案_v1.0.md
2026-05-15 23:22:48 +08:00

7.3 KiB
Raw Blame History

Vol.Pro 统一设备管理:区域树 + 设备层级 + 地图绑定方案

版本: v1.0
日期: 2026-05-15
状态: 待确认
前置方案: Vol.Pro_MC4.0_整合方案_v1.0、Vol.Pro_Owl_ZLMediaKit_整合方案_v1.0、IntegrationGateway 方案 A


一、需求定义

1.1 管理端呈现目标

在 web.vite 实现统一设备管理界面,形态为左侧区域树 + 右侧设备列表的左右分栏布局。

┌──────────────────┬───────────────────────────────────────┐
│   左侧:区域树    │   右侧:设备列表(选中区域下的设备)     │
│                  │                                       │
│   📁 厂区        │  ┌ 东北角高位摄像机 █在线  操作↓ ┐    │
│    📁 新库区     │  ├ 人员计数摄像机   █在线  操作↓ ┤    │
│     📁 31号库房 ← 选中  ├ 动环采集器     █在线 [展开▸] ┤    │
│                  │  │  ├ 温湿度探头    26.5℃ █在线  ┤    │
│                  │  │  ├ 空调控制器    制冷  █在线  ┤    │
│                  │  │  ├ 除湿机        关闭  █在线  ┤    │
│                  │  │  └ 紧急报警按钮   正常  █在线  ┤    │
│                  │  └ 电表监测        235V  █在线   ┤    │
└──────────────────┴───────────────────────────────────────┘

1.2 核心需求

  1. 多级区域树:利用现有 warehouse_regions 表(已有 Id/RegionName/ParentId
  2. 设备绑定区域:每个设备通过 RegionId 归属到叶子区域
  3. 设备父子层级:采集网关作为父设备,探头/控制器作为子设备展开
  4. 地图模型绑定:每个设备 MapModelId 字段供 warehouse 三维地图标记
  5. 不同设备不同操作:视频设备显示播放/云台按钮IoT 设备显示实时值/控制

二、数据模型设计

2.1 区域表 warehouse_regions(现有,不变)

字段 类型 说明
Id int (PK) 区域ID
RegionName nvarchar(255) 区域名称
ParentId int? 父级区域ID自引用树

2.2 统一设备主表 Base_Device(修订后新增字段)

字段 类型 说明
AdapterCode nvarchar(50) 来源适配器owl/mc4/hikvision_access
SourceId nvarchar(100) 源系统设备ID
IsParent bit 是否父设备0=叶子, 1=可展开(采集器/NVR
ParentDeviceId uniqueidentifier? 父设备ID自引用
RegionId int? 所属叶子区域IDFK→warehouse_regions.Id
MapModelId nvarchar(100) 三维地图模型ID
MapModelScale float 模型缩放比例
MapModelRotation nvarchar(100) 旋转角度JSON
ExtraData nvarchar(max) 源系统原始数据JSON
LocalOverrides nvarchar(max) 本地覆盖字段JSON
SyncVersion bigint 乐观锁版本号
LastSyncTime datetime 上次同步时间

2.3 层级关系示例

warehouse_regions:
  Id=1, RegionName="厂区",   ParentId=null
  Id=2, RegionName="新库区",  ParentId=1
  Id=3, RegionName="31号库房", ParentId=2

Base_Device:
  DeviceId=A, RegionId=3, IsParent=0  → 东北角高位摄像机
  DeviceId=B, RegionId=3, IsParent=0  → 人员计数摄像机
  DeviceId=C, RegionId=3, IsParent=1  → 动环采集器(父设备)
  DeviceId=D, RegionId=3, ParentDeviceId=C → 温湿度探头
  DeviceId=E, RegionId=3, ParentDeviceId=C → 空调控制器
  DeviceId=F, RegionId=3, ParentDeviceId=C → 除湿机

三、MC4.0 同步到区域树

MC4.0 对象树中 type=1(区域节点)→ 与 warehouse_regions 名称匹配后自动绑区。type=2(设备节点)→ 写入 Base_DeviceRegionId 设为所属叶子区域。

关键决策Vol.Pro 区域不由 MC4.0 全量控制。管理员可手动创建区域同步不覆盖。Owl 设备无区域概念,同步后 RegionId=NULL,由管理员手动分配。


四、前端实现方案

4.1 文件结构

web.vite/src/views/warehouse/
└── DeviceManager/               ★ 新建目录
    ├── index.vue                 # 主页面(左树右表)
    ├── components/
    │   ├── RegionTree.vue        # el-tree 区域树
    │   ├── DeviceTable.vue       # el-table 可展开设备列表
    │   ├── DeviceEditDialog.vue  # 编辑弹出框
    │   ├── MapBindingPanel.vue   # 地图模型绑定面板
    │   ├── VideoDeviceActions.vue
    │   ├── IoTDeviceActions.vue
    │   └── DeviceSyncToolbar.vue
    └── api/deviceManager.js

web.vite/src/router/index.js      # 新增 /device-manager 路由

4.2 关键组件逻辑

RegionTree.vue — el-tree 加载 /api/DeviceManager/GetRegionTree,每个节点显示设备数量徽标。

DeviceTable.vue — el-table 使用 tree-props="{ children: 'subDevices', hasChildren: 'IsParent' }" 实现可展开行。操作列按 DeviceCategory 分发不同按钮组件。

MapBindingPanel.vue — 编辑弹出框的一个 Tab含 MapModelId 下拉选择、缩放/旋转输入、经纬度输入。

4.3 与生成页面关系

Base_Device 的标准 CRUD 生成页面保留作为兜底(数据批量维护)。在其 extension 中加跳转按钮:

// extension/warehouse/Base_Device/Base_Device.jsx
onInit() {
  this.buttons.unshift({
    name: '设备管理',
    icon: 'el-icon-s-grid',
    type: 'primary',
    onClick: () => this.$router.push('/device-manager')
  });
}

五、后端 API

接口 说明
GET /api/DeviceManager/GetRegionTree 区域树(含设备数量)
GET /api/DeviceManager/GetDevicesByRegion?regionId=3 区域下设备列表(含子设备)
PUT /api/DeviceManager/{deviceId} 更新设备(含地图绑定字段)

Controller 写在 Controllers/Warehouse/Partial/DeviceManagerController.cs(扩展目录,不被代码生成器覆盖)。


六、操作按钮矩阵

DeviceCategory 操作按钮
1-视频监控 实时预览、云台控制、查看回放、获取快照、同步通道
2-IoT采集 查看实时数据、设备控制、刷新点位、查看告警
3-门禁 远程开门、查看记录、查看告警
4-道闸 抬杆、落杆、查看记录
5-报警 查看告警、布防/撤防

父设备IsParent=1额外显示展开/收起子设备。


七、实施变更汇总

层级 变更项 复杂度
数据库 Base_Device 新增8个字段
后端 DeviceManagerController 新建
后端 SyncEngine 区域匹配逻辑
前端 6个新Vue组件 + 路由
Gateway Mc4Adapter 对象树区域提取

预计工期5-7 个工作日前后端各2-3天联调1天


文档结束
关联: Vol.Pro_MC4.0_整合方案_v1.0、Vol.Pro_Owl_ZLMediaKit_整合方案_v1.0、Vol.Pro_整合项目_实施方案_v1.0