__init__.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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 models import *
  14. from utils import *
  15. from utils.spatial import *
  16. import json
  17. import traceback
  18. from jobs.rainfall_conditions_job import get_stcd_data
  19. from datetime import datetime,timedelta
  20. router = APIRouter()
  21. @router.get("/info/{code}")
  22. async def get_pattern_info(
  23. code: str,
  24. db: Session = Depends(get_db)
  25. ):
  26. rainfulldata = get_stcd_data(code,12)
  27. update_time_list = []
  28. rainfall_history = []
  29. rainfall_future = []
  30. cumulative_rainfall = []
  31. for i in rainfulldata[::-1]:
  32. area_name = i['F3070220000034_000018002']
  33. update_time_list.append( datetime.strptime(i['F3070220000034_000018006'], "%Y-%m-%d %H:%M:%S"))
  34. create_time = datetime.strptime(i['F3070220000034_000018004'], "%Y-%m-%d %H:%M:%S")
  35. hour = create_time.strftime("%H")
  36. value = i['F3070220000034_000018005']
  37. rainfall_history.append({"hour":hour,"value":value})
  38. update_time_max = max(update_time_list).strftime("%Y-%m-%d %H:%M:%S")
  39. for t in range(1,13):
  40. future_time = create_time+ timedelta(hours=t)
  41. hour = future_time.strftime("%H")
  42. value = 0
  43. rainfall_future.append({"hour":hour,"value":value})
  44. rainfall = 0
  45. for cumulative in rainfall_history+rainfall_future:
  46. rainfall += cumulative['value']
  47. cumulative_rainfall.append({"hour":cumulative['hour'],"value":rainfall})
  48. return {
  49. "code": 200, "msg": "获取成功", "data":{"areaName":area_name,"updateTime":update_time_max,"rainfallHistory":rainfall_history,"rainfallFuture":rainfall_future,"cumulativeRainfall":cumulative_rainfall}
  50. }