# 一张图接口文档 ## 基础信息 - 基础路径:`/onemap` - 请求方式:GET - 响应格式:`{ code: 200, msg: "操作成功", data: {...} }` --- ## 1. 顶部统计 **`GET /onemap/stats`** > 页面顶部显示"单位数 / 在建工程 / 已建工程" **响应:** ```json { "unitCount": 128, "buildingCount": 45, "builtCount": 312 } ``` **数据来源:** | 字段 | 表 | 条件 | |------|---|------| | unitCount | att_org_base | status = '0' | | buildingCount | att_eng_base | eng_stat IS NULL / '' / '在建' | | builtCount | att_eng_base | eng_stat = '已建' / '完工' | --- ## 2. 安全指标趋势 **`GET /onemap/trend`** > 左侧"安全指标趋势分析"折线图 **响应:** ```json { "quarters": ["2024-Q1", "2024-Q2", "2024-Q3", "2024-Q4"], "series": [ { "name": "隐患排查率", "data": [85.2, 87.5, 89.1, 91.3] }, { "name": "隐患整改率", "data": [76.8, 80.2, 82.5, 85.0] }, { "name": "危险源辨识率", "data": [92.1, 93.5, 94.2, 95.0] }, { "name": "应急预案率", "data": [68.0, 68.0, 68.0, 68.0] }, { "name": "安责险购买率", "data": [55.3, 58.7, 62.1, 65.0] } ] } ``` **数据来源:** | 指标 | 表 | 字段 | 说明 | |------|---|------|------| | 隐患排查率 | t_busi_hidd_eva | pcl | 按 start_date 提取季度,取平均 | | 隐患整改率 | t_busi_hidd_eva | hidd_zgl | 同上 | | 危险源辨识率 | t_busi_haz_eva | haz_bsl | 同上 | | 应急预案率 | t_busi_plan_count | zh_plan+zx_plan+xc_plan / org_num | 全局固定值 | | 安责险购买率 | t_busi_insure_eva | bxl | 按 start_date 提取季度,取平均 | > ⚠️ 若表不存在,对应指标返回空数组,前端显示空白 --- ## 3. 工程类型统计 **`GET /onemap/eng-types`** > 左侧"工程情况"柱状图 **响应:** ```json { "build": [ { "key": "reservoir", "name": "水库", "count": 1207 }, { "key": "dike", "name": "堤防", "count": 792 } ], "built": [ { "key": "reservoir", "name": "水库", "count": 45000 }, { "key": "dike", "name": "堤防", "count": 8000 } ] } ``` **数据来源:** `att_eng_base` 按 `eng_type` + `eng_stat` 分组统计 **工程类型映射:** | key | 中文 | |-----|------| | res | 水库 | | waga | 水闸 | | pust | 泵站 | | hyst | 水电站 | | irr | 灌区 | | dike | 堤防 | | wadi | 引调水 | | sd | 淤地坝 | | cws | 农村供水 | | othe | 其他 | --- ## 4. 工程列表 **`GET /onemap/eng-list?keyword=&engType=`** > 双击工程情况卡片进入工程列表页 **参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | keyword | string | 否 | 工程名称模糊搜索 | | engType | string | 否 | 工程类型筛选 | **响应:** ```json { "rows": [ { "id": "a1b2c3...", "name": "旬邑县蚂蚁沟水库工程", "code": "610429000050", "engType": "水库", "status": "build", "lng": 108.29, "lat": 35.12, "unit": "旬邑县水利工作队", "areaCode": "610429", "source": "系统填报" } ], "total": 1 } ``` **数据来源:** `att_eng_base` LEFT JOIN `att_org_ext`(关联管理单位名称) --- ## 5. 工程详情 **`GET /onemap/eng-detail?id=`** > 单击工程列表项弹出详情卡片 **参数:** `id` — 工程 GUID **响应:** ```json { "id": "a1b2c3...", "name": "旬邑县蚂蚁沟水库工程", "engType": "水库", "source": "系统填报", "status": "已建", "startDate": "2020-01-01", "endDate": "2022-12-31", "importance": "重要", "scale": "中型", "area": "610429", "location": "无", "lng": 108.29, "lat": 35.12, "damType": "无", "floodStandard": "50", "deadWaterLevel": "无", "totalCapacity": "1200", "manageUnit": "旬邑县水利工作队", "waterDept": "无", "responsiblePersons": [ { "type": "工程主要负责人", "name": "张三", "phone": "138xxxx1234" }, { "type": "分管安全负责人", "name": "无", "phone": "无" } ], "safetyStatus": [ { "name": "安全生产许可证", "value": "无" }, { "name": "安全生产标准化", "value": "无" } ] } ``` **数据来源:** | 字段 | 表 | 说明 | |------|---|------| | 基础信息 | att_eng_base | 通过 guid 查询 | | manageUnit / waterDept | att_org_ext | 通过 org_rest 关联 | | responsiblePersons | att_org_ext | 法人、分管安全、安全联系人、应急联系人 | | safetyStatus | att_org_ext | 许可证、标准化等级、证书编号、资质等级 | --- ## 6. 危险源统计 **`GET /onemap/hazards`** > 右侧"危险源信息"4 个 Tab 切换饼图 **响应:** ```json { "hazardGrade": [{ "name": "一般危险源", "value": 120 }], "riskGrade": [{ "name": "低风险", "value": 80 }], "monitor": [{ "name": "视频监控", "value": 95 }], "control": [{ "name": "已管控", "value": 110 }] } ``` | Tab | 表 | 分组字段 | |-----|---|---------| | 危险源等级 | obj_haz | hidd_grad(1→一般危险源,2→重大危险源) | | 风险等级 | obj_haz | risk_grad | | 监测监控 | obj_haz | monitor_means | | 危险源管控 | obj_haz | if_control(Y→已管控) | --- ## 7. 隐患统计 **`GET /onemap/hiddens`** > 右侧"隐患信息"2 个 Tab 切换饼图 **响应:** ```json { "hiddGrade": [{ "name": "一般隐患", "value": 200 }], "rectify": [{ "name": "已整改", "value": 180 }, { "name": "未整改", "value": 20 }] } ``` | Tab | 表 | 分组字段 | |-----|---|---------| | 隐患等级 | obj_hidd | hidd_grad(1→一般隐患,2→重大隐患) | | 隐患整改 | obj_hidd | hidd_stat(0→未整改,1→整改中,2→已整改) | --- ## 8. 应急预案统计 **`GET /onemap/emergency`** > 右侧"应急预案信息"2 个 Tab **响应:** ```json { "planType": [ { "name": "综合预案", "value": 50 }, { "name": "专项预案", "value": 120 }, { "name": "现场处置方案", "value": 200 } ], "drill": [ { "name": "已演练", "value": 80 }, { "name": "未演练", "value": 290 } ] } ``` > ⚠️ `t_busi_plan_count` 表不存在时返回空数组 --- ## 9. 安责险统计 **`GET /onemap/insurance`** > 右侧"安责险信息"柱状图 **响应:** ```json { "years": ["2022", "2023", "2024"], "rate": [55.3, 62.1, 68.5] } ``` > ⚠️ `t_busi_insure_eva` 表不存在时返回空数组 --- ## 10. 单位列表 **`GET /onemap/units`** > 顶部统计"单位数"点击后进入单位列表页 **响应:** ```json { "gov": [ { "id": "xxx", "name": "水利部", "type": "水行政主管单位", "creditCode": "11100000000012345X", "area": "全国", "address": "北京市", "lng": 116.38, "lat": 39.91 } ], "company": [ { "id": "xxx", "name": "xxx公司", "type": "生产经营单位", "..." } ] } ``` **数据来源:** `att_org_base` JOIN `att_org_ext`,按 `wiun_prop` 分类 --- ## 11. 单位详情 **`GET /onemap/unit-detail?id=`** > 单击单位列表项弹出详情卡片 **参数:** `id` — 单位 org_guid **响应:** ```json { "id": "xxx", "name": "水利部", "creditCode": "11100000000012345X", "type": "水行政主管单位", "area": "xxx", "address": "北京市", "adminArea": "全国", "standardLevel": "一级", "fundSource": "财政拨款", "employeeCount": "150", "lng": 116.38, "lat": 39.91, "responsiblePersons": [...], "safetyStatus": [...] } ``` **数据来源:** `att_org_ext` 单表查询 --- ## 12. 安全生产现状图层 ### 12.1 省级风险等级 **`GET /onemap/safety`** > 勾选"安全生产现状"图层时,给省级多边形染色 **响应:** ```json { "provinces": [ { "code": "110000", "risk": "low" }, { "code": "410000", "risk": "serious" } ] } ``` **数据来源:** `att_ad_base` 按省级分组,统计 `att_org_ext` 机构数量划分风险 --- ### 12.2 省级详情统计 **`GET /onemap/safety-province?code=`** > 单击省级多边形弹出详情浮窗 **参数:** `code` — 省级行政区划码(如 `410000`) **响应:** ```json { "hazIdentRate": 0, "hazControlRate": 85.5, "hiddInvestRate": 0, "hiddRectRate": 0, "planReportRate": 0, "planDrillRate": 0, "insureRate": 0 } ``` > 部分指标因表不存在暂返回 0 --- ### 12.3 下级区域风险 **`GET /onemap/safety-children?code=`** > 双击省级 → 加载市级;双击市级 → 加载县级 **参数:** `code` — 父级行政区划码(如 `410000` 查市级,`410100` 查县级) **响应:** ```json [ { "code": "410100", "name": "郑州市", "grad": 2, "minLng": 112.82, "minLat": 34.12, "maxLng": 114.28, "maxLat": 34.98, "avgHazRate": 88.5, "avgPcl": 76.2, "avgHiddZgl": 92.1, "risk": "normal" } ] ``` **数据来源:** | 字段 | 表 | 说明 | |------|---|------| | code/name/grad/bbox | att_ad_base | 按 up_ad_guid 查子级 | | avgHazRate | t_busi_haz_eva | LEFT JOIN,按 AVG(haz_bsl) | | avgPcl | t_busi_hidd_eva | LEFT JOIN,按 AVG(pcl) | | avgHiddZgl | t_busi_hidd_eva | LEFT JOIN,按 AVG(hidd_zgl) | | risk | 计算得出 | 基于 avgHazRate + avgPcl 划分风险等级 | --- ## 前端数据流 ``` ┌─────────────────────────────────────────────────────┐ │ 页面加载 │ │ ├─ GET /onemap/stats → 顶部统计 │ │ ├─ GET /onemap/trend → 趋势折线图 │ │ ├─ GET /onemap/eng-types → 工程柱状图 │ │ ├─ GET /onemap/eng-list → 工程列表 │ │ ├─ GET /onemap/hazards → 危险源饼图 │ │ ├─ GET /onemap/hiddens → 隐患饼图 │ │ ├─ GET /onemap/emergency → 应急饼图 │ │ └─ GET /onemap/insurance → 保险柱状图 │ ├─────────────────────────────────────────────────────┤ │ 勾选"安全生产现状"图层 │ │ ├─ 前端加载 /geojson/provinces.geojson │ │ └─ GET /onemap/safety → 省级风险染色 │ ├─────────────────────────────────────────────────────┤ │ 单击省级多边形 │ │ └─ GET /onemap/safety-province?code=xx → 详情弹窗 │ ├─────────────────────────────────────────────────────┤ │ 双击省级多边形 │ │ ├─ 前端加载 /geojson/cities/{code}.json │ │ └─ GET /onemap/safety-children?code=xx → 市级染色 │ ├─────────────────────────────────────────────────────┤ │ 单击市级多边形 │ │ └─ GET /onemap/safety-children?parentCode=xx │ │ → .find(code) → 详情弹窗 │ ├─────────────────────────────────────────────────────┤ │ 双击市级多边形 │ │ ├─ 前端加载 /geojson/counties/{code}.json │ │ └─ GET /onemap/safety-children?code=xx → 县级染色 │ └─────────────────────────────────────────────────────┘ ```