# 尾流分析页 — 图表数据 JSON 格式说明 > 对应前端目录:`src/views/windResourceWake/` > 后端接口:`POST /energy-manage-analyse-service/wakewindfarm/getWakeWindFarm` > 当前前端图表配置:`utils/overviewChartOptions.js`、`utils/wakeChartOptions.js` --- ## 1. 页面与图表一览 | Tab | 区块 | 图表类型 | 前端函数 / 组件 | | -------- | ------------------------- | -------------------- | -------------------------------- | | 资源概览 | A2 各机组风速分布 | 阶梯折线图(多机组) | `getWindDistOption()` | | 资源概览 | 风向玫瑰图(每机组 1 张) | 极坐标堆叠柱状图 | `getSingleWindRoseOption(index)` | | 尾流情况 | 速度与损失分布(左) | 散点图 + 连续色带 | `getScatter1Option()` | | 尾流情况 | 速度与损失分布(右) | 散点图 | `getScatter2Option()` | | 尾流情况 | 尾流影响评估 | 双 Y 轴柱状图 | `getBarOption()` | | 尾流情况 | 尾流影响评估 | 表格 + 缩略图 | `WrwWakeTable` | --- ## 2. 接口请求与响应(Swagger) ### 2.1 请求 ```http POST /energy-manage-analyse-service/wakewindfarm/getWakeWindFarm?fieldCode={风场编号}&datatime={yyyy-MM-dd} ``` | 参数 | 位置 | 必填 | 说明 | | ----------- | ----- | ---- | ------------------------ | | `fieldCode` | query | 是 | 平台内部风场编号 | | `datatime` | query | 否 | 查询日期;为空时默认昨天 | ### 2.2 响应包装 ```json { "code": 200, "status": true, "msg": "success", "data": {} } ``` ### 2.3 `data` — `WakeWindFarmVO`(风场级) | 字段 | 类型 | 说明 | | ---------------------------- | ------------------ | ---------------------------------------------- | | `id` | number | 主键 | | `fieldId` | string | 风场 ID | | `dataDate` | string (date-time) | 数据日期(天) | | `windSpeedDistributionChart` | string | **风速分布图**资源路径(图片或 JSON 文件 URL) | | `wakeRoseDiagramPath` | string | **风向玫瑰图**资源路径 | | `wakeDistributePath` | string | 风场尾流影响分布图路径 | | `wakeLossConfidentPath` | string | 尾流亏损置信度散点图路径 | | `velocityDeficitPath` | string | 速度亏损柱状图路径 | | `wakeDiscriptionPath` | string | 尾流检测结果文本描述路径 | | `getWakeTurbineList` | `WakeTurbineVO[]` | 风机明细列表(表格 / 散点数据源) | ### 2.4 `WakeTurbineVO`(风机级) | 字段 | 类型 | 说明 | 前端表格列 | | --------------------- | ------------------ | ------------------------- | -------------------------- | | `engineId` | string | 风机 ID | 风机名称(可映射显示名) | | `fieldId` | string | 风场 ID | — | | `dateResource` | string (date-time) | 数据采集时间 | — | | `isWake` | number | 是否受尾流影响 `0/1` | 是否受尾流影响 | | `turbulenceIntensity` | number | 湍流强度 | 附加湍流强度 | | `velocityDeficit` | number | 尾流速度亏损 | 尾流速度损耗 | | `confidentLevel` | number | 检测置信度(如 `0.95`) | 置信度(前端展示为百分比) | | `wakeTurbinePath` | number | 单风机尾流影响图路径/标识 | 图片列 | ### 2.5 接口响应示例 ```json { "code": 200, "status": true, "msg": "success", "data": { "id": 1001, "fieldId": "WOF047502757", "dataDate": "2024-04-28T00:00:00", "windSpeedDistributionChart": "/minio/wake/WOF047502757/2024-04-28/wind-speed-dist.json", "wakeRoseDiagramPath": "/minio/wake/WOF047502757/2024-04-28/wind-rose.json", "wakeDistributePath": "/minio/wake/WOF047502757/2024-04-28/wake-distribute.png", "wakeLossConfidentPath": "/minio/wake/WOF047502757/2024-04-28/loss-confident.json", "velocityDeficitPath": "/minio/wake/WOF047502757/2024-04-28/velocity-deficit.json", "wakeDiscriptionPath": "/minio/wake/WOF047502757/2024-04-28/description.txt", "getWakeTurbineList": [ { "engineId": "JH03", "fieldId": "WOF047502757", "dateResource": "2024-04-28T00:00:00", "isWake": 1, "turbulenceIntensity": 80, "velocityDeficit": 2, "confidentLevel": 0.9, "wakeTurbinePath": "/minio/wake/turbine/JH03.png" }, { "engineId": "JH04", "fieldId": "WOF047502757", "dateResource": "2024-04-28T00:00:00", "isWake": 0, "turbulenceIntensity": 45, "velocityDeficit": 1, "confidentLevel": 0.95, "wakeTurbinePath": "/minio/wake/turbine/JH04.png" } ] } } ``` > **说明**:Swagger 中部分图表字段为 `*Path` 字符串。若后端直接返回可访问的 JSON 文件,前端需二次请求该 URL 并按下文「图表专用 JSON」解析;若后端改为在接口内嵌 JSON,建议使用下文推荐的 `charts` 结构。 --- ## 3. 推荐:前端图表专用 JSON 结构 以下为与当前 ECharts 实现对齐的**结构化数据**格式,便于后端一次性返回或写入 `*Path` 指向的 JSON 文件。 ```json { "meta": { "fieldCode": "WOF047502757", "fieldId": "WOF047502757", "datatime": "2024-04-28", "titleDate": "2024-04-28" }, "windSpeedDistribution": {}, "windRose": {}, "layoutLossScatter": {}, "lossConfidenceScatter": {}, "lossDelBar": {}, "turbineTable": [] } ``` --- ## 4. 各图表数据格式与示例 ### 4.1 A2 各机组风速分布(阶梯折线图) **用途**:对比各机组风速概率密度曲线。 **X 轴**:风速 (m/s),当前前端固定 `0 ~ 25`,步长 `0.5`。 **Y 轴**:概率密度,当前前端固定 `0 ~ 0.24`。 #### 字段说明 | 字段 | 类型 | 必填 | 说明 | | ------------------------ | ------ | ---- | ------------------------- | | `turbines` | array | 是 | 机组列表 | | `turbines[].engineId` | string | 是 | 机组编号,用于图例 | | `turbines[].displayName` | string | 否 | 展示名,缺省用 `engineId` | | `turbines[].color` | string | 否 | 折线颜色,缺省前端色板 | | `turbines[].points` | array | 是 | `[风速, 概率密度]` 二维点 | | `points[][0]` | number | 是 | 风速 m/s | | `points[][1]` | number | 是 | 概率密度 | #### 示例 ```json { "windSpeedDistribution": { "xAxis": { "min": 0, "max": 25, "interval": 5, "name": "风速 (m/s)" }, "yAxis": { "min": 0, "max": 0.24, "interval": 0.05, "name": "概率密度" }, "turbines": [ { "engineId": "JH03", "displayName": "JH03", "points": [ [0.0, 0.012], [0.5, 0.028], [1.0, 0.065], [3.0, 0.135], [5.0, 0.115], [7.0, 0.042] ] }, { "engineId": "JH04", "displayName": "JH04", "points": [ [0.0, 0.01], [0.5, 0.025], [3.0, 0.128], [5.5, 0.108] ] } ] } } ``` #### 映射到 ECharts series ```javascript // 每个 turbine 对应一条 series { name: turbine.engineId, type: "line", step: "middle", data: turbine.points // [[x,y], ...] } ``` --- ### 4.2 风向玫瑰图(极坐标堆叠柱状图) **用途**:每台机组一张玫瑰图,展示 16 方位 × 5 个风速段的频次。 **方位**:`N → NE → E → SE → S → SW → W → NW`(中间空槽位用于留白,共 16 格)。 **风速段**(固定顺序,与前端 `ROSE_SPEED_BANDS` 一致): 1. `0~3 m/s` 2. `3~6 m/s` 3. `6~9 m/s` 4. `9~12 m/s` 5. `>12 m/s` #### 字段说明 | 字段 | 类型 | 必填 | 说明 | | --------------------- | -------- | ---- | ------------------------------- | | `speedBands` | string[] | 否 | 风速段名称,默认见上 | | `directions` | string[] | 否 | 16 方位标签,默认含空字符串间隔 | | `turbines` | array | 是 | 每机组一组数据 | | `turbines[].engineId` | string | 是 | 机组编号(卡片标题) | | `turbines[].bands` | array | 是 | 长度 5,每个风速段一条 | | `bands[].band` | string | 是 | 风速段名称 | | `bands[].values` | number[] | 是 | 长度 16,各方位频次/占比 | #### 示例(单机组) ```json { "windRose": { "speedBands": ["0~3 m/s", "3~6 m/s", "6~9 m/s", "9~12 m/s", ">12 m/s"], "directions": [ "N", "", "NE", "", "E", "", "SE", "", "S", "", "SW", "", "W", "", "NW", "" ], "turbines": [ { "engineId": "JH03", "bands": [ { "band": "0~3 m/s", "values": [ 2.1, 1.8, 2.3, 1.5, 0.9, 0.6, 0.5, 0.4, 0.5, 0.6, 0.8, 1.2, 1.9, 2.0, 2.2, 1.7 ] }, { "band": "3~6 m/s", "values": [ 1.9, 1.6, 2.0, 1.3, 0.8, 0.5, 0.4, 0.3, 0.4, 0.5, 0.7, 1.0, 1.7, 1.8, 2.0, 1.5 ] }, { "band": "6~9 m/s", "values": [ 1.2, 1.0, 1.5, 0.9, 0.6, 0.4, 0.3, 0.2, 0.3, 0.4, 0.5, 0.8, 1.2, 1.3, 1.5, 1.1 ] }, { "band": "9~12 m/s", "values": [ 0.5, 0.4, 0.6, 0.3, 0.2, 0.1, 0.1, 0.1, 0.1, 0.2, 0.2, 0.3, 0.5, 0.5, 0.6, 0.4 ] }, { "band": ">12 m/s", "values": [ 0.2, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.2, 0.2, 0.2 ] } ] }, { "engineId": "JH04", "bands": [] } ] } } ``` --- ### 4.3 风电场布局与机组日尺度发电量损失图(散点图 1) **用途**:平面坐标展示机组位置,颜色/大小编码发电量损失百分比。 **点结构**:`[东西坐标(米), 南北坐标(米), 发电量损失(%)]` #### 字段说明 | 字段 | 类型 | 必填 | 说明 | | ---------------------- | ------ | ---- | -------------------------------------- | | `title` | string | 否 | 图表标题 | | `xAxis` | object | 否 | `{ min, max, name }` 东西方向 | | `yAxis` | object | 否 | `{ min, max, name }` 南北方向 | | `visualMap` | object | 否 | `{ min, max }` 损失色带范围,默认 0~85 | | `points` | array | 是 | 散点列表 | | `points[].engineId` | string | 是 | 机组 ID(点标签) | | `points[].east` | number | 是 | 东西坐标(米) | | `points[].north` | number | 是 | 南北坐标(米) | | `points[].lossPercent` | number | 是 | 发电量损失 % | #### 示例 ```json { "layoutLossScatter": { "title": "风电场布局与机组日尺度发电量损失图(2024-04-28)", "xAxis": { "min": 333200, "max": 333450, "name": "东西方向坐标(米)" }, "yAxis": { "min": 4172500, "max": 4174000, "name": "南北方向坐标(米)" }, "visualMap": { "min": 0, "max": 85 }, "points": [ { "engineId": "L9Xcm4u0", "east": 333330, "north": 4173350, "lossPercent": 7.8 }, { "engineId": "7xKAWgZW", "east": 333410, "north": 4172980, "lossPercent": 84.7 }, { "engineId": "3jyH154U", "east": 333270, "north": 4172520, "lossPercent": 0.4 } ] } } ``` #### ECharts 数据格式 ```javascript { name: "L9Xcm4u0", value: [333330, 4173350, 7.8] } ``` --- ### 4.4 日尺度损失与可信度散点图(散点图 2) **用途**:损失 % vs 可信度 %,用于区分高损失高/低可信区域。 **点结构**:`[发电量损失(%), 结果可信度(%)]` #### 字段说明 | 字段 | 类型 | 必填 | 说明 | | ---------------------------- | ------ | ---- | ------------------------------- | | `title` | string | 否 | 图表标题 | | `xAxis` | object | 否 | 损失轴 `{ min: 0, max: 90 }` | | `yAxis` | object | 否 | 可信度轴 `{ min: 65, max: 98 }` | | `points` | array | 是 | 散点列表 | | `points[].engineId` | string | 是 | 机组 ID | | `points[].lossPercent` | number | 是 | 发电量损失 % | | `points[].confidencePercent` | number | 是 | 结果可信度 % | | `points[].color` | string | 否 | 点颜色(如 `#4CAF50` 高可信) | #### 示例 ```json { "lossConfidenceScatter": { "title": "日尺度损失与可信度散点图(2024-04-28)", "points": [ { "engineId": "L9Xcm4u0", "lossPercent": 7.8, "confidencePercent": 92, "color": "#C0C0C0" }, { "engineId": "7xKAWgZW", "lossPercent": 84.7, "confidencePercent": 87, "color": "#E85D5D" }, { "engineId": "3jyH154U", "lossPercent": 0.4, "confidencePercent": 67, "color": "#E85D5D" }, { "engineId": "3dORuyAV", "lossPercent": 3.4, "confidencePercent": 95, "color": "#4CAF50" } ] } } ``` #### ECharts 数据格式 ```javascript { name: "L9Xcm4u0", value: [7.8, 92], itemStyle: { color: "#C0C0C0" } } ``` --- ### 4.5 各机组日尺度发电量损失与相对 DEL 指标(双柱图) **用途**:每台机组两根柱:发电量损失 %、相对 DEL 指标 %。 #### 字段说明 | 字段 | 类型 | 必填 | 说明 | | --------------------- | ------ | ---- | --------------------------------- | | `title` | string | 否 | 图表标题 | | `items` | array | 是 | 机组柱数据 | | `items[].engineId` | string | 是 | X 轴类目 | | `items[].lossPercent` | number | 是 | 发电量损失 %(左 Y 轴,0~100) | | `items[].delPercent` | number | 是 | 相对 DEL 指标 %(右 Y 轴,0~400) | #### 示例 ```json { "lossDelBar": { "title": "各机组日尺度发电量损失与相对DEL指标(2024-04-28)", "items": [ { "engineId": "L9Xcm4u0", "lossPercent": 7.8, "delPercent": 50.8 }, { "engineId": "o23d6LBB", "lossPercent": 7.5, "delPercent": 54.6 }, { "engineId": "I7EJ4nPt", "lossPercent": 59.6, "delPercent": 348.4 }, { "engineId": "7xKAWgZW", "lossPercent": 84.7, "delPercent": 324.4 } ] } } ``` --- ### 4.6 尾流影响评估表格 **用途**:分页表格,展示单机尾流诊断结果与缩略图。 #### 字段说明 | 字段 | 类型 | 必填 | 说明 | | ------------ | ------ | ---- | --------------------------------------------------- | | `name` | string | 是 | 风机名称(展示用) | | `engineId` | string | 否 | 风机 ID | | `affected` | string | 是 | `"yes"` / `"no"` 或后端 `isWake` 映射 `1→yes, 0→no` | | `turbulence` | number | 是 | 附加湍流强度 | | `loss` | number | 是 | 尾流速度损耗 | | `confidence` | string | 是 | 置信度展示,如 `"90%"` | | `image` | string | 是 | 缩略图 URL | #### 示例 ```json { "turbineTable": [ { "name": "风机01", "engineId": "JH03", "affected": "yes", "turbulence": 80, "loss": 2, "confidence": "90%", "image": "https://cdn.example.com/wake/JH03-thumb.png" }, { "name": "风机02", "engineId": "JH04", "affected": "no", "turbulence": 90, "loss": 1, "confidence": "80%", "image": "https://cdn.example.com/wake/JH04-thumb.png" } ] } ``` #### 从 `WakeTurbineVO` 映射示例 ```javascript { name: item.engineId, affected: item.isWake === 1 ? "yes" : "no", turbulence: item.turbulenceIntensity, loss: item.velocityDeficit, confidence: `${Math.round(item.confidentLevel * 100)}%`, image: item.wakeTurbinePath } ``` --- ## 5. 完整联调示例(推荐一次性返回) 以下为前端可直接消费的**聚合 JSON** 示例(可放在 `data.charts` 扩展字段,或由 `windSpeedDistributionChart` 等 Path 指向的同结构文件提供)。 ```json { "code": 200, "status": true, "msg": "success", "data": { "id": 1001, "fieldId": "WOF047502757", "dataDate": "2024-04-28T00:00:00", "windSpeedDistributionChart": null, "wakeRoseDiagramPath": null, "wakeDistributePath": null, "wakeLossConfidentPath": null, "velocityDeficitPath": null, "wakeDiscriptionPath": null, "getWakeTurbineList": [], "charts": { "meta": { "fieldCode": "WOF047502757", "datatime": "2024-04-28", "titleDate": "2024-04-28" }, "windSpeedDistribution": { "turbines": [ { "engineId": "JH03", "points": [ [0, 0.01], [1, 0.04], [3, 0.13], [5, 0.11], [7, 0.03] ] } ] }, "windRose": { "turbines": [ { "engineId": "JH03", "bands": [ { "band": "0~3 m/s", "values": [ 2.1, 1.8, 2.3, 1.5, 0.9, 0.6, 0.5, 0.4, 0.5, 0.6, 0.8, 1.2, 1.9, 2.0, 2.2, 1.7 ] } ] } ] }, "layoutLossScatter": { "title": "风电场布局与机组日尺度发电量损失图(2024-04-28)", "points": [ { "engineId": "JH03", "east": 333330, "north": 4173350, "lossPercent": 7.8 } ] }, "lossConfidenceScatter": { "title": "日尺度损失与可信度散点图(2024-04-28)", "points": [ { "engineId": "JH03", "lossPercent": 7.8, "confidencePercent": 92 } ] }, "lossDelBar": { "title": "各机组日尺度发电量损失与相对DEL指标(2024-04-28)", "items": [ { "engineId": "JH03", "lossPercent": 7.8, "delPercent": 50.8 } ] }, "turbineTable": [ { "name": "JH03", "engineId": "JH03", "affected": "yes", "turbulence": 80, "loss": 2, "confidence": "90%", "image": "/minio/wake/turbine/JH03.png" } ] } } } ``` --- ## 6. 前端对接建议 1. **筛选参数**:风场 `fieldCode`、日期 `datatime` 与 `WrwFilterBar` 保持一致。 2. **优先顺序**:若 `data.charts` 存在则直接渲染;否则按 `*Path` 拉取 JSON/图片。 3. **表格数据**:无 `charts.turbineTable` 时,用 `getWakeTurbineList` 按 §4.6 映射。 4. **色阶与阈值**(表格单元格样式,前端写死,无需接口返回): - 湍流强度:`≥80` 高、`≥60` 中、其余低 - 速度损耗:`≥3` 高、`≥2` 中、其余低 - 置信度:`≥90%` 高、`≥80%` 中、其余低 --- ## 7. 相关源码索引 | 文件 | 说明 | | ---------------------------------------------------------- | --------------------------------------- | | `src/views/windResourceWake/utils/overviewChartOptions.js` | 风速分布、风向玫瑰图 | | `src/views/windResourceWake/utils/wakeChartOptions.js` | 三张尾流散点/柱图 | | `src/views/windResourceWake/data/mockData.js` | 当前 Mock 表格与机组名 | | `src/views/windResourceWake/components/WrwOverviewTab.vue` | 资源概览 Tab | | `src/views/windResourceWake/components/WrwWakeTab.vue` | 尾流情况 Tab | | `swagger.json` | `WakeWindFarmVO` / `WakeTurbineVO` 定义 | | `docs/API_DESIGN_REPORT_energy-manage-analyse.md` | 分析服务 API 总览 |