onemap-api.md 12 KB

一张图接口文档

基础信息

  • 基础路径:/onemap
  • 请求方式:GET
  • 响应格式:{ code: 200, msg: "操作成功", data: {...} }

1. 顶部统计

GET /onemap/stats

页面顶部显示"单位数 / 在建工程 / 已建工程"

响应:

{
  "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

左侧"安全指标趋势分析"折线图

响应:

{
  "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

左侧"工程情况"柱状图

响应:

{
  "build": [
    { "key": "reservoir", "name": "水库", "count": 1207 },
    { "key": "dike",      "name": "堤防", "count": 792 }
  ],
  "built": [
    { "key": "reservoir", "name": "水库", "count": 45000 },
    { "key": "dike",      "name": "堤防", "count": 8000 }
  ]
}

数据来源: att_eng_baseeng_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 | 否 | 工程类型筛选 |

响应:

{
  "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

响应:

{
  "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 切换饼图

响应:

{
  "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 切换饼图

响应:

{
  "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

响应:

{
  "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

右侧"安责险信息"柱状图

响应:

{
  "years": ["2022", "2023", "2024"],
  "rate": [55.3, 62.1, 68.5]
}

⚠️ t_busi_insure_eva 表不存在时返回空数组


10. 单位列表

GET /onemap/units

顶部统计"单位数"点击后进入单位列表页

响应:

{
  "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

响应:

{
  "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

勾选"安全生产现状"图层时,给省级多边形染色

响应:

{
  "provinces": [
    { "code": "110000", "risk": "low" },
    { "code": "410000", "risk": "serious" }
  ]
}

数据来源: att_ad_base 按省级分组,统计 att_org_ext 机构数量划分风险


12.2 省级详情统计

GET /onemap/safety-province?code=

单击省级多边形弹出详情浮窗

参数: code — 省级行政区划码(如 410000

响应:

{
  "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 查县级)

响应:

[
  {
    "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 → 县级染色   │
└─────────────────────────────────────────────────────┘