ether-docs/02-DESIGN/domains/REVERSE-ASSET.md

38 KiB
Raw Blame History

资产设备领域反推设计文档(基于实际代码)

领域编号: 4.3
模块: module-asset
反推日期: 2026-04-23
数据来源: ether-pms/module-asset + ether-admin/src


一、领域概述

1.1 领域职责

资产设备领域负责物业设备资产的全生命周期管理,核心职责包括:

  • 设备台账管理:设备主表 + 4张扩展表的分类扩展模式覆盖电梯/暖通/消防/能源计量四大专业设备
  • 设备健康预测:基于 MTBF/MTTR 指标的健康评分算法5级健康等级评估
  • 故障历史管理4级故障等级、4种故障类型、4种修复结果的全流程故障记录
  • 归属主体管理4种归属类型项目自有/公司统筹/业主自置/租赁设备3种主体类型
  • 设备导入导出Excel 批量导入导出,含文件校验与行数限制
  • 设备与空间关联:通过 spaceNodeId 关联空间节点树

1.2 核心概念

概念 说明 对应实体
设备台账 设备基础信息与运行状态 Equipment
电梯扩展 电梯专业参数(载重/速度/注册号等) EquipmentElevator
暖通扩展 暖通空调专业参数(制冷量/制热量/能效比等) EquipmentHvac
消防扩展 消防设备专业参数(探测范围/联动/分区等) EquipmentFire
能源计量扩展 能源表计专业参数(表常数/精度/通讯等) EquipmentEnergy
健康评分 设备健康度评估结果 EquipmentHealthScore
故障历史 设备故障与维修记录 EquipmentFailureHistory
归属主体 设备归属方信息 OwnershipEntity

1.3 架构模式

主表 + 扩展表模式Equipment 为主表,通过 equipmentType 字段区分设备类型,每种专业设备类型对应一张扩展表,通过 equipment_idunique一对一关联。这种设计避免了主表字段膨胀同时保持了扩展的灵活性。

Equipment (主表)
  ├── EquipmentElevator (电梯扩展) ← equipment_id UNIQUE
  ├── EquipmentHvac (暖通扩展) ← equipment_id UNIQUE
  ├── EquipmentFire (消防扩展) ← equipment_id UNIQUE
  └── EquipmentEnergy (能源计量扩展) ← equipment_id UNIQUE

二、数据结构设计

2.1 Equipment设备主表

表名: asset_equipment

字段 类型 必填 说明
id UUID 主键,自动生成
projectId UUID 所属项目ID
spaceNodeId UUID 关联空间节点ID
equipmentCode VARCHAR(50) 设备编码,全局唯一
equipmentName VARCHAR(100) 设备名称
equipmentType VARCHAR(30) 设备类型枚举
equipmentCategory VARCHAR(50) 设备分类
systemType VARCHAR(50) 系统类型枚举8大系统
ownershipType VARCHAR(20) 归属类型枚举,默认 PROJECT
owningEntityId UUID 归属主体ID
owningEntityName VARCHAR(100) 归属主体名称(冗余)
assetCode VARCHAR(50) 资产编号
serialNumber VARCHAR(100) 出厂编号
model VARCHAR(100) 型号
manufacturer VARCHAR(100) 厂商
supplier VARCHAR(100) 供应商
status VARCHAR(20) 设备状态枚举,默认 ACTIVE
operationStatus VARCHAR(20) 运行状态
installationLocation VARCHAR(200) 安装位置
installationDate DATE 安装日期
designLifeYears INTEGER 设计寿命(年)
ratedPower DECIMAL(10,2) 额定功率(kW)
ratedVoltage VARCHAR(20) 额定电压(V)
ratedCurrent DECIMAL(10,2) 额定电流(A)
maintenanceVendor VARCHAR(100) 维保商
maintenanceVendorContact VARCHAR(50) 维保联系人
maintenanceVendorPhone VARCHAR(20) 维保电话
maintenanceContractNo VARCHAR(50) 维保合同编号
maintenanceContractStart DATE 维保合同开始日期
maintenanceContractEnd DATE 维保合同结束日期
purchaseDate DATE 购置日期
purchasePrice DECIMAL(12,2) 购置价格(元)
warrantyExpireDate DATE 保修到期日期
energyConsumptionStandard DECIMAL(12,2) 能耗标准(kW·h/年)
inspectionCycle INTEGER 年检周期(月)
nextInspectionDate DATE 下次年检日期
lastInspectionDate DATE 上次年检日期
lastInspectionResult VARCHAR(20) 上次年检结果
specialEquipmentType VARCHAR(50) 特种设备类型
specialEquipmentCert VARCHAR(100) 特种设备证书
attributes JSON/TEXT 扩展属性(JSON)
photos JSONB 设备照片列表
documents JSONB 电子文档列表
manualUrl VARCHAR(500) 手册URL
remarks VARCHAR(1000) 备注
isDeleted BOOLEAN 逻辑删除标记,默认 false
createdAt DATETIME 创建时间
updatedAt DATETIME 更新时间
createdBy UUID 创建人
updatedBy UUID 更新人

索引:

  • idx_equipment_project (project_id)
  • idx_equipment_space (space_node_id)
  • idx_equipment_type (equipment_type)
  • idx_equipment_ownership (ownership_type)
  • idx_equipment_code (equipment_code) — UNIQUE
  • idx_equipment_status (status)
  • idx_eq_project_status (project_id, status)
  • idx_eq_project_type (project_id, equipment_type)
  • idx_eq_project_deleted (project_id, is_deleted)

内嵌类型:

EquipmentPhoto设备照片:

字段 类型 说明
type String 照片类型:外观/铭牌/安装位置/环境
url String 照片URL
remark String 备注

EquipmentDocument电子文档:

字段 类型 说明
name String 文档名称
url String 文档URL
size Long 文件大小
type String 文档类型manual/certificate/contract/other
remark String 备注

2.2 EquipmentElevator电梯扩展表

表名: asset_equipment_elevator

字段 类型 必填 说明
id UUID 主键
equipmentId UUID 关联设备IDUNIQUE
elevatorType VARCHAR(30) 电梯类型
elevatorModel VARCHAR(50) 电梯型号
loadCapacity INTEGER 载重(kg)
speed DECIMAL(10,2) 速度(m/s)
floorCount INTEGER 楼层数
shaftDimensions VARCHAR(50) 井道尺寸
pitDepth DECIMAL(10,2) 底坑深度
overheadHeight DECIMAL(10,2) 顶层高度
registrationNo VARCHAR(50) 注册登记号
inspectionCertificate VARCHAR(100) 检验证书
nextInspectionDate DATE 下次检验日期
energyConsumption DECIMAL(12,2) 能耗
maintenanceLevel VARCHAR(20) 维保等级
rescuePlan VARCHAR(5000) 应急救援预案
createdAt DATETIME 创建时间
updatedAt DATETIME 更新时间

2.3 EquipmentHvac暖通空调扩展表

表名: asset_equipment_hvac

字段 类型 必填 说明
id UUID 主键
equipmentId UUID 关联设备IDUNIQUE
hvacType VARCHAR(30) 暖通类型
coolingCapacity DECIMAL(12,2) 制冷量
heatingCapacity DECIMAL(12,2) 制热量
airFlow DECIMAL(12,2) 风量
refrigerantType VARCHAR(30) 制冷剂类型
refrigerantCharge DECIMAL(10,2) 制冷剂充注量
energyEfficiencyRatio DECIMAL(10,2) 能效比(EER)
coefficientOfPerformance DECIMAL(10,2) 性能系数(COP)
installationDate DATE 安装日期
warrantyExpireDate DATE 保修到期日期
filterReplacementCycle INTEGER 滤网更换周期
lastFilterReplacement DATE 上次滤网更换日期
ductType VARCHAR(30) 风管类型
ductDimensions VARCHAR(50) 风管尺寸
createdAt DATETIME 创建时间
updatedAt DATETIME 更新时间

2.4 EquipmentFire消防扩展表

表名: asset_equipment_fire

字段 类型 必填 说明
id UUID 主键
equipmentId UUID 关联设备IDUNIQUE
fireEquipmentType VARCHAR(30) 消防设备类型
installationArea DECIMAL(10,2) 安装面积
installationHeight DECIMAL(10,2) 安装高度
detectionRange DECIMAL(10,2) 探测范围
systemType VARCHAR(30) 系统类型
zoneNumber VARCHAR(20) 分区编号
loopNumber VARCHAR(20) 回路编号
linkageEnabled BOOLEAN 是否启用联动
linkageAction VARCHAR(100) 联动动作
inspectionCycle INTEGER 巡检周期
lastInspectionDate DATE 上次巡检日期
nextInspectionDate DATE 下次巡检日期
inspectionResult VARCHAR(20) 巡检结果
specialRequirement VARCHAR(2000) 特殊要求
createdAt DATETIME 创建时间
updatedAt DATETIME 更新时间

2.5 EquipmentEnergy能源计量扩展表

表名: asset_equipment_energy

字段 类型 必填 说明
id UUID 主键
equipmentId UUID 关联设备IDUNIQUE
meterType VARCHAR(30) 表计类型
energyType VARCHAR(30) 能源类型
meterModel VARCHAR(50) 表计型号
meterSpecification VARCHAR(50) 表计规格
meterConstant DECIMAL(10,4) 表常数
accuracyClass VARCHAR(10) 精度等级
readingType VARCHAR(20) 抄表方式
lastReadingDate DATE 上次抄表日期
lastReadingValue DECIMAL(12,2) 上次读数
currentReadingValue DECIMAL(12,2) 当前读数
unitPrice DECIMAL(10,4) 单价
billingType VARCHAR(20) 计费方式
communicationType VARCHAR(30) 通讯方式
communicationAddress VARCHAR(50) 通讯地址
verificationCycle INTEGER 检定周期
nextVerificationDate DATE 下次检定日期
verificationCertificate VARCHAR(100) 检定证书
createdAt DATETIME 创建时间
updatedAt DATETIME 更新时间

2.6 EquipmentHealthScore健康评分表

表名: ops_equipment_health_score

字段 类型 必填 说明
id UUID 主键
projectId UUID 项目ID
equipmentId UUID 设备ID
equipmentCode VARCHAR(50) 设备编码(冗余)
equipmentName VARCHAR(100) 设备名称(冗余)
healthScore DECIMAL(5,2) 健康度评分(0-100)
failureDeduction DECIMAL(5,2) 故障扣分
maintenanceDeduction DECIMAL(5,2) 维保扣分
ageDeduction DECIMAL(5,2) 年龄扣分
failureCount30d INTEGER 近30天故障次数
maintenanceCompletionRate DECIMAL(5,4) 维保完成率
equipmentAgeYears DECIMAL(10,2) 设备年龄(年)
operationHours30d DECIMAL(12,2) 近30天运行时长
mtbfHours DECIMAL(12,2) MTBF(小时)
mttrHours DECIMAL(12,2) MTTR(小时)
healthLevel VARCHAR(20) 健康等级枚举
calculatedAt DATETIME 计算时间
calculationPeriodDays INTEGER 计算周期天数
remarks VARCHAR(1000) 备注
createdAt DATETIME 创建时间
updatedAt DATETIME 更新时间

索引:

  • idx_health_equipment (equipment_id)
  • idx_health_calc_time (calculated_at)
  • idx_health_project (project_id)

2.7 EquipmentFailureHistory故障历史表

表名: ops_equipment_failure_history

字段 类型 必填 说明
id UUID 主键
projectId UUID 项目ID
equipmentId UUID 设备ID
equipmentCode VARCHAR(50) 设备编码(冗余)
equipmentName VARCHAR(100) 设备名称(冗余)
failureTime DATETIME 故障时间
failureType VARCHAR(50) 故障类型枚举
failureLevel VARCHAR(20) 故障等级枚举
failureReason VARCHAR(2000) 故障原因
failureDescription VARCHAR(2000) 故障描述
repairStartTime DATETIME 修复开始时间
repairEndTime DATETIME 修复结束时间
repairDurationHours DOUBLE 修复时长(小时)
repairPerson VARCHAR(100) 修复人
repairResult VARCHAR(20) 修复结果枚举
downtimeHours DOUBLE 停机时长(小时)
maintenanceCost DECIMAL(12,2) 维修费用
isScheduled BOOLEAN 是否计划停机,默认 false
relatedTaskId UUID 关联工单ID
remarks VARCHAR(1000) 备注
createdAt DATETIME 创建时间
updatedAt DATETIME 更新时间
createdBy UUID 创建人

索引:

  • idx_failure_equipment (equipment_id)
  • idx_failure_time (failure_time)
  • idx_failure_project (project_id)
  • idx_efh_project_time (project_id, failure_time)
  • idx_efh_equipment_time (equipment_id, failure_time DESC)

2.8 OwnershipEntity归属主体表

表名: asset_ownership_entity

字段 类型 必填 说明
id UUID 主键
entityType VARCHAR(20) 主体类型枚举
entityName VARCHAR(100) 主体名称
entityCode VARCHAR(50) 主体编码
contactPerson VARCHAR(50) 联系人
contactPhone VARCHAR(20) 联系电话
contactAddress VARCHAR(255) 联系地址
businessLicense VARCHAR(50) 营业执照号
legalRepresentative VARCHAR(50) 法人代表
contractNo VARCHAR(50) 合同编号
contractStartDate DATE 合同开始日期
contractEndDate DATE 合同结束日期
rentalFee DECIMAL(12,2) 租赁费用
status VARCHAR(20) 状态,默认 ACTIVE
isDeleted BOOLEAN 逻辑删除,默认 false
createdAt DATETIME 创建时间
updatedAt DATETIME 更新时间

索引:

  • idx_ownership_entity_type (entity_type)
  • idx_ownership_entity_code (entity_code)

2.9 枚举定义汇总

EquipmentType设备类型 — 10种

枚举值 中文 对应扩展表
ELEVATOR 电梯系统 EquipmentElevator
HVAC 暖通空调 EquipmentHvac
FIRE_PROTECTION 消防系统 EquipmentFire
PLUMBING 给排水系统
ELECTRICAL 电气系统
ENERGY_METER 能源计量 EquipmentEnergy
SECURITY 弱电系统
LANDSCAPE 景观绿化
KITCHEN 厨余设备
OTHER 其他设备

EquipmentStatus设备状态 — 4种

枚举值 中文
ACTIVE 在用
INACTIVE 停用
MAINTENANCE 维保中
SCRAPPED 已报废

OwnershipType归属类型 — 4种

枚举值 中文
PROJECT 项目自有
COMPANY 公司统筹
OWNER 业主自置
RENTAL 租赁设备

SystemType系统类型 — 9种商业地产8大系统+其他)

枚举值 中文
HVAC 暖通空调
FIRE 消防系统
ELEVATOR 电梯系统
ELECTRICAL 电气系统
PLUMBING 给排水
BAS 弱电智能化
KITCHEN 餐饮厨房
LANDSCAPE 景观
OTHER 其他

FailureType故障类型 — 4种

枚举值 中文
SUDDEN 突发故障
SCHEDULED 计划停机
WARNING 预警
OTHER 其他

FailureLevel故障等级 — 4级

枚举值 中文
LOW 轻微
MEDIUM 一般
HIGH 严重
CRITICAL 危急

RepairResult修复结果 — 4种

枚举值 中文
FIXED 已修复
PARTIAL_FIXED 部分修复
REPLACED 更换新设备
PENDING 待处理

HealthLevel健康等级 — 5级

枚举值 中文 分数范围
EXCELLENT 优秀 [90, 100)
GOOD 良好 [75, 90)
FAIR 一般 [60, 75)
POOR 较差 [40, 60)
CRITICAL 危急 [0, 40)

EntityType归属主体类型 — 3种

枚举值 中文
COMPANY 公司
OWNER 业主
RENTAL_COMPANY 租赁公司

2.10 实体关系图

┌──────────────────┐     1:1     ┌───────────────────────┐
│   Equipment      │─────────────│  EquipmentElevator    │
│   (主表)          │             └───────────────────────┘
│                  │     1:1     ┌───────────────────────┐
│  equipmentType ──│─────────────│  EquipmentHvac        │
│  determines →    │             └───────────────────────┘
│                  │     1:1     ┌───────────────────────┐
│  owningEntityId ─│─────────────│  EquipmentFire        │
│       ↓          │             └───────────────────────┘
│                  │     1:1     ┌───────────────────────┐
│  spaceNodeId ────│─────────────│  EquipmentEnergy      │
│       ↓          │             └───────────────────────┘
│                  │
│                  │     1:N     ┌───────────────────────┐
│                  │─────────────│ EquipmentHealthScore  │
│                  │             └───────────────────────┘
│                  │     1:N     ┌───────────────────────┐
│                  │─────────────│ EquipmentFailureHist. │
│                  │             └───────────────────────┘
└──────────────────┘
       │
       │ owningEntityId
       ↓
┌──────────────────┐
│ OwnershipEntity  │
└──────────────────┘

外部关联:
  Equipment.spaceNodeId → SpaceNode.id (module-mdm)

三、API接口设计

3.1 EquipmentController

基础路径: /api/asset/equipment

设备主表 CRUD

方法 路径 说明 请求体 响应
POST / 创建设备 Equipment Equipment
GET /{id} 获取设备详情 Equipment
PUT /{id} 更新设备 Equipment Equipment
DELETE /{id} 删除设备 Void
POST /batch-delete 批量删除 List<UUID> Void

设备导入导出

方法 路径 说明 请求 响应
POST /import Excel导入 MultipartFile + projectId Map(successCount, failCount, failDetails)
GET /export Excel导出 projectId byte[] (xlsx)

导入校验规则:

  • 文件类型:仅支持 .xlsx / .xls
  • 文件大小:最大 10MB
  • 行数限制:最大 1000 行
  • 文件不能为空

设备查询

方法 路径 说明 参数 响应
GET /by-project/{projectId} 按项目查询 List<Equipment>
GET /by-space/{spaceNodeId} 按空间查询 List<Equipment>
GET /by-type 按类型查询 type: EquipmentType List<Equipment>
GET /by-ownership 按归属查询 ownership: OwnershipType List<Equipment>

设备统计

方法 路径 说明 参数 响应
GET /stats/by-type/{projectId} 按类型统计 Map<String, Long>
GET /stats/by-ownership/{projectId} 按归属统计 Map<String, Long>
GET /stats/count/{projectId} 项目设备总数 Long

电梯扩展

方法 路径 说明 请求体 响应
GET /{id}/elevator 获取电梯扩展 EquipmentElevator
PUT /{id}/elevator 更新电梯扩展 EquipmentElevator EquipmentElevator

暖通扩展

方法 路径 说明 请求体 响应
GET /{id}/hvac 获取暖通扩展 EquipmentHvac
PUT /{id}/hvac 更新暖通扩展 EquipmentHvac EquipmentHvac

能源计量扩展

方法 路径 说明 请求体 响应
GET /{id}/energy 获取能源扩展 EquipmentEnergy
PUT /{id}/energy 更新能源扩展 EquipmentEnergy EquipmentEnergy

消防扩展

方法 路径 说明 请求体 响应
GET /{id}/fire 获取消防扩展 EquipmentFire
PUT /{id}/fire 更新消防扩展 EquipmentFire EquipmentFire

3.2 EquipmentHealthController

基础路径: /api/asset/equipment-health

方法 路径 说明 请求体/参数 响应
GET /{equipmentId} 获取最新健康度 EquipmentHealthScore
GET /{equipmentId}/history 健康度历史 List<EquipmentHealthScore>
POST /calculate 计算健康度 { equipmentId: UUID } EquipmentHealthScore
POST /failure-history 记录故障 EquipmentFailureHistory EquipmentFailureHistory
GET /failure-history/{equipmentId} 获取故障历史 List<EquipmentFailureHistory>
GET /mtbf/{equipmentId} 计算MTBF days: Integer (默认30) { equipmentId, days, mtbfHours }
GET /mttr/{equipmentId} 计算MTTR days: Integer (默认30) { equipmentId, days, mttrHours }

3.3 OwnershipEntityController

基础路径: /api/asset/ownership-entity

方法 路径 说明 请求体 响应
POST / 创建归属主体 OwnershipEntity OwnershipEntity
GET /{id} 获取归属主体 OwnershipEntity
PUT /{id} 更新归属主体 OwnershipEntity OwnershipEntity
DELETE /{id} 删除归属主体(逻辑删除) Void
GET /by-type 按类型查询 type: EntityType List<OwnershipEntity>
GET / 获取全部(未删除) List<OwnershipEntity>

注意: OwnershipEntityController 直接注入 Repository未经过 Service 层,属于简化实现。


四、业务规则

4.1 设备分类体系10种 EquipmentType

设备类型采用 10 大分类体系,其中 4 种有专业扩展表:

设备类型 扩展表 专业参数特点
ELEVATOR电梯系统 EquipmentElevator 载重、速度、楼层数、注册号、检验证书、应急救援预案
HVAC暖通空调 EquipmentHvac 制冷/制热量、制冷剂、能效比(EER)、性能系数(COP)、滤网更换
FIRE_PROTECTION消防系统 EquipmentFire 探测范围、分区/回路编号、联动控制、巡检周期
ENERGY_METER能源计量 EquipmentEnergy 表常数、精度等级、通讯方式、检定周期
PLUMBING给排水系统 使用主表通用字段
ELECTRICAL电气系统 使用主表通用字段
SECURITY弱电系统 使用主表通用字段
LANDSCAPE景观绿化 使用主表通用字段
KITCHEN厨余设备 使用主表通用字段
OTHER其他设备 使用主表通用字段 + attributes JSON 扩展

扩展策略: 无扩展表的设备类型通过主表的 attributes JSON 字段存储额外属性。

4.2 归属管理4种 OwnershipType

归属类型 说明 关联主体
PROJECT 项目自有 无需关联外部主体
COMPANY 公司统筹 可关联 EntityType=COMPANY 的主体
OWNER 业主自置 可关联 EntityType=OWNER 的主体
RENTAL 租赁设备 可关联 EntityType=RENTAL_COMPANY 的主体

数据冗余: Equipment 表同时存储 owningEntityIdowningEntityName,避免频繁关联查询。

4.3 主表+扩展表模式

设计原则:

  • 主表存储所有设备类型的公共字段约40个
  • 扩展表通过 equipment_idUNIQUE一对一关联主表
  • 扩展表仅存储专业特有字段
  • 扩展表的读写通过主设备ID路径GET /{id}/elevatorPUT /{id}/elevator
  • 扩展表采用 saveOrUpdate 模式:存在则更新,不存在则新建

扩展表服务接口模式(以电梯为例):

public interface EquipmentElevatorService {
    Optional<EquipmentElevator> getByEquipmentId(UUID equipmentId);
    EquipmentElevator saveOrUpdate(EquipmentElevator elevator);
}

4.4 健康评分算法

评分公式

健康度 = 基础分(100) - 故障扣分 - 维保扣分 - 年龄扣分

扣分规则

扣分项 计算公式 参数 上限
故障扣分 故障次数(近30天) × 5 FAILURE_DEDUCTION_PER_COUNT = 5 无上限
维保扣分 (1 - 维保完成率) × 20 MAINTENANCE_DEDUCTION_FACTOR = 20 20分
年龄扣分 设备年龄(年) × 2 AGE_DEDUCTION_PER_YEAR = 2 10分(MAX_AGE_DEDUCTION)

最低分: 0分不会为负数

健康等级映射

等级 分数范围 颜色(前端)
EXCELLENT优秀 [90, 100) 绿色
GOOD良好 [75, 90) 青色
FAIR一般 [60, 75) 橙色
POOR较差 [40, 60) 红色
CRITICAL危急 [0, 40) 红色

MTBF 计算(平均故障间隔时间)

MTBF = 运行时间(小时) / 故障次数
  • 计算周期默认30天可自定义
  • 运行时间:从第一个故障到最后一个故障的时间跨度
  • 若仅1次故障使用默认期间天数 × 24小时
  • 无故障时返回 0

MTTR 计算(平均修复时间)

MTTR = 总修复时间(小时) / 修复次数
  • 仅统计已完成修复的故障记录repairDurationHours 不为空)
  • 无修复记录时返回 0

设备年龄计算

设备年龄 = 安装年份 + 安装月份/12
  • 优先使用 installationDate
  • 若无安装日期,使用 createdAt 的日期部分
  • 均无则返回 0

已知问题: 当前实现中 calculateEquipmentAge() 方法错误地使用了 SpaceNode.maintenanceContractStart 而非 Equipment.installationDate,因为健康评分服务查询的是 SpaceNode 而非 Equipment 实体。

4.5 故障等级4级 FailureLevel

等级 中文 典型场景
LOW 轻微 指示灯故障、外观损伤
MEDIUM 一般 单个传感器故障、局部渗漏
HIGH 严重 主控制器故障、系统部分失效
CRITICAL 危急 电梯困人、消防系统瘫痪

4.6 故障记录自动计算

记录故障时自动计算:

  • 修复时长repairDurationHours = (repairEndTime - repairStartTime) / 60(分钟转小时)
  • 停机时长downtimeHours = (repairStartTime - failureTime) / 60(故障到开始修复的时间)

4.7 设备导入规则

规则 限制
文件格式 .xlsx / .xls
文件大小 最大 10MB
行数限制 最大 1000 行
文件编码 UTF-8
空文件 拒绝

4.8 逻辑删除

所有实体采用逻辑删除模式:

  • Equipment: isDeleted 字段,默认 false
  • OwnershipEntity: isDeleted 字段,默认 false
  • 查询时过滤已删除记录:findByIdAndIsDeletedFalse

五、前端操作流程

5.1 页面结构

页面 路径 说明
设备列表 EquipmentList.vue 设备台账主列表,含筛选/新增/编辑/删除/导入导出
设备详情 EquipmentDetail.vue 设备完整信息展示(基本信息/技术参数/维保/财务/照片/文档)
设备健康 EquipmentHealth.vue 健康度评分/趋势图/MTBF/MTTR/故障历史
巡检管理 Inspection.vue 巡检标准项 + 巡检记录
维保计划 MaintenancePlan.vue 维保计划管理
维保工单 MaintenanceTask.vue 维保工单管理(创建/分配/执行/完成/验证)
照片管理 components/PhotoManager.vue 设备照片上传与管理
文档管理 components/DocumentManager.vue 电子文档上传与管理

5.2 设备台账管理流程

设备列表页
  ├── 筛选条件:项目(必选) + 设备类型 + 归属类型 + 关键词
  ├── 操作按钮:新增设备 / 导入 / 导出 / 批量删除
  ├── 列表展示:编码/名称/类型/归属/状态/安装位置/维保商/年检日期
  ├── 行操作:查看详情 / 编辑 / 删除
  └── 统计标签:按类型统计 + 按归属统计

5.3 设备详情展示流程

设备详情页
  ├── 基本信息:编码/名称/类型/归属/型号/厂商/供应商/出厂编号/资产编号/安装位置/安装日期
  ├── 技术参数:额定功率/额定电压/额定电流/设计寿命/能耗标准
  ├── 维保信息:维保单位/联系人/电话/合同编号/合同起止日期
  ├── 财务信息:购置日期/购置价格/保修到期日期
  ├── 特种设备信息(条件显示):设备类型/证书/检验周期/上次/下次检验
  ├── 设备照片:照片画廊 + 上传
  └── 电子文档:文档列表 + 上传

5.4 健康预测操作流程

设备健康页
  ├── 选择项目 → 加载设备列表
  ├── 选择设备 → 点击查询
  ├── 健康度概览4个统计卡片
  │   ├── 健康度评分颜色随分数变化≥80绿/≥60橙/<60红
  │   ├── 健康等级Tag标签
  │   ├── 风险等级Tag标签
  │   └── 最后检测时间
  ├── MTBF/MTTR 指标卡片
  │   ├── MTBF平均故障间隔天数 + 总故障次数 + 总运行时长
  │   └── MTTR平均修复小时 + 总维修次数 + 总维修时长
  ├── 健康度趋势图ECharts 折线图近30天
  ├── 风险因素 + 维护建议
  └── 故障历史表格(时间/类型/等级/描述/维修时间/状态)

5.5 维保管理流程

维保计划页
  ├── 选择项目 → 加载设备列表
  ├── 创建计划:名称/设备/类型/周期/下次维保日期
  └── 计划列表:名称/设备/类型/周期/下次日期/状态

维保工单页
  ├── 工单列表:编号/标题/设备/类型/触发类型/优先级/状态
  ├── 工单操作:创建/分配/开始执行/完成/验证/取消
  └── 工单统计卡片

5.6 归属主体管理流程

归属主体(在设备表单中通过下拉选择使用)
  ├── 创建主体:类型/名称/联系人/电话/地址/营业执照/法人/合同信息/租赁费用
  ├── 按类型筛选:公司/业主/租赁公司
  └── 设备表单中:归属类型 → 联动归属主体下拉

六、与原需求文档 03-ASSET.md 的差异对比

6.1 数据模型差异

对比项 原需求文档(03-ASSET.md) 实际实现 差异分析
设备类型枚举 8种(ELEVATOR/AC/FIRE_FIGHTING/PLUMBING/POWER_SUPPLY/SECURITY/PARKING/OTHER) 10种(ELEVATOR/HVAC/FIRE_PROTECTION/PLUMBING/ELECTRICAL/ENERGY_METER/SECURITY/LANDSCAPE/KITCHEN/OTHER) ⚠️ 枚举值名称和数量均不同新增ENERGY_METER/LANDSCAPE/KITCHENAC→HVACFIRE_FIGHTING→FIRE_PROTECTIONPOWER_SUPPLY→ELECTRICAL删除PARKING
设备状态枚举 NORMAL/FAULT/MAINTAINING/SCRAPPED ACTIVE/INACTIVE/MAINTENANCE/SCRAPPED ⚠️ 枚举值名称不同NORMAL→ACTIVE, FAULT→INACTIVE, MAINTAINING→MAINTENANCE
扩展表 仅attributes JSONB 4张扩展表(Elevator/Hvac/Fire/Energy) 🔴 重大差异:实际实现了专业扩展表模式
系统类型 SystemType(9种商业地产8大系统) 🔴 新增:原需求无此概念
归属管理 OwnershipType(4种) + OwnershipEntity(3种主体) 🔴 新增:原需求无此概念
健康评分 EquipmentHealthScore + MTBF/MTTR算法 🔴 新增:原需求无此概念
故障历史 EquipmentFailureHistory(4级故障/4种类型/4种修复结果) 🔴 新增:原需求无此概念
设备照片/文档 JSONB内嵌(EquipmentPhoto/EquipmentDocument) 🔴 新增:原需求无此概念
维保计划 MaintenancePlan实体(在asset模块) 迁移至独立API(maintenance-plan.ts) ⚠️ 架构调整:维保计划独立
维保记录 MaintenanceRecord实体(在asset模块) 迁移至维保工单(maintenance-task.ts) ⚠️ 架构调整:维保记录升级为工单
设备编码字段 code equipmentCode ⚠️ 字段名不同
设备名称字段 name equipmentName ⚠️ 字段名不同
位置描述 locationDesc installationLocation ⚠️ 字段名不同
品牌字段 brand 无(使用manufacturer) ⚠️ 原需求有brand实际用manufacturer替代
规格字段 specifications 🔴 原需求有,实际未实现
负责人 managerId/managerName/contactPhone 无(使用维保商字段替代) 🔴 原需求有设备负责人,实际改为维保商
二维码 qrCode 🔴 原需求有,实际未实现
导入导出 Excel导入导出(含校验) 🔴 新增:原需求无此概念
批量删除 batch-delete接口 🔴 新增
财务信息 purchaseDate/installDate/warrantyDate purchaseDate/purchasePrice/warrantyExpireDate + 更多 ⚠️ 实际更丰富
特种设备 specialEquipmentType/specialEquipmentCert/inspectionCycle 🔴 新增
能耗标准 energyConsumptionStandard 🔴 新增

6.2 功能差异

功能 原需求文档 实际实现 差异
设备CRUD 一致
设备与空间关联 一致
设备二维码 未实现
故障自动工单 (事件驱动) 🟡 (故障记录+关联工单ID) 部分实现,非事件驱动
IoT集成 🟡 (计划) 未实现
维保到期提醒 (定时任务) 🟡 (前端展示下次维保日期) 无后端定时提醒
设备健康预测 (完整算法+前端图表) 超出原需求
归属主体管理 (3种主体+4种归属) 超出原需求
专业扩展表 (4张扩展表) 超出原需求
Excel导入导出 (含校验) 超出原需求
MTBF/MTTR (可配置周期) 超出原需求
设备照片/文档 (JSONB内嵌) 超出原需求
维保计划 (asset模块内) (独立API) 架构调整
维保记录 (asset模块内) (升级为维保工单) 架构升级

6.3 实现状态总结

模块 状态 说明
设备主表CRUD 🟢 完成 含批量删除
4张扩展表 🟢 完成 电梯/暖通/消防/能源
健康评分算法 🟢 完成 含MTBF/MTTR
故障历史管理 🟢 完成 含自动计算修复/停机时长
归属主体管理 🟢 完成 直接Repository操作
Excel导入导出 🟢 完成 含完整校验
设备统计 🟢 完成 按类型/归属/总数
前端设备列表 🟢 完成 含筛选/分页/操作
前端设备详情 🟢 完成 含照片/文档管理
前端健康预测 🟢 完成 含ECharts趋势图
维保完成率计算 🟡 TODO 代码中标记TODO暂返回1.0
设备二维码 🔴 未实现 原需求有但未实现
IoT集成 🔴 未实现 原需求有但未实现
故障自动工单(事件驱动) 🔴 未实现 原需求有但未实现
维保到期定时提醒 🔴 未实现 原需求有但未实现

6.4 已知代码问题

问题 位置 说明
健康评分查询SpaceNode而非Equipment EquipmentHealthServiceImpl calculateHealthScore() 查询 SpaceNode 而非 Equipment 实体,导致设备年龄计算使用 maintenanceContractStart 而非 installationDate
projectId硬编码为全零UUID EquipmentHealthServiceImpl UUID.fromString("00000000-0000-0000-0000-000000000000"),应从设备实体获取
OwnershipEntityController绕过Service层 OwnershipEntityController 直接注入Repository不符合分层架构
维保完成率固定为1.0 EquipmentHealthServiceImpl TODO标记暂跳过维保完成率计算
前端EquipmentType与后端SystemType不一致 equipment.ts 前端SystemType含FIRE_PROTECTION后端SystemType含FIRE
扩展表仅4种有对应 EquipmentType vs 扩展表 PLUMBING/ELECTRICAL/SECURITY/LANDSCAPE/KITCHEN/OTHER 无扩展表

文档说明: 本文档基于 module-asset 模块的实际代码反推生成,与原需求文档 03-ASSET.md 存在显著差异,主要体现在:实际实现远超原需求(健康预测/归属管理/扩展表/导入导出),但部分原需求功能未实现(二维码/IoT/事件驱动工单/定时提醒)。