# 山东党校第一期需求
## 需求

* 对接党校9个子系统的数据
* 获取推送的数据进行大屏展示

## 对接甲方系统
* 门禁系统 缩写:eg
* 停车系统 缩写:car
* 消防应急系统 缩写:fire
* 用户采购系统 缩写:ap
* 会议系统 缩写:meeting
* 机房 缩写:machine
* 背景音乐 缩写:music
* 视频监控 缩写:video
* 设备故障管理 缩写:sm

## 详细需求
### 对接子系统采集数据
* c++程序,通过采集子系统数据，进行持久化的同时,并且进行mqtt的推送
* 消费者程序接收消息后,进行数据的处理
* 通过webscoket推送给前端进行数据的展示

### 通过手机端控制数据进行推送
* 手机页面显示9个不同的子系统模块
* 用户进行数据的填充，然后调用接口
* 后台接口通过webscoket推送到前端

## 注意事项
* c++程序进行mqtt数据推送的数据格式是json
* json里面需要的字段
    * module:子系统名称
    * business:业务名称
    * describe:描述(以此作为策略模式的开始)
    * data:json
* json示例
    * module:电力告警
    * business:火灾模块
    * describe:火灾事故统计
    * data:数据
* mqtt的topic主题命名规则:公司名称/系统名称/模块名称/接口描述
* 通道名称示例:sd/eg(门禁系统)/come(出入模块)/comeCount(出入统计)
* 消费者监听这些队列,然后通过策略模式为不同的子系统进行不同的实现

### 子系统的业务需求
#### 消防应急系统

* topic
  * sd/fire/程序模块编号/info
  * sd/fire/程序模块编号/alarm
* 响应参数

| 参数名称                   | 参数说明                          | 类型   | schema                                  |
| -------------------------- | --------------------------------- | ------ | --------------------------------------- |
| devId                      | 设备唯一编码                      | string |                                         |
| connType                   | 传输方式                          | string | 通信方式 G:4G N:NB L:LoRa S:专线 B:总线 |
| devs                       | 设备列表                          | array  | 设备列表                                |
| &emsp;&emsp;dp             | 设备属性                          | array  |                                         |
| &emsp;&emsp;&emsp;property | 属性名称                          | string |                                         |
| &emsp;&emsp;&emsp;value    | 属性值                            | string |                                         |
| &emsp;&emsp;&emsp;serial   | 序号                              | string |                                         |
| &emsp;&emsp;&emsp;status   | 告警状态                          | int    | 0未消除 1已消除                         |
| &emsp;&emsp;deviceName     | 设备名称                          | string |                                         |
| &emsp;&emsp;timeStamp      | 时间戳                            | string |                                         |
| &emsp;&emsp;devceType      | 设备类型                          | string |                                         |
| &emsp;&emsp;devcieModel    | 设备型号                          | string |                                         |
| &emsp;&emsp;devId          | 设备id                            | string |                                         |
| type                       | 数据类型 INFO:心跳数据 ALARM:告警 | string |                                         |
| timestamp                  | 时间戳                            | long   |                                         |

```json
{
    "devId":"1000001",
    "connType":"G",
     "deviceName":"烟感",
    "devs":[
        {
            "dp":[
                {
                    "property":"温度",
                    "serial":"xxx",
                    "value":"23"
                },
                {
                    "property":"电池",
                     "serial":"xxx",
                    "value":"77"
                },
                {
                    "property":"信号",
                     "serial":"xxx",
                    "value":"-144"
                }
            ],
            "deviceName":"烟感",
            "timeStamp":"",
            "devceType":"",
            "devcieModel":"xxxx",
            "devId":"xxx"
        }
    ],
    "type":"INFO",
    "timeStamp":"1627978385065"
}
```

```json
{
    "devId":"1000001",
    "connType":"G",
    "deviceName":"",
    "alarams":[
        {
            "dp":[
                {
                    "property":"信号",
                    "serial":"222",
                    "value":"-144",
                    "status":"1"
                }
            ],
            "deviceName":"烟感",
            "timeStamp":"",
            "devcieModel":"xxxxx",
            "deviceType":"",
            "devId":""
        }
    ],
    "type":"ALARM",
    "timeStamp":"1627978385065"
}
```

