__init__.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. from .rain_pits import router as rain_pits_router
  21. from .dzzh import router as dzzh_router
  22. from .chemical_company import router as chemical_company_router
  23. router = APIRouter()
  24. router.include_router(rain_pits_router, prefix="/rain_pits")
  25. router.include_router(dzzh_router, prefix="/dzzh")
  26. router.include_router(chemical_company_router, prefix="/chemical_company")
  27. @router.get("/info/{code}")
  28. async def get_pattern_info(
  29. code: str,
  30. db: Session = Depends(get_db)
  31. ):
  32. rainfulldata = get_stcd_data(code,12)
  33. update_time_list = []
  34. rainfall_history = []
  35. rainfall_future = []
  36. cumulative_rainfall = []
  37. for i in rainfulldata[::-1]:
  38. area_name = i['F3070220000034_000018002']
  39. update_time_list.append( datetime.strptime(i['F3070220000034_000018006'], "%Y-%m-%d %H:%M:%S"))
  40. create_time = datetime.strptime(i['F3070220000034_000018004'], "%Y-%m-%d %H:%M:%S")
  41. hour = create_time.strftime("%H")
  42. value = i['F3070220000034_000018005']
  43. rainfall_history.append({"hour":hour,"value":value})
  44. update_time_max = max(update_time_list).strftime("%Y-%m-%d %H:%M:%S")
  45. for t in range(1,13):
  46. future_time = create_time+ timedelta(hours=t)
  47. hour = future_time.strftime("%H")
  48. value = 0
  49. rainfall_future.append({"hour":hour,"value":value})
  50. rainfall = 0
  51. for cumulative in rainfall_history+rainfall_future:
  52. rainfall += cumulative['value']
  53. cumulative_rainfall.append({"hour":cumulative['hour'],"value":rainfall})
  54. return {
  55. "code": 200, "msg": "获取成功", "data":{"areaName":area_name,"updateTime":update_time_max,"rainfallHistory":rainfall_history,"rainfallFuture":rainfall_future,"cumulativeRainfall":cumulative_rainfall}
  56. }
  57. @router.get("/gdyl/info/{code}")
  58. async def get_pattern_info(
  59. code: str,
  60. db: Session = Depends(get_db)
  61. ):
  62. rainfulldata = get_stcd_data(code,25)
  63. update_time_list = []
  64. rainfall_history = []
  65. rainfall_future = []
  66. # cumulative_rainfall = []
  67. num = 24
  68. for i in rainfulldata[::-1]:
  69. area_name = i['F3070220000034_000018002']
  70. update_time_list.append( datetime.strptime(i['F3070220000034_000018006'], "%Y-%m-%d %H:%M:%S"))
  71. create_time = datetime.strptime(i['F3070220000034_000018004'], "%Y-%m-%d %H:%M:%S")
  72. # hour = create_time.strftime("%H")
  73. value = i['F3070220000034_000018005']
  74. if num in [24,12,6,3,1,0]:
  75. rainfall_history.append({"hour":-num,"value":value})
  76. num-=1
  77. update_time_max = max(update_time_list).strftime("%Y-%m-%d %H:%M:%S")
  78. # for t in range(72):
  79. # future_time = create_time+ timedelta(hours=t)
  80. # hour = future_time.strftime("%H")
  81. # value = 0
  82. rainfall_future.append({"hour":1,"value":0})
  83. rainfall_future.append({"hour":3,"value":0})
  84. rainfall_future.append({"hour":24,"value":1})
  85. rainfall_future.append({"hour":48,"value":4})
  86. rainfall_future.append({"hour":72,"value":2})
  87. rainfall = 0
  88. # for cumulative in rainfall_history+rainfall_future:
  89. # rainfall += cumulative['value']
  90. # cumulative_rainfall.append({"hour":cumulative['hour'],"value":rainfall})
  91. return {
  92. "code": 200, "msg": "获取成功", "data":{"areaName":area_name,"updateTime":update_time_max,"rainfallHistory":rainfall_history,"rainfallFuture":rainfall_future}#,"cumulativeRainfall":cumulative_rainfall}
  93. }