__init__.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. }
  51. @router.get("/gdyl/info/{code}")
  52. async def get_pattern_info(
  53. code: str,
  54. db: Session = Depends(get_db)
  55. ):
  56. rainfulldata = get_stcd_data(code,25)
  57. update_time_list = []
  58. rainfall_history = []
  59. rainfall_future = []
  60. # cumulative_rainfall = []
  61. num = 24
  62. for i in rainfulldata[::-1]:
  63. area_name = i['F3070220000034_000018002']
  64. update_time_list.append( datetime.strptime(i['F3070220000034_000018006'], "%Y-%m-%d %H:%M:%S"))
  65. create_time = datetime.strptime(i['F3070220000034_000018004'], "%Y-%m-%d %H:%M:%S")
  66. # hour = create_time.strftime("%H")
  67. value = i['F3070220000034_000018005']
  68. if num in [24,12,6,3,1,0]:
  69. rainfall_history.append({"hour":-num,"value":value})
  70. num-=1
  71. update_time_max = max(update_time_list).strftime("%Y-%m-%d %H:%M:%S")
  72. # for t in range(72):
  73. # future_time = create_time+ timedelta(hours=t)
  74. # hour = future_time.strftime("%H")
  75. # value = 0
  76. rainfall_future.append({"hour":1,"value":0})
  77. rainfall_future.append({"hour":3,"value":0})
  78. rainfall_future.append({"hour":24,"value":1})
  79. rainfall_future.append({"hour":48,"value":4})
  80. rainfall_future.append({"hour":72,"value":2})
  81. rainfall = 0
  82. # for cumulative in rainfall_history+rainfall_future:
  83. # rainfall += cumulative['value']
  84. # cumulative_rainfall.append({"hour":cumulative['hour'],"value":rainfall})
  85. return {
  86. "code": 200, "msg": "获取成功", "data":{"areaName":area_name,"updateTime":update_time_max,"rainfallHistory":rainfall_history,"rainfallFuture":rainfall_future}#,"cumulativeRainfall":cumulative_rainfall}
  87. }