# 设施设备领域技术方案 **领域编号**: 4.3 **微服务**: ether-asset **最后更新**: 2026-04-26 > **更新记录**: > - 2026-04-26: 反向同步实际代码实现到文档。主要变更:设备类型枚举更新为10种(新增ENERGY_METER/LANDSCAPE/KITCHEN,AC→HVAC,FIRE_FIGHTING→FIRE_PROTECTION,POWER_SUPPLY→ELECTRICAL,删除PARKING);设备状态枚举更新(NORMAL→ACTIVE,FAULT→INACTIVE,MAINTAINING→MAINTENANCE);新增4张专业扩展表(Elevator/Hvac/Fire/Energy);新增系统类型(SystemType 9种);新增归属管理(OwnershipType+OwnershipEntity);新增健康评分算法(MTBF/MTTR),标注为Beta;新增故障历史(EquipmentFailureHistory);新增设备照片/文档(JSONB内嵌);新增Excel导入导出;新增特种设备管理;新增能耗标准字段;字段名变更(code→equipmentCode, name→equipmentName, locationDesc→installationLocation);维保计划迁移至独立API;维保记录升级为维保工单;标注TODO: 维保完成率计算暂返回1.0。 --- ## 一、领域概述 ### 1.1 领域职责 设施设备领域负责管理物业资产全生命周期: - 设备台账管理(电梯、空调、消防、给排水、供配电等) - 设备维保计划与记录 - 设备故障管理 - 设备与工单联动 ### 1.2 核心概念 | 概念 | 说明 | 对应实体 | |------|------|----------| | **设备台账** | 设备基础信息和运行状态 | Equipment | | **电梯扩展** | 电梯专业参数(载重/速度/注册号等) | EquipmentElevator | | **暖通扩展** | 暖通空调专业参数(制冷量/制热量/能效比等) | EquipmentHvac | | **消防扩展** | 消防设备专业参数(探测范围/联动/分区等) | EquipmentFire | | **能源计量扩展** | 能源表计专业参数(表常数/精度/通讯等) | EquipmentEnergy | | **健康评分** | 设备健康度评估结果 | EquipmentHealthScore | | **故障历史** | 设备故障与维修记录 | EquipmentFailureHistory | | **归属主体** | 设备归属方信息 | OwnershipEntity | | **维保计划** | 定期保养计划(已迁移至独立API) | MaintenancePlan | | **维保工单** | 维保执行工单(原维保记录升级) | MaintenanceTask | --- ## 二、领域模型 ### 2.1 聚合根设计 #### Equipment(设备台账) ```java @Entity @Table(name = "asset_equipment") @Data public class Equipment { @Id private UUID id; private UUID projectId; private String equipmentCode; // 设备编码(原code) private String equipmentName; // 设备名称(原name) // 分类 private EquipmentType type; // 10种设备类型 private EquipmentStatus status; // ACTIVE/INACTIVE/MAINTENANCE/SCRAPPED // 系统类型(新增) private SystemType systemType; // 所属系统类型(9种) // 品牌型号 private String brand; private String model; private String specifications; private String serialNumber; // 厂商信息 private String manufacturer; private String supplier; private String supplierPhone; // 位置 private UUID spaceNodeId; // 关联空间节点 private String installationLocation; // 安装位置(原locationDesc) // 时间 private LocalDate purchaseDate; private LocalDate installDate; private LocalDate warrantyDate; private Integer lifespanYears; // 设计寿命(年) // 维保 private Integer maintenanceCycle; // 保养周期(天) private LocalDate lastMaintenanceDate; private LocalDate nextMaintenanceDate; // 负责人 private UUID managerId; private String managerName; private String contactPhone; // 归属管理(新增) private OwnershipType ownershipType; // SELF(自持)/DEVELOPER(开发商)/OWNER(业主)/VENDOR(厂商) private UUID ownershipEntityId; // 归属主体ID // 特种设备管理(新增) private Boolean isSpecialEquipment; // 是否特种设备 private String specialEquipmentCode; // 特种设备使用登记证编号 private String specialEquipmentType; // 特种设备类型 private LocalDate specialInspectionDate; // 特种设备检验日期 private LocalDate nextSpecialInspectionDate; // 下次检验日期 // 能耗标准(新增) private String energyStandard; // 能效标准 private BigDecimal ratedPower; // 额定功率(kW) private BigDecimal energyEfficiencyRating; // 能效等级 // 二维码 private String qrCode; // 设备照片/文档(新增,JSONB内嵌) @JdbcTypeCode(SqlTypes.JSON) @Column(columnDefinition = "jsonb") private List photos; // 设备照片列表 @JdbcTypeCode(SqlTypes.JSON) @Column(columnDefinition = "jsonb") private List documents; // 设备文档列表 // 扩展属性(JSONB) private String attributes; // 审计字段 private LocalDateTime createdAt; private LocalDateTime updatedAt; } ``` **系统类型枚举(新增)**: ```java public enum SystemType { ELEVATOR_SYSTEM("电梯系统"), HVAC_SYSTEM("暖通系统"), FIRE_SYSTEM("消防系统"), PLUMBING_SYSTEM("给排水系统"), ELECTRICAL_SYSTEM("供配电系统"), SECURITY_SYSTEM("安防系统"), LANDSCAPE_SYSTEM("园林系统"), DRAINAGE_SYSTEM("排污系统"), OTHER("其他"); } ``` **归属类型枚举(新增)**: ```java public enum OwnershipType { SELF("自持"), DEVELOPER("开发商"), OWNER("业主"), VENDOR("厂商"); } ``` **附件DTO**: ```java @Data public class AttachmentDTO { private String name; // 文件名 private String url; // 文件URL private String type; // 文件类型 private Long size; // 文件大小 private LocalDateTime uploadedAt; // 上传时间 } ``` **设备类型枚举**: ```java // 设备类型枚举(10种) public enum EquipmentType { ELEVATOR("电梯"), HVAC("暖通空调"), FIRE_PROTECTION("消防设备"), PLUMBING("给排水"), ELECTRICAL("供配电"), ENERGY_METER("能源计量"), SECURITY("安防设备"), LANDSCAPE("园林景观"), KITCHEN("厨房设备"), OTHER("其他设备"); } ``` #### EquipmentElevator(电梯扩展表,新增) ```java @Entity @Table(name = "asset_equipment_elevator") @Data public class EquipmentElevator { @Id private UUID id; private UUID equipmentId; // 关联设备ID private UUID projectId; private Integer loadCapacity; // 载重(kg) private BigDecimal speed; // 速度(m/s) private Integer floors; // 楼层数 private Integer stops; // 停站数 private String doorType; // 门类型 private String driveType; // 驱动方式 private String registrationCode; // 使用登记证编号 private LocalDate inspectionExpiryDate; // 检验有效期 private LocalDateTime createdAt; private LocalDateTime updatedAt; } ``` #### EquipmentHvac(暖通扩展表,新增) ```java @Entity @Table(name = "asset_equipment_hvac") @Data public class EquipmentHvac { @Id private UUID id; private UUID equipmentId; private UUID projectId; private BigDecimal coolingCapacity; // 制冷量(kW) private BigDecimal heatingCapacity; // 制热量(kW) private BigDecimal cop; // 能效比 private String refrigerant; // 制冷剂 private BigDecimal airflow; // 风量(m³/h) private String pipeType; // 管道类型 private BigDecimal pipeLength; // 管道长度(m) private LocalDateTime createdAt; private LocalDateTime updatedAt; } ``` #### EquipmentFire(消防扩展表,新增) ```java @Entity @Table(name = "asset_equipment_fire") @Data public class EquipmentFire { @Id private UUID id; private UUID equipmentId; private UUID projectId; private String detectionRange; // 探测范围 private Boolean hasLinkage; // 是否联动 private String fireZone; // 防火分区 private String extinguishingAgent; // 灭火剂类型 private BigDecimal agentCapacity; // 灭火剂容量 private LocalDate lastTestDate; // 上次测试日期 private LocalDate nextTestDate; // 下次测试日期 private LocalDateTime createdAt; private LocalDateTime updatedAt; } ``` #### EquipmentEnergy(能源计量扩展表,新增) ```java @Entity @Table(name = "asset_equipment_energy") @Data public class EquipmentEnergy { @Id private UUID id; private UUID equipmentId; private UUID projectId; private String meterConstant; // 表常数 private String accuracyClass; // 精度等级 private String communicationProtocol; // 通讯协议 private String meterCategory; // 表计类别 private BigDecimal ctRatio; // CT变比 private BigDecimal ptRatio; // PT变比 private LocalDate calibrationDate; // 校验日期 private LocalDate nextCalibrationDate; // 下次校验日期 private LocalDateTime createdAt; private LocalDateTime updatedAt; } ``` #### EquipmentHealthScore(健康评分,新增,Beta) ```java @Entity @Table(name = "asset_equipment_health_score") @Data public class EquipmentHealthScore { @Id private UUID id; private UUID equipmentId; private UUID projectId; private BigDecimal score; // 健康评分(0-100) private String level; // 健康等级: EXCELLENT/GOOD/FAIR/POOR private BigDecimal mtbf; // 平均故障间隔时间(MTBF, 小时) private BigDecimal mttr; // 平均修复时间(MTTR, 小时) private Integer totalFailures; // 总故障次数 private Integer totalMaintenance; // 总维保次数 private BigDecimal availability; // 可用率(%) private LocalDateTime calculatedAt; // 计算时间 private LocalDateTime createdAt; private LocalDateTime updatedAt; } ``` > **Beta标注**: 健康评分算法基于MTBF/MTTR计算,当前为Beta版本,评分模型和权重参数需根据实际运行数据持续优化。 #### EquipmentFailureHistory(故障历史,新增) ```java @Entity @Table(name = "asset_equipment_failure_history") @Data public class EquipmentFailureHistory { @Id private UUID id; private UUID equipmentId; private UUID projectId; private LocalDateTime failureTime; // 故障时间 private String failureType; // 故障类型 private String failureDescription; // 故障描述 private String faultCause; // 故障原因 private String solution; // 解决方案 private UUID repairWorkOrderId; // 关联维修工单 private LocalDateTime resolvedTime; // 修复时间 private Long downtimeMinutes; // 停机时长(分钟) private String reportedBy; // 报告人 private LocalDateTime createdAt; private LocalDateTime updatedAt; } ``` #### OwnershipEntity(归属主体,新增) ```java @Entity @Table(name = "asset_ownership_entity") @Data public class OwnershipEntity { @Id private UUID id; private UUID projectId; private OwnershipType type; // SELF/DEVELOPER/OWNER/VENDOR private String name; // 归属方名称 private String contactPerson; // 联系人 private String contactPhone; // 联系电话 private String address; // 地址 private String description; // 描述 private LocalDateTime createdAt; private LocalDateTime updatedAt; } ``` #### MaintenancePlan(维保计划) > **注意**: 维保计划已迁移至独立API(`/api/asset/maintenance-plans`),不再嵌套在设备管理接口下。 ```java @Entity @Table(name = "asset_maintenance_plan") @Data public class MaintenancePlan { @Id private UUID id; private UUID projectId; private UUID equipmentId; // 关联设备 private String name; private MaintenanceType type; // DAILY/WEEKLY/MONTHLY/QUARTERLY/YEARLY // 周期 private Integer cycleDays; // 周期天数 private String cronExpression; // Cron表达式 // 内容 private String content; // 保养内容描述 private String checkItems; // 检查项清单(JSON) // 负责人 private UUID maintainerId; private String maintainerName; // 提醒 private Integer remindDays; // 提前提醒天数 // 状态 private Boolean enabled; // 审计字段 private LocalDateTime createdAt; private LocalDateTime updatedAt; } ``` #### MaintenanceTask(维保工单,原MaintenanceRecord升级) > **注意**: 原MaintenanceRecord已升级为MaintenanceTask(维保工单),增加了工单状态流转、费用记录、签名确认等字段。 ```java @Entity @Table(name = "asset_maintenance_task") @Data public class MaintenanceTask { @Id private UUID id; private UUID equipmentId; private UUID planId; // 关联计划 private UUID projectId; // 工单信息 private String taskCode; // 工单编号 private MaintenanceTaskStatus status; // PENDING/IN_PROGRESS/COMPLETED/CANCELLED // 维保信息 private LocalDate maintenanceDate; private MaintenanceType type; private String content; // 执行人 private UUID maintainerId; private String maintainerName; // 结果 private MaintenanceResult result; // NORMAL/ABNORMAL private String remark; private String images; // 检查项结果 private String checkResults; // [{"item":"检查A","result":"PASS"}] // 费用(新增) private BigDecimal laborCost; // 人工费 private BigDecimal partsCost; // 材料费 private BigDecimal totalCost; // 总费用 // 签名确认(新增) private String signature; // 签名图片URL // 关联工单 private UUID workOrderId; // 异常时关联的维修工单 // 下次维保 private LocalDate nextMaintenanceDate; // 审计字段 private LocalDateTime createdAt; private LocalDateTime updatedAt; } public enum MaintenanceTaskStatus { PENDING("待执行"), IN_PROGRESS("执行中"), COMPLETED("已完成"), CANCELLED("已取消"); } ``` --- ## 三、设备与工单联动 ### 3.1 故障自动报修 ```java @Component public class EquipmentFaultHandler { @Autowired private WorkOrderService workOrderService; @EventListener public void onEquipmentFault(EquipmentFaultEvent event) { Equipment equipment = event.getEquipment(); // 创建设备维修工单 WorkOrder workOrder = new WorkOrder(); workOrder.setOrderType(WorkOrderType.REPAIR); workOrder.setTitle("设备故障: " + equipment.getEquipmentName()); workOrder.setDescription(event.getFaultDescription()); workOrder.setEquipmentId(equipment.getId()); workOrder.setSpaceNodeId(equipment.getSpaceNodeId()); workOrder.setPriority(WorkOrderPriority.HIGH); workOrder.setSource(WorkOrderSource.FAULT); workOrderService.create(workOrder); // 更新设备状态 equipment.setStatus(EquipmentStatus.INACTIVE); equipmentRepository.save(equipment); } } ``` ### 3.2 维保到期提醒 ```java @Component public class MaintenanceReminderJob { @Scheduled(cron = "0 0 9 * * ?") // 每天9点执行 public void remindUpcomingMaintenance() { // 查询7天内到期的维保计划 LocalDate targetDate = LocalDate.now().plusDays(7); List equipments = equipmentRepository .findByNextMaintenanceDateBeforeAndStatus(targetDate, EquipmentStatus.ACTIVE); for (Equipment equipment : equipments) { notificationService.sendMaintenanceReminder(equipment); } } } ``` --- ## 四、实现状态与差异 ### 4.1 实现状态 | 功能模块 | 实现状态 | 备注 | |---------|---------|------| | Equipment | 🟢 已实现 | 基础CRUD,字段名已更新(equipmentCode/equipmentName/installationLocation) | | EquipmentElevator | 🟢 已实现 | 电梯专业扩展表 | | EquipmentHvac | 🟢 已实现 | 暖通专业扩展表 | | EquipmentFire | 🟢 已实现 | 消防专业扩展表 | | EquipmentEnergy | 🟢 已实现 | 能源计量扩展表 | | EquipmentHealthScore | 🟢 已实现(Beta) | 健康评分,MTBF/MTTR算法,Beta版本 | | EquipmentFailureHistory | 🟢 已实现 | 故障历史记录 | | OwnershipEntity | 🟢 已实现 | 归属主体管理 | | MaintenancePlan | 🟢 已实现 | 已迁移至独立API | | MaintenanceTask | 🟢 已实现 | 原MaintenanceRecord升级为维保工单 | | 设备二维码 | 🟢 已实现 | 支持扫码查看设备信息 | | Excel导入导出 | 🟢 已实现 | 设备台账Excel导入导出 | | 特种设备管理 | 🟢 已实现 | 特种设备登记证/检验日期 | | 能耗标准字段 | 🟢 已实现 | 能效标准/额定功率/能效等级 | | 设备照片/文档 | 🟢 已实现 | JSONB内嵌存储 | | 故障自动工单 | 🟡 部分实现 | 设备状态变更可关联工单 | | 维保完成率计算 | 🟡 部分实现 | TODO: 当前暂返回1.0,需实现真实计算 | | IoT集成 | 🔴 未实现 | 待开发 | ### 4.2 与设计方案的差异 | 设计项 | 设计方案 | 现有实现 | 差异分析 | |--------|----------|----------|----------| | **维保归属** | ether-asset | ether-asset | 已修正:维保实体已统一在 ether-asset | | **设备管理** | ether-asset | ether-asset | 已修正:设备实体已统一在 ether-asset | | **设备联动** | 故障自动工单 | 部分实现 | 功能完善中 | | **设备类型** | 8种枚举 | 10种枚举 | 已扩展:新增ENERGY_METER/LANDSCAPE/KITCHEN | | **设备状态** | NORMAL/FAULT | ACTIVE/INACTIVE | 已修正:语义更清晰 | | **专业扩展** | 无 | 4张扩展表 | 已新增:Elevator/Hvac/Fire/Energy | | **健康评分** | 无 | Beta实现 | 已新增:基于MTBF/MTTR | | **归属管理** | 无 | OwnershipEntity | 已新增:4种归属类型 | | **维保记录** | MaintenanceRecord | MaintenanceTask | 已升级:增加工单状态/费用/签名 | | **字段命名** | code/name/locationDesc | equipmentCode/equipmentName/installationLocation | 已修正:命名更规范 | ### 4.3 改进计划 | 优先级 | 改进项 | 说明 | |--------|--------|------| | P0 | 维保完成率计算 | 当前暂返回1.0,需实现真实计算逻辑 | | P1 | 健康评分优化 | Beta版评分模型需根据实际运行数据持续优化 | | P1 | 完善故障自动工单 | 设备状态变更时自动创建维修工单 | | P2 | 完善设备二维码功能 | 支持扫码报修 | | P3 | IoT传感器接入 | 对接传感器数据 | --- ## 五、数据库表结构 ```sql -- 设备台账表 CREATE TABLE asset_equipment ( id UUID PRIMARY KEY, project_id UUID NOT NULL, equipment_code VARCHAR(50) NOT NULL, equipment_name VARCHAR(100) NOT NULL, type VARCHAR(20) NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE', system_type VARCHAR(30), brand VARCHAR(100), model VARCHAR(100), specifications VARCHAR(500), serial_number VARCHAR(100), manufacturer VARCHAR(100), supplier VARCHAR(100), supplier_phone VARCHAR(20), space_node_id UUID, installation_location VARCHAR(255), purchase_date DATE, install_date DATE, warranty_date DATE, lifespan_years INTEGER, maintenance_cycle INTEGER, last_maintenance_date DATE, next_maintenance_date DATE, manager_id UUID, manager_name VARCHAR(100), contact_phone VARCHAR(20), ownership_type VARCHAR(20), ownership_entity_id UUID, is_special_equipment BOOLEAN DEFAULT FALSE, special_equipment_code VARCHAR(100), special_equipment_type VARCHAR(50), special_inspection_date DATE, next_special_inspection_date DATE, energy_standard VARCHAR(100), rated_power DECIMAL(10,2), energy_efficiency_rating DECIMAL(3,1), qr_code VARCHAR(255), photos JSONB, documents JSONB, attributes JSONB, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW(), UNIQUE(project_id, equipment_code) ); -- 电梯扩展表 CREATE TABLE asset_equipment_elevator ( id UUID PRIMARY KEY, equipment_id UUID NOT NULL REFERENCES asset_equipment(id), project_id UUID NOT NULL, load_capacity INTEGER, speed DECIMAL(5,2), floors INTEGER, stops INTEGER, door_type VARCHAR(50), drive_type VARCHAR(50), registration_code VARCHAR(100), inspection_expiry_date DATE, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW() ); -- 暖通扩展表 CREATE TABLE asset_equipment_hvac ( id UUID PRIMARY KEY, equipment_id UUID NOT NULL REFERENCES asset_equipment(id), project_id UUID NOT NULL, cooling_capacity DECIMAL(10,2), heating_capacity DECIMAL(10,2), cop DECIMAL(5,2), refrigerant VARCHAR(50), airflow DECIMAL(10,2), pipe_type VARCHAR(50), pipe_length DECIMAL(10,2), created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW() ); -- 消防扩展表 CREATE TABLE asset_equipment_fire ( id UUID PRIMARY KEY, equipment_id UUID NOT NULL REFERENCES asset_equipment(id), project_id UUID NOT NULL, detection_range VARCHAR(100), has_linkage BOOLEAN, fire_zone VARCHAR(100), extinguishing_agent VARCHAR(50), agent_capacity DECIMAL(10,2), last_test_date DATE, next_test_date DATE, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW() ); -- 能源计量扩展表 CREATE TABLE asset_equipment_energy ( id UUID PRIMARY KEY, equipment_id UUID NOT NULL REFERENCES asset_equipment(id), project_id UUID NOT NULL, meter_constant VARCHAR(50), accuracy_class VARCHAR(20), communication_protocol VARCHAR(50), meter_category VARCHAR(50), ct_ratio DECIMAL(10,2), pt_ratio DECIMAL(10,2), calibration_date DATE, next_calibration_date DATE, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW() ); -- 健康评分表 CREATE TABLE asset_equipment_health_score ( id UUID PRIMARY KEY, equipment_id UUID NOT NULL REFERENCES asset_equipment(id), project_id UUID NOT NULL, score DECIMAL(5,2), level VARCHAR(20), mtbf DECIMAL(12,2), mttr DECIMAL(12,2), total_failures INTEGER DEFAULT 0, total_maintenance INTEGER DEFAULT 0, availability DECIMAL(5,2), calculated_at TIMESTAMP, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW() ); -- 故障历史表 CREATE TABLE asset_equipment_failure_history ( id UUID PRIMARY KEY, equipment_id UUID NOT NULL REFERENCES asset_equipment(id), project_id UUID NOT NULL, failure_time TIMESTAMP NOT NULL, failure_type VARCHAR(50), failure_description TEXT, fault_cause TEXT, solution TEXT, repair_work_order_id UUID, resolved_time TIMESTAMP, downtime_minutes BIGINT, reported_by VARCHAR(100), created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW() ); -- 归属主体表 CREATE TABLE asset_ownership_entity ( id UUID PRIMARY KEY, project_id UUID NOT NULL, type VARCHAR(20) NOT NULL, name VARCHAR(100) NOT NULL, contact_person VARCHAR(100), contact_phone VARCHAR(20), address VARCHAR(255), description TEXT, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW() ); -- 维保计划表 CREATE TABLE asset_maintenance_plan ( id UUID PRIMARY KEY, project_id UUID NOT NULL, equipment_id UUID NOT NULL, name VARCHAR(100) NOT NULL, type VARCHAR(20) NOT NULL, cycle_days INTEGER, cron_expression VARCHAR(50), content TEXT, check_items JSONB, maintainer_id UUID, maintainer_name VARCHAR(100), remind_days INTEGER DEFAULT 3, enabled BOOLEAN DEFAULT TRUE, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW() ); -- 维保工单表(原维保记录表升级) CREATE TABLE asset_maintenance_task ( id UUID PRIMARY KEY, equipment_id UUID NOT NULL, plan_id UUID, project_id UUID NOT NULL, task_code VARCHAR(50), status VARCHAR(20) NOT NULL DEFAULT 'PENDING', maintenance_date DATE NOT NULL, type VARCHAR(20) NOT NULL, content TEXT, maintainer_id UUID, maintainer_name VARCHAR(100), result VARCHAR(20), remark VARCHAR(500), images TEXT, check_results JSONB, labor_cost DECIMAL(10,2), parts_cost DECIMAL(10,2), total_cost DECIMAL(10,2), signature VARCHAR(255), work_order_id UUID, next_maintenance_date DATE, created_at TIMESTAMP NOT NULL DEFAULT NOW(), updated_at TIMESTAMP NOT NULL DEFAULT NOW() ); -- 创建索引 CREATE INDEX idx_equipment_project ON asset_equipment(project_id); CREATE INDEX idx_equipment_type ON asset_equipment(type); CREATE INDEX idx_equipment_status ON asset_equipment(status); CREATE INDEX idx_equipment_space ON asset_equipment(space_node_id); CREATE INDEX idx_equipment_next_maintenance ON asset_equipment(next_maintenance_date); CREATE INDEX idx_equipment_system_type ON asset_equipment(system_type); CREATE INDEX idx_equipment_ownership ON asset_equipment(ownership_entity_id); CREATE INDEX idx_equipment_special ON asset_equipment(is_special_equipment) WHERE is_special_equipment = TRUE; CREATE INDEX idx_maintenance_plan_equipment ON asset_maintenance_plan(equipment_id); CREATE INDEX idx_maintenance_task_equipment ON asset_maintenance_task(equipment_id); CREATE INDEX idx_maintenance_task_status ON asset_maintenance_task(status); CREATE INDEX idx_failure_history_equipment ON asset_equipment_failure_history(equipment_id); CREATE INDEX idx_health_score_equipment ON asset_equipment_health_score(equipment_id); ``` --- **文档维护**: 本领域技术方案由 ether-asset 服务负责人维护