# 报警功能测试说明

## 一、数据库准备

首先在数据库中执行 `alarm_data_table.sql` 文件，创建报警数据表：

```sql
-- 报警数据表
CREATE TABLE IF NOT EXISTS `alarm_data` (
  `id` varchar(64) NOT NULL COMMENT '主键',
  `device_name` varchar(255) DEFAULT NULL COMMENT '设备名称',
  `device_code` varchar(255) DEFAULT NULL COMMENT '设备编码',
  `device_type` varchar(100) DEFAULT NULL COMMENT '设备类型',
  `warning_type` varchar(100) DEFAULT NULL COMMENT '预警类型',
  `warning_code` varchar(100) DEFAULT NULL COMMENT '预警编码',
  `warning_value` decimal(10,2) DEFAULT NULL COMMENT '预警阈值',
  `actual_value` decimal(10,2) DEFAULT NULL COMMENT '实际值',
  `alarm_status` int(1) DEFAULT 0 COMMENT '报警状态 0-未处理 1-已处理',
  `alarm_time` datetime DEFAULT NULL COMMENT '报警时间',
  `handle_time` datetime DEFAULT NULL COMMENT '处理时间',
  `handle_user` varchar(255) DEFAULT NULL COMMENT '处理人',
  `handle_remark` text COMMENT '处理备注',
  `remark` text COMMENT '备注',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `idx_device_code` (`device_code`),
  KEY `idx_alarm_status` (`alarm_status`),
  KEY `idx_alarm_time` (`alarm_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报警数据表';
```

## 二、启动服务

启动 `zk-api-service` 服务。

## 三、测试接口

### 1. 模拟井盖设备报警

```
GET /alarmTest/simulateManhole
```

模拟井盖设备采集数据，会随机生成温度和倾斜角度，超过阈值时自动创建报警记录。

### 2. 模拟可燃气体设备报警

```
GET /alarmTest/simulateGas
```

模拟可燃气体设备采集数据，会随机生成温度、湿度和气体浓度，超过阈值时自动创建报警记录。

### 3. 模拟环境设备报警

```
GET /alarmTest/simulateEnvironment
```

模拟环境设备采集数据，会随机生成温度和湿度，超过阈值时自动创建报警记录。

### 4. 自定义报警

```
POST /alarmTest/customAlarm
Content-Type: application/json

{
  "deviceName": "自定义设备",
  "deviceCode": "CUSTOM-001",
  "deviceType": "custom",
  "warningType": "自定义预警",
  "warningCode": "WARN-CUSTOM",
  "warningValue": 100,
  "actualValue": 150,
  "remark": "自定义测试报警"
}
```

### 5. 查询报警数据

```
GET /alarmData/findByPage?pageNum=1&pageSize=10
```

分页查询报警数据。

### 6. 处理报警

```
POST /alarmData/handle
Content-Type: application/json

{
  "id": "报警记录ID",
  "handleUser": "处理人",
  "handleRemark": "处理备注"
}
```

## 四、已集成报警功能的服务

- **manhole-service** - 井盖服务
- **flammable-gas-service** - 可燃气体服务
- **environment-service** - 环境服务

## 五、其他服务集成方式

对于其他服务（audio-service, firefighting-pressure-service, radar-service, telemetry-service, water-level-service），可以按照以下步骤集成：

1. 创建 `AlarmUtil.java` 工具类（参考已有的实现）
2. 在数据保存的 Service 中注入 `AlarmUtil`
3. 在数据保存成功后调用报警检查方法
