targets.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # -*- coding: utf-8 -*-
  2. from typing import Optional
  3. from fastapi import APIRouter, HTTPException, Query
  4. from loguru import logger
  5. from app.controllers.targets.temperature import temperature_target_control_v1, temperature_target_control_v2
  6. from app.models.domain.feedback import FeedbackValue
  7. from app.models.domain.targets import TargetReadjustResponse
  8. from app.utils.date import get_time_str
  9. router = APIRouter()
  10. @router.get('/adjust', response_model=TargetReadjustResponse)
  11. async def readjust_target(
  12. project_id: str = Query(..., max_length=50, regex='^Pj', alias='projectId'),
  13. space_id: str = Query(..., max_length=50, regex='^Sp', alias='roomId'),
  14. timestamp: Optional[str] = Query(None, min_length=14, max_length=14, alias='time'),
  15. feedback: Optional[FeedbackValue] = Query(None, alias='itemId')
  16. ):
  17. if not timestamp:
  18. timestamp = get_time_str()
  19. try:
  20. if feedback != FeedbackValue.null:
  21. if project_id == 'Pj1101050030':
  22. need_run_room_control = await temperature_target_control_v1(project_id, space_id, feedback)
  23. else:
  24. need_run_room_control = await temperature_target_control_v2(project_id, space_id, feedback)
  25. else:
  26. need_run_room_control = True
  27. except Exception as e:
  28. logger.error(e)
  29. raise HTTPException(
  30. status_code=500,
  31. detail='Oops, something wrong has happened'
  32. )
  33. response = {
  34. 'projectId': project_id,
  35. 'roomId': space_id,
  36. 'flag': 1 if need_run_room_control else 0,
  37. 'time': timestamp,
  38. }
  39. return response
  40. @router.get('/adjust/v2', response_model=TargetReadjustResponse)
  41. async def readjust_target_v2(
  42. project_id: str = Query(..., max_length=50, regex='^Pj', alias='project-id'),
  43. space_id: str = Query(..., max_length=50, regex='^Sp', alias='space-id'),
  44. feedback: Optional[FeedbackValue] = Query(None)
  45. ):
  46. if feedback != FeedbackValue.null:
  47. try:
  48. need_run_room_control = await temperature_target_control_v2(project_id, space_id, feedback)
  49. except Exception as e:
  50. logger.error(e)
  51. raise HTTPException(
  52. status_code=500,
  53. detail='Oops, something wrong has happened!'
  54. )
  55. else:
  56. need_run_room_control = True
  57. response = {
  58. 'projectId': project_id,
  59. 'roomId': space_id,
  60. 'flag': 1 if need_run_room_control else 0,
  61. 'time': get_time_str()
  62. }
  63. return response