hazardous_condition.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends, Query, HTTPException, status
  4. from common.security import valid_access_token
  5. from sqlalchemy.orm import Session
  6. from sqlalchemy.sql import func
  7. from common.auth_user import *
  8. from sqlalchemy import text
  9. from pydantic import BaseModel
  10. from common.BigDataCenterAPI import *
  11. from database import get_db
  12. from typing import List
  13. from utils import *
  14. from utils.risk import *
  15. import json
  16. import traceback
  17. router = APIRouter()
  18. @router.post('/get_max_hazardous')
  19. async def mine(request: Request,db: Session = Depends(get_db)):
  20. try:
  21. body = await request.json()
  22. result = get_max_forest_level(db)
  23. print(result)
  24. return {
  25. "code": 200,
  26. "msg": "成功",
  27. "data":
  28. {"max_level":result}
  29. }
  30. except Exception as e:
  31. db.rollback()
  32. traceback.print_exc()
  33. raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
  34. def get_warning_description(level):
  35. if level == 1:
  36. return "无危险"
  37. elif level == 2:
  38. return "较低危险"
  39. elif level == 3:
  40. return "中等危险"
  41. elif level == 4:
  42. return "高火险级"
  43. elif level == 5:
  44. return "最高火险级"
  45. else:
  46. return "未知等级"
  47. @router.post('/hazardous_warrning')
  48. async def mine(request: Request,db: Session = Depends(get_db)):
  49. try:
  50. result = "当前预警等级较高的风险区域:"+"电白区、信宜市"
  51. print(result)
  52. return {
  53. "code": 200,
  54. "msg": "成功",
  55. "data":
  56. {"result":"较大风险"}
  57. }
  58. except Exception as e:
  59. db.rollback()
  60. traceback.print_exc()
  61. raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
  62. @router.post('/hazardous_warrning_count')
  63. async def mine(request: Request,db: Session = Depends(get_db)):
  64. try:
  65. result = get_hazardous_warring_count(db)
  66. print(result)
  67. return {
  68. "code": 200,
  69. "msg": "成功",
  70. "data":
  71. {"result":result}
  72. }
  73. except Exception as e:
  74. db.rollback()
  75. traceback.print_exc()
  76. raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")