1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- from fastapi import APIRouter, Request, Depends, Query, HTTPException, status
- from common.security import valid_access_token
- from sqlalchemy.orm import Session
- from sqlalchemy.sql import func
- from common.auth_user import *
- from sqlalchemy import text
- from pydantic import BaseModel
- from common.BigDataCenterAPI import *
- from database import get_db
- from typing import List
- from utils import *
- from utils.risk import *
- import json
- import traceback
- router = APIRouter()
- @router.post('/get_township_rain')
- async def mine(request: Request,db: Session = Depends(get_db)):
- try:
- body = await request.json()
- rn = body.get('rn')
- result = get_rain_township(db,rn)
- #print(result)
- return {
- "code": 200,
- "msg": "成功",
- "data":
- result
- }
- except Exception as e:
- db.rollback()
- traceback.print_exc()
- raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
- @router.post('/township_rain_warrning')
- async def mine(request: Request,body = Depends(remove_xss_json),db: Session = Depends(get_db)):
- try:
- body = await request.json()
- rn = body.get('rn')
- if rn is None:
- rn=1
- rain_data = get_rain_township(db,rn)
- raining_township = sum([i['value'] for i in rain_data])
- rain_dict = {i['name']:i['value'] for i in rain_data}
- max_rain = get_max_rain_township(db,rn)
- max_time = get_rain_max_time(db)
- max_rain_township = max_rain[0]["township"]
- max_rain_name = max_rain[0]["name"]
- max_rain_value = max_rain[0]["rainfall"]
- if raining_township==0:
- result = f'''截至{max_time},近{rn}小时内,当前无地区下雨 。'''
- else:
- result = f'''截至{max_time},近{rn}小时内,全市有 {raining_township}个站点发生降雨, 最大降雨出现在 {max_rain_township} {max_rain_name} 站点,累计雨量为{max_rain_value}毫米 。\n
- 其中,'''
- if rain_dict['小雨(0.1-10)']>0:
- result+=f"降雨量在0.1-10毫米之间的站点有 {rain_dict['小雨(0.1-10)']} 个;"
- if rain_dict['中雨(10-25)']>0:
- result+=f"降雨量在10-25毫米之间的站点有 {rain_dict['中雨(10-25)']} 个;"
- if rain_dict['大雨(25-50)']>0:
- result+=f"降雨量在25-50毫米之间的站点有 {rain_dict['大雨(25-50)']} 个;"
- if rain_dict['暴雨(50-100)']>0:
- result+=f"降雨量在50-100毫米之间的站点有 {rain_dict['暴雨(50-100)']} 个;"
- if rain_dict['大暴雨(100-250)']>0:
- result+=f"降雨量在100-250毫米之间的站点有 {rain_dict['大暴雨(100-250)']} 个;"
- if rain_dict['特大暴雨(>250)']>0:
- result+=f"降雨量大于250毫米的站点有 {rain_dict['特大暴雨(>250)']} 个;"
- result= result[:-1]+"。"
- #print(result)
- return {
- "code": 200,
- "msg": "成功",
- "data":
- {"result":result}
- }
- except Exception as e:
- db.rollback()
- traceback.print_exc()
- raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|