Files
smart-crop-ui/src/LOAD_DEVICE_LIBRARY_NEW.md

15 KiB
Raw Blame History

🎉 新增"负载设备"功能 - 设备库管理

📅 创建时间

2025-10-16

🎯 功能背景

原架构的问题

之前的流程 :

1. 负载类型 → 定义设备类别
2. 负载参数 → 定义参数模板
3. 负载管理 → 挂载时创建设备

问题:

  • 挂载时创建设备,设备没有独立生命周期
  • 设备无法在不同农机间流转
  • 无法管理设备库存状态
  • 设备参数每次挂载都要重新配置

新架构的改进

正确的流程 :

1. 负载类型 → 定义设备类别(如摄像头、北斗终端)
   ↓
2. 负载参数 → 为类别定义参数模板IP地址、端口等
   ↓
3. 负载设备(新增!)→ 在设备库中添加设备实例
   - 摄像头-001、摄像头-002
   - 根据参数模板配置设备参数
   - 管理设备状态:待挂载、已挂载、维护中
   ↓
4. 负载管理 → 从设备库选择设备挂载到农机
   - 不创建新设备
   - 选择现有设备
   - 建立挂载关系

优点:

  • 设备有独立的生命周期管理
  • 设备可以在不同农机间流转
  • 统一管理设备库存和状态
  • 设备参数一次配置,多次使用

新增功能

1. 负载设备管理(设备库)

位置: 负载管理 > 负载设备

功能:

  • 管理所有设备实例
  • 每个设备有唯一序列号
  • 设备参数一次配置,长期使用
  • 设备状态跟踪

界面:

┌─────────────────────────────────────────────────────────────┐
│ 负载设备                                        [+ 添加设备]│
│ 管理设备库中的所有设备实例                                 │
├─────────────────────────────────────────────────────────────┤
│ 设备名称 │ 类型 │ 类别 │ 序列号 │ 状态 │ 挂载位置 │ 操作 │
├─────────────────────────────────────────────────────────────┤
│ 摄像头-001│摄像头│摄像  │CAM-001│待挂载│   -     │✏️ 🗑️ │
│ 摄像头-002│摄像头│摄像  │CAM-002│已挂载│拖拉机-01│✏ 🗑️ │
│ 北斗-001  │北斗  │北斗  │BD-001 │待挂载│   -     │✏️ 🗑️ │
│ 油耗-001  │油耗  │油耗  │FUEL-01│维护中│   -     │✏️ 🗑️ │
└─────────────────────────────────────────────────────────────┘

2. 设备状态管理

支持的设备状态:

状态 说明 颜色 可操作
待挂载 (available) 设备可用,等待挂载 绿色 可挂载、编辑、删除
已挂载 (mounted) 设备正在使用 蓝色 可拆卸
维护中 (maintenance) 设备维修保养 黄色 可编辑
已损坏 (damaged) 设备损坏不可用 红色 可编辑、删除
已退役 (retired) 设备报废退役 灰色 可删除

状态流转:

待挂载 → 已挂载 → 待挂载(拆卸后)
   ↓        ↓
维护中    维护中
   ↓        ↓
已损坏    已损坏
   ↓        ↓
已退役    已退役

3. 设备信息管理

基本信息:

  • 设备类型(选择已定义的类型)
  • 设备名称
  • 序列号(唯一标识)
  • 采购日期
  • 保修期限
  • 设备状态
  • 备注

设备参数:

  • 根据设备类型的参数模板自动生成配置表单
  • 参数一次配置,长期使用
  • 挂载时不需要重新配置

关联信息:

  • 当前挂载的农机(如果已挂载)
  • 创建人和创建时间
  • 更新时间

📊 新的4个Tab布局

┌─────────────────────────────────────────────────────────────┐
│ 农机负载管理                                                 │
├─────────────────────────────────────────────────────────────┤
│ [负载类型] [负载参数] [负载设备] [负载管理]                 │
└─────────────────────────────────────────────────────────────┘

Tab 1: 负载类型

功能: 定义设备类别

示例数据:

  • 高清摄像头(摄像头类别)
  • 北斗终端(北斗终端类别)
  • 油耗传感器(油耗传感器类别)

Tab 2: 负载参数

功能: 为设备类别定义参数模板

示例:

  • 摄像头参数模板IP地址、端口、通道号、分辨率、帧率
  • 北斗终端参数模板:上报间隔、精度模式、数据格式
  • 油耗传感器参数模板:采集频率、上传频率、报警阈值

Tab 3: 负载设备(新增!)

功能: 管理设备库中的设备实例

示例数据:

  • 摄像头-001序列号 CAM-001状态待挂载
  • 摄像头-002序列号 CAM-002状态已挂载拖拉机-01
  • 北斗-001序列号 BD-001状态待挂载

Tab 4: 负载管理

功能: 挂载/拆卸设备

流程:

  1. 选择农机
  2. 选择设备(从设备库选择"待挂载"状态的设备)
  3. 挂载
  4. 设备状态变为"已挂载"

🔄 完整工作流程

流程1: 添加新设备到设备库

1. 进入"负载设备"Tab
   ↓
2. 点击"添加设备"
   ↓
3. 填写设备信息:
   ┌──────────────────────────────┐
   │ 设备类型: [▼ 高清摄像头]     │
   │ 设备名称: [摄像头-001]       │
   │ 序列号:   [CAM-001]          │
   │ 采购日期: [2024-01-15]       │
   │ 保修期限: [2025-01-15]       │
   │                              │
   │ === 设备参数配置 ===          │
   │ IP地址 *:  [192.168.1.100]   │
   │ 端口 *:    [554]             │
   │ 通道号 *:  [1]               │
   │ 分辨率:    [▼ 1080P]         │
   │ 帧率:      [25] fps          │
   │ 夜视功能:  [▼ 是]            │
   │                              │
   │         [取消]    [添加]     │
   └──────────────────────────────┘
   ↓
4. 点击"添加"
   ↓
5. ✅ 设备添加到设备库
   - 状态: 待挂载
   - 参数已配置

流程2: 从设备库挂载设备

1. 进入"负载管理"Tab
   ↓
2. 选择农机(如:拖拉机-01
   ↓
3. 点击"挂载设备"
   ↓
4. 从设备库选择设备:
   ┌──────────────────────────────┐
   │ 选择设备 *                    │
   │ [▼ 摄像头-001 (CAM-001)]    │ ← 只显示"待挂载"状态的设备
   │                              │
   │ 设备类型: 高清摄像头          │
   │ 设备状态: 待挂载              │
   │                              │
   │ 挂载位置:                     │
   │ [前方          ]             │
   │                              │
   │ 备注:                        │
   │ [              ]             │
   │                              │
   │         [取消]    [挂载]     │
   └──────────────────────────────┘
   ↓
5. 点击"挂载"
   ↓
6. ✅ 挂载成功
   - 设备状态: 待挂载 → 已挂载
   - 当前挂载位置: 拖拉机-01
   - 创建挂载记录

流程3: 拆卸设备

1. 在"负载管理"中选择已挂载的设备
   ↓
2. 点击"拆卸"
   ↓
3. 填写拆卸信息:
   ┌──────────────────────────────┐
   │ 确认拆卸设备                  │
   │                              │
   │ 设备: 摄像头-001              │
   │ 农机: 拖拉机-01               │
   │                              │
   │ 拆卸原因:                     │
   │ [设备维护          ]         │
   │                              │
   │ 拆卸后状态:                   │
   │ [▼ 待挂载]                   │
   │                              │
   │         [取消]    [确认拆卸] │
   └──────────────────────────────┘
   ↓
4. 点击"确认拆卸"
   ↓
5. ✅ 拆卸成功
   - 设备状态: 已挂载 → 待挂载(或维护中)
   - 当前挂载位置: 清空
   - 更新挂载记录

流程4: 设备流转

场景: 摄像头-001 从拖拉机-01 转移到拖拉机-02

1. 在拖拉机-01上拆卸摄像头-001
   ↓
   设备状态: 已挂载 → 待挂载
   ↓
2. 在拖拉机-02上挂载摄像头-001
   ↓
   设备状态: 待挂载 → 已挂载
   当前挂载位置: 拖拉机-02
   ↓
3. ✅ 设备完成流转
   - 设备参数保持不变
   - 挂载历史记录完整

📋 数据结构

DeviceInstance设备实例

interface DeviceInstance {
  id: string;
  deviceTypeId: string;          // 设备类型ID
  
  // 设备信息
  deviceName: string;             // 设备名称
  serialNumber: string;           // 序列号(唯一)
  purchaseDate?: string;          // 采购日期
  warrantyExpiry?: string;        // 保修期限
  
  // 设备参数(根据设备类型的参数模板配置)
  parameters: Record<string, any>;
  
  // 设备状态
  status: 'available' | 'mounted' | 'maintenance' | 'damaged' | 'retired';
  currentMachineryId?: string;    // 当前挂载的农机ID
  
  // 其他
  remarks?: string;
  createdBy: string;
  createdAt: string;
  updatedAt: string;
}

MountRecord挂载记录

interface MountRecord {
  id: string;
  machineryId: string;            // 农机ID
  deviceId: string;               // 设备实例ID
  
  // 挂载信息
  mountedAt: string;              // 挂载时间
  unmountedAt?: string;           // 拆卸时间
  status: 'mounted' | 'unmounted';
  
  // 备注
  mountRemarks?: string;          // 挂载备注
  unmountRemarks?: string;        // 拆卸备注
  
  // 操作记录
  mountedBy: string;
  unmountedBy?: string;
  createdAt: string;
  updatedAt: string;
}

💾 数据存储

LocalStorage Keys

新增:

'smart_agriculture_device_library'      // 设备库
'smart_agriculture_mount_records'       // 挂载记录

已有:

'smart_agriculture_device_types'        // 设备类型
'smart_agriculture_mounted_devices'     // 挂载设备(逐步迁移)

🎨 界面特性

1. 设备状态彩色徽章

[待挂载]   ← 绿色
[已挂载]   ← 蓝色
[维护中]   ← 黄色
[已损坏]   ← 红色
[已退役]   ← 灰色

2. 设备类别徽章

[摄像头]     ← 蓝色
[北斗终端]   ← 绿色
[油耗传感器] ← 橙色

3. 序列号显示

CAM-001     ← 代码块样式
BD-001
FUEL-01

4. 操作按钮状态

状态: 待挂载
  ✅ 可编辑
  ✅ 可删除
  ✅ 可挂载

状态: 已挂载
  ✅ 可编辑
  ❌ 不可删除(需先拆卸)
  ✅ 可拆卸

状态: 维护中/已损坏
  ✅ 可编辑
  ✅ 可删除
  ❌ 不可挂载

💡 使用说明

1. 设备命名规范

建议格式: 设备类型-编号

✅ 好的命名:
- 摄像头-001
- 摄像头-002
- 北斗-001
- 油耗-001

❌ 不好的命名:
- 设备1
- 新设备
- test

2. 序列号规范

建议格式: 类型缩写-编号

✅ 好的序列号:
- CAM-001
- CAM-002
- BD-001
- FUEL-001

❌ 不好的序列号:
- 001
- ABC
- 序列号1

3. 设备参数配置

最佳实践:

  • 设备添加到设备库时,一次性配置好所有参数
  • 参数配置后长期使用,不随挂载改变
  • 如需修改参数,在设备库中编辑设备
  • 相同类型的设备可以有不同的参数配置

示例:

摄像头-001:
  IP: 192.168.1.100
  端口: 554
  通道: 1

摄像头-002:
  IP: 192.168.1.101   ← 不同的IP
  端口: 554
  通道: 2             ← 不同的通道

4. 设备状态管理

状态变更时机:

操作 状态变更
添加设备 → 待挂载
挂载设备 待挂载 → 已挂载
拆卸设备 已挂载 → 待挂载
送修设备 任意 → 维护中
维修完成 维护中 → 待挂载
设备损坏 任意 → 已损坏
设备报废 任意 → 已退役

🔗 模块关系图

┌─────────────┐
│ 负载类型     │ 定义设备类别
└──────┬──────┘
       ↓
┌─────────────┐
│ 负载参数     │ 为类别定义参数模板
└──────┬──────┘
       ↓
┌─────────────┐
│ 负载设备     │ 添加设备实例,配置参数
│ (新增!)     │ 管理设备状态
└──────┬──────┘
       ↓
┌─────────────┐
│ 负载管理     │ 从设备库选择设备挂载
│              │ 建立挂载关系
└─────────────┘

📁 新增文件

components/machinery/load/
└── LoadDeviceLibrary.tsx     # 负载设备管理(设备库)

types/
└── equipment.ts              # 更新数据类型
    ├── DeviceInstance       # 设备实例
    └── MountRecord          # 挂载记录

🎯 功能对比

旧架构 vs 新架构

特性 旧架构 新架构
设备管理 挂载时创建 设备库统一管理
设备生命周期 无独立生命周期 完整生命周期管理
设备参数 每次挂载配置 一次配置,长期使用
设备流转 不支持 支持设备流转
设备状态 只有挂载/拆卸 5种状态管理
设备库存 不支持 支持库存管理
设备追踪 困难 完整追踪

🎉 总结

核心改进

  1. 新增"负载设备"Tab - 设备库统一管理
  2. 设备独立生命周期 - 不依赖挂载状态
  3. 5种设备状态 - 完整的状态管理
  4. 设备参数持久化 - 一次配置,多次使用
  5. 设备流转支持 - 可在不同农机间流转
  6. 完整的追溯性 - 挂载历史记录

Tab导航顺序

1. 负载类型    → 定义类别
2. 负载参数    → 定义模板
3. 负载设备 ⭐ → 添加设备(新增!)
4. 负载管理    → 挂载设备

数据流向

设备类型 → 参数模板 → 设备实例 → 挂载关系

清晰的数据层次结构!

创建完成: 2025-10-16
新增文件: /components/machinery/load/LoadDeviceLibrary.tsx
更新文件: /types/equipment.ts, /components/machinery/LoadManagement.tsx
功能状态: 已完成