diff --git a/das/src/main/java/com/das/modules/page/controller/HomeController.java b/das/src/main/java/com/das/modules/page/controller/HomeController.java index 38f191d0..ed5e62db 100644 --- a/das/src/main/java/com/das/modules/page/controller/HomeController.java +++ b/das/src/main/java/com/das/modules/page/controller/HomeController.java @@ -1,9 +1,10 @@ package com.das.modules.page.controller; import com.das.common.result.R; -import com.das.modules.page.domian.HomeWindFarmRealDataVo; -import com.das.modules.page.domian.HomeWindTurbineMatrixDataVoVo; +import com.das.modules.data.domain.TSValueQueryParam; import com.das.modules.page.domian.dto.WindFarmRealDataDto; +import com.das.modules.page.domian.vo.HomeWindFarmRealDataVo; +import com.das.modules.page.domian.vo.HomeWindTurbineMatrixDataVoVo; import com.das.modules.page.service.HomeService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Map; /** * 首页相关Controller @@ -46,4 +48,12 @@ public class HomeController { } + + /** + * 获取历史数据(1.获取功率趋势的曲线,2.发电量日 趋势的曲线) + */ + @PostMapping("/getHistoryData") + public R>>> getHistoryData(@RequestBody TSValueQueryParam param) { + return R.success(homeService.getHistoryData(param)); + } } diff --git a/das/src/main/java/com/das/modules/page/domian/HomeWindFarmRealDataVo.java b/das/src/main/java/com/das/modules/page/domian/vo/HomeWindFarmRealDataVo.java similarity index 83% rename from das/src/main/java/com/das/modules/page/domian/HomeWindFarmRealDataVo.java rename to das/src/main/java/com/das/modules/page/domian/vo/HomeWindFarmRealDataVo.java index e9ce6c9f..cb31be2f 100644 --- a/das/src/main/java/com/das/modules/page/domian/HomeWindFarmRealDataVo.java +++ b/das/src/main/java/com/das/modules/page/domian/vo/HomeWindFarmRealDataVo.java @@ -1,4 +1,4 @@ -package com.das.modules.page.domian; +package com.das.modules.page.domian.vo; import lombok.Data; diff --git a/das/src/main/java/com/das/modules/page/domian/HomeWindTurbineMatrixDataVoVo.java b/das/src/main/java/com/das/modules/page/domian/vo/HomeWindTurbineMatrixDataVoVo.java similarity index 94% rename from das/src/main/java/com/das/modules/page/domian/HomeWindTurbineMatrixDataVoVo.java rename to das/src/main/java/com/das/modules/page/domian/vo/HomeWindTurbineMatrixDataVoVo.java index 1669b648..0541368d 100644 --- a/das/src/main/java/com/das/modules/page/domian/HomeWindTurbineMatrixDataVoVo.java +++ b/das/src/main/java/com/das/modules/page/domian/vo/HomeWindTurbineMatrixDataVoVo.java @@ -1,4 +1,4 @@ -package com.das.modules.page.domian; +package com.das.modules.page.domian.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; diff --git a/das/src/main/java/com/das/modules/page/service/HomeService.java b/das/src/main/java/com/das/modules/page/service/HomeService.java index 4658829b..b7c86286 100644 --- a/das/src/main/java/com/das/modules/page/service/HomeService.java +++ b/das/src/main/java/com/das/modules/page/service/HomeService.java @@ -1,10 +1,12 @@ package com.das.modules.page.service; -import com.das.modules.page.domian.HomeWindFarmRealDataVo; -import com.das.modules.page.domian.HomeWindTurbineMatrixDataVoVo; +import com.das.modules.data.domain.TSValueQueryParam; import com.das.modules.page.domian.dto.WindFarmRealDataDto; +import com.das.modules.page.domian.vo.HomeWindFarmRealDataVo; +import com.das.modules.page.domian.vo.HomeWindTurbineMatrixDataVoVo; import java.util.List; +import java.util.Map; public interface HomeService { /** @@ -22,30 +24,13 @@ public interface HomeService { */ HomeWindFarmRealDataVo getWindFarmRealData(WindFarmRealDataDto windFarmRealDataDto); - /** - * 接口3: 获取功率趋势的曲线 - * 页面左下角【功率趋势】 - * 测点:WindFarmActivePower全场总有功功率、WindFarmAvgWindSpeed 全场平均风速 - * 时间间隔 5分钟 - * 时间区间从 今天的00:00:00 到 现在的时间 - */ /** - * 接口4: 发电量日 趋势的曲线 - * 页面右中角【发电量趋势】中的日 - * 测点:WindFarmDayProdEnergy 日发电量 - * 时间间隔 1天 - * 时间区间从 本月1号 到月末31号 一个月一天一条记录 - * 同期就是去年对应时间 + * 获取历史数据(1.获取功率趋势的曲线,2.发电量日趋势的曲线) */ + Map>> getHistoryData(TSValueQueryParam param); + + - /** - * 接口5: 发电量月 趋势的曲线 - * 页面右中角【发电量趋势】中的日 - * 测点:WIndFarmMonthProdEnergy 月发电量 - * 时间间隔 1月 - * 时间区间从 今年的1月1日 到 年底12月31日 一年每个月一条记录 - * 同期就是去年对应时间 - */ } diff --git a/das/src/main/java/com/das/modules/page/service/impl/HomeServiceImpl.java b/das/src/main/java/com/das/modules/page/service/impl/HomeServiceImpl.java index 7b5da110..a5b4bcdd 100644 --- a/das/src/main/java/com/das/modules/page/service/impl/HomeServiceImpl.java +++ b/das/src/main/java/com/das/modules/page/service/impl/HomeServiceImpl.java @@ -3,14 +3,17 @@ package com.das.modules.page.service.impl; import com.das.common.constant.EquipmentTypeIds; import com.das.modules.data.domain.SnapshotValueQueryParam; +import com.das.modules.data.domain.TSValueQueryParam; import com.das.modules.data.service.impl.DataServiceImpl; import com.das.modules.equipment.domain.dto.SysEquipmentDto; import com.das.modules.equipment.domain.vo.SysEquipmentVo; import com.das.modules.equipment.mapper.SysEquipmentMapper; -import com.das.modules.page.domian.HomeWindFarmRealDataVo; -import com.das.modules.page.domian.HomeWindTurbineMatrixDataVoVo; import com.das.modules.page.domian.dto.WindFarmRealDataDto; +import com.das.modules.page.domian.vo.HomeWindFarmRealDataVo; +import com.das.modules.page.domian.vo.HomeWindTurbineMatrixDataVoVo; import com.das.modules.page.service.HomeService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,6 +21,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +@Slf4j @Service public class HomeServiceImpl implements HomeService { @@ -145,4 +149,30 @@ public class HomeServiceImpl implements HomeService { } return homeWindFarmRealDataVo; } + + + /** + * 获取历史数据(1.获取功率趋势的曲线,2.发电量日 趋势的曲线) + */ + @Override + public Map>> getHistoryData(TSValueQueryParam param) { + List devices = param.getDevices(); + for (SnapshotValueQueryParam device : devices) { + if (StringUtils.isBlank(device.getDeviceId())){ + //查询数据库中风电场设备,取第一个风电场 + SysEquipmentDto sysEquipmentDto = new SysEquipmentDto(); + sysEquipmentDto.setObjectType(EquipmentTypeIds.EQUIPMENT_TYPE_WIND_FARM); + List list = sysEquipmentMapper.queryEquipmentList(sysEquipmentDto); + if(list.isEmpty()){ + throw new RuntimeException("系统中没有风电场台账信息"); + } + device.setDeviceId(list.get(0).getId().toString()); + } + } + Map>> mapResult = dataServiceImpl.queryTimeSeriesValues(param); + return mapResult; + } + + + } diff --git a/docs/api/pages/home.md b/docs/api/pages/home.md index 70392fd9..d04a37d6 100644 --- a/docs/api/pages/home.md +++ b/docs/api/pages/home.md @@ -2,25 +2,19 @@ ## API接口一览表 -| 接口分类 | 接口描述 | 查询条件 | API接口 | 权限 | -|--------|-------------|------------------------------| ---------------------------- | ---------------------------- | -| 2.1 首页 | 2.1.1风场概况 | 实时数据,没有入参 | /api/home/windFarmOverview | | -| | 2.1.2今日运行状态 | 实时数据,没有入参 | /api/home/currentDayStatus | | -| | 2.1.3功率趋势 | 当天24小时数据,5分钟间隔 | /api/home/powerTrends | | -| | 2.1.4风机矩阵 | 实时数据,没有参数 | /api/home/windTurbineMatrix | | -| | 2.1.5发电量概况 | 昨日数据; | /api/home/generationOverview | | -| | 2.1.6发电量趋势 | 日: 当前月的每日数据;同期是去年数据;月:当年每月月数据,12个月; | /api/home/generationTrend | | -| | 2.1.7实时告警 | 近一个月内所有的报警数据,滚动显示;已确认的数据 按钮灰色;未确认的显示确认按钮 | /api/home/realTimeAlert | | -| | 2.1.8实时告警确认 | 告警记录ID | /api/home/realTimeAlertConfirm | | +| 接口分类 | 接口描述 | 查询条件 | API接口 | 权限 | +|--------|----------------|-----------| ---------------------------- | ---------------------------- | +| 2.1 首页 | 2.1.1风机矩阵 | 实时数据,没有入参 | /api/home/getWindTurbineMatrixData | | +| | 2.1.2获取风电场实时数据 | 风电场id | /api/home/getWindFarmRealData | | ## 2.1 首页相关接口 -### 2.1.1 风场概况 +### 2.1.1 风机矩阵 POST 请求接口 -> /api/home/windFarmOverview +> /api/home/getWindTurbineMatrixData 请求参数 @@ -32,366 +26,157 @@ POST 请求接口 ```json { - "code": 200, - "msg": "操作成功", - "success": true, - "data": - { - "power": 56.2, - "windSpeed": 45.3, - "dailyUsageHours": 20, - "monthlyUsageHours": 78 - } + "code": 200, + "success": true, + "data": [ + { + "irn": "1846101273013739522", + "name": "A-001", + "modelId": "1807685851882508289", + "model": "倍福1.5", + "belongLine": "线路1", + "standard": 1, + "nominalCapacity": 66.23, + "attributeMap": { + "iwindspeed": 10.84000015258789, + "iturbineoperationmode": 6, + "iyplevel": 0, + "ikwhthisday": 0, + "igenpower": 0, + "gridlostdetected": 0 + } + } + ], + "msg": "操作成功" } ``` 返参描述 | 参数名 | 参数类型 | 可选 | 描述 | -| ------------- |---------| ---- |--------| -| power | Double | 否 | 功率 | -| windSpeed | Double | 否 | 风速 | -| dailyUsageHours | Integer | 否 | 日利用小时数 | -| monthlyUsageHours | Integer | 否 | 月利用小时数 | +| ------------ |---------| ---- |--------| +| standard | Integer | 否 | 是否标杆 | +| nominalCapacity | Double | 否 | 容量 | +| iwindspeed | Double | 否 | 风速 | +| iyplevel | Double | 否 | 偏航运行模式 | +| ikwhthisday | Double | 否 | 日发电量 | +| igenpower | Double | 否 | 有功功率 | +| gridlostdetected | Double | 否 | 风机电网掉电 | -### 2.1.2 今日运行状态 +### 2.1.2 获取风电场实时数据 POST 请求接口 -> /api/home/currentDayStatus +> /api/home/getWindFarmRealData 请求参数 +```json +{ + "windFarmId":1846101273013739522 +} +``` +入参描述 -无 - -注:实时数据,没有入参 +| 参数名 | 参数类型 | 可选 | 描述 | +| ------------ |------| ---- |------| +| windFarmId | Long | yes | 风场id | 返回报文 ```json { - "code": 200, - "msg": "操作成功", - "success": true, - "data": - { - "windTurbineNum": 40, - "installedCapacity": 45.32, - "runCapacity": 20.2, - "runNum": 78, - "standbyCapacity": 63.2, - "standbyNum": 35, - "faultCapacity": 56.4, - "faultNum": 53, - "offlineCapacity": 16.4, - "offlineNum": 20 - } + "code": 200, + "success": true, + "data": { + "windFarmId": 1848624295633317890, + "attributeMap": { + "windfarmactivepower": 111.01, + "windfarmavgwindspeed": 111.01, + "windfarmdayoperationhours": 111.01, + "windfarmmonthoperationhours": 111.01, + "windfarmdayprodenergy": 111.01, + "windfarmmonthprodenergy": 111.01, + "windfarmyearprodenergy": 111.01, + "windfarmtotalprodenergy": 111.01 + } + }, + "msg": "操作成功" } ``` 返参描述 | 参数名 | 参数类型 | 可选 | 描述 | | ------------- |---------| ---- |------| -| windTurbineNum | Integer | 否 | 风机台数 | -| installedCapacity | Double | 否 | 装机容量 | -| runCapacity | Double | 否 | 运行容量 | -| runNum | Integer | 否 | 运行台数 | -| standbyCapacity | Double | 否 | 待机容量 | -| standbyNum | Integer | 否 | 待机台数 | -| faultCapacity | Double | 否 | 故障容量 | -| faultNum | Integer | 否 | 故障台数 | -| offlineCapacity | Double | 否 | 离线容量 | -| offlineNum | Integer | 否 | 离线台数 | +| windFarmId | Long | 否 | 风场id | +| windfarmactivepower | Double | 否 | 功率 | +| windfarmavgwindspeed | Double | 否 | 平均风速 | +| windfarmdayoperationhours | Double | 否 | 日利用小时 | +| windfarmmonthoperationhours | Double | 否 | 月利用小时 | +| windfarmdayprodenergy | Double | 否 | 日发电量 | +| windfarmmonthprodenergy | Double | 否 | 月发电量 | +| windfarmyearprodenergy | Double | 否 | 年发电量 | +| windfarmtotalprodenergy | Double | 否 | 总发电量 | - -### 2.1.3 功率趋势 +### 2.1.3 获取风电场历史数据 POST 请求接口 -> /api/home/powerTrends +> /api/home/getHistoryData 请求参数 - -无 - -注:当天24小时数据,5分钟间隔 - -返回报文 - ```json { - "code": 200, - "msg": "操作成功", - "success": true, - "data": [ - { - "power": 12.6, - "windSpeed": 56.3, - "dataTime": "2024-10-17 00:00:00" - }, - { - "power": 10.6, - "windSpeed": 16.3, - "dataTime": "2024-10-17 00:05:00" - } - ] + "startTime": "123452435324242", + "endTime": "123452435924242", + "devices": [ + { + "deviceId":"129476828342323", + "attributes":["power","windSpeed"] + }, + { + "deviceId":"129476828342324", + "attributes":["power","dailyUsageHours"] + } + ], + "interval": "5m" } ``` - -返参描述 - -| 参数名 | 参数类型 | 可选 | 描述 | -|-------------|--------| ---- |------| -| power | Double | 否 | 功率 | -| windSpeed | Double | 否 | 风速 | -| dataTime | String | 否 | 数据时间 | - -### 2.1.4 风机矩阵 - -POST 请求接口 - -> /api/home/windTurbineMatrix - -请求参数 - -无 - -注:实时数据 - -返回报文 - -```json -{ - "code": 200, - "msg": "操作成功", - "success": true, - "data": [ - { - "power": 12.6, - "windSpeed": 56.3, - "dayGeneration": 56.2, - "windStatus": "并网", - "standard": 1, - "windTurbine": "GDWT00001" - }, - { - "power": 12.6, - "windSpeed": 56.3, - "dayGeneration": 56.2, - "windStatus": "待机", - "standard": 1, - "windTurbine": "GDWT00002" - } - ] -} -``` - -返参描述 - -| 参数名 | 参数类型 | 可选 | 描述 | -|-------------|---------| ---- |---------| -| power | Double | 否 | 功率 | -| windSpeed | Double | 否 | 风速 | -| dayGeneration | Double | 否 | 日发电量 | -| windStatus | String | 否 | 风机状态 | -| standard | Integer | 否 | 是否为标杆机组 | -| windTurbine | String | 否 | 风机编码 | - -### 2.1.5 发电量概况 - -POST 请求接口 - -> /api/home/generationOverview - -请求参数 - - -```json -{ - "requestTime":"2024-10-16" -} -``` - 入参描述 | 参数名 | 参数类型 | 可选 | 描述 | | ------------ | -------- | ---- |------| -| requestTime | String | yes | 请求时间 | - -注:请求时间默认为:昨日时间 - +| startTime | String | no | 开始时间戳 | +| endTime | String | no | 结束时间戳 | +| devices.deviceId | String | no | 设备ID | +| devices.attributes | StringArray | no | 要查询实时数据的设备属性列表 | +| interval | String | yes | 抽样间隔,1a(毫秒),1s(秒),1m(分),1h(小时),1d(天),1w(周)。 忽略或者值为空时,返回原始数据(不抽样) | +| endTime | String | no | 结束时间戳 | 返回报文 ```json { - "code": 200, - "msg": "操作成功", - "success": true, - "data": - { - "dailyGeneration": 63.2, - "dayGeneration": 56.2, - "monthGeneration": 60.2, - "yearGeneration": 200.6, - "totalGeneration": 500.6 + "code": 200, + "msg": "操作成功", + "success": true, + "data": { + //设备ID + "129476828342323":{ + //属性名 + "power": { + //时间戳列表 + "times": [123452435924242,123452435924342,123452435924442,123452435924542], + //值列表 + "values": [123.23,35.21,34.56,67] + } , + //属性名 + "windSpeed": { + "times": [123452435924242,123452435924342,123452435924442,123452435924542], + "values": [123.23,35.21,34.56,67] } - + }, + ....... + } } ``` - -返参描述 - -| 参数名 | 参数类型 | 可选 | 描述 | -|-------------|---------| ---- |-------| -| dailyGeneration | Double | 否 | 当日发电量 | -| dayGeneration | Double | 否 | 日发电量 | -| monthGeneration | Double | 否 | 月发电量 | -| yearGeneration | Double | 否 | 年发电量 | -| totalGeneration | Double | 否 | 总发电量 | - -### 2.1.6 发电量趋势 - -POST 请求接口 - -> /api/home/generationTrend - -请求参数 - - -```json -{ - "timeType":"日" -} -``` -注: 日:当前月的每日数据;同期是去年数据;月:当年每月月数据,12个月; - -入参描述 - -| 参数名 | 参数类型 | 可选 | 描述 | -| ------------ | -------- | ---- |------| -| timeType | String | yes | 时间类型 | - - -返回报文 - -```json -{ - "code": 200, - "msg": "操作成功", - "success": true, - "data": [ - { - "currentPeriod": 56.3, - "samePeriod": 63.5, - "generationTime": "2024-10-01" - }, - { - "currentPeriod": 66.3, - "samePeriod": 73.5, - "generationTime": "2024-10-02" - } - ] - -} -``` - -返参描述 - -| 参数名 | 参数类型 | 可选 | 描述 | -|-------------|---------| ---- |-------| -| currentPeriod | Double | 否 | 本期 | -| samePeriod | Double | 否 | 同期 | -| generationTime | Double | 否 | 发电量时间 | - -### 2.1.7 实时告警 - -POST 请求接口 - -> /api/home/realTimeAlert - -请求参数 - -无 - -注:近一个月内所有的报警数据,滚动显示;已确认的数据 按钮灰色;未确认的显示确认按钮 - -返回报文 - -```json -{ - "code": 200, - "msg": "操作成功", - "success": true, - "data": [ - { - "alertTime": "2024-10-16 12:16:42", - "windTurbine": "SC-01", - "alertContent": "故障", - "alertId": 4562366, - "confirmStatus": 0 - }, - { - "alertTime": "2024-10-16 12:16:42", - "windTurbine": "SC-01", - "alertContent": "待机", - "alertId": 4562366555, - "confirmStatus": 1 - } - ] - -} -``` -返参描述 - -| 参数名 | 参数类型 | 可选 | 描述 | -|-------------|---------| ---- |------| -| alertTime | String | 否 | 告警时间 | -| windTurbine | String | 否 | 风机编码 | -| alertContent | String | 否 | 告警内容 | -| alertId | Long | 否 | 告警id | -| confirmStatus | Integer | 否 | 确认状态 | - -### 2.1.8 实时告警-确认 - -POST 请求接口 - -> /api/home/realTimeAlertConfirm - -请求参数 - - -```json -{ - "alertId":45566222 -} -``` - -入参描述 - -| 参数名 | 参数类型 | 可选 | 描述 | -| ------------ |------| ---- |------| -| alertId | Long | yes | 告警id | - - - -返回报文 - -```json -{ - "code": 200, - "msg": "操作成功", - "success": true, - "data": [ - - ] - -} -``` - -返参描述 - -| 参数名 | 参数类型 | 可选 | 描述 | -|-------------|---------| ---- |-------| -