浏览代码

complete /target/regulated/value logic

chenhaiyang 4 年之前
父节点
当前提交
942ea457aa
共有 2 个文件被更改,包括 25 次插入3 次删除
  1. 8 3
      app/api/routers/targets.py
  2. 17 0
      app/controllers/targets/temperature.py

+ 8 - 3
app/api/routers/targets.py

@@ -5,7 +5,11 @@ from typing import Optional
 from fastapi import APIRouter, HTTPException, Query
 from loguru import logger
 
-from app.controllers.targets.temperature import temperature_target_control_v1, temperature_target_control_v2
+from app.controllers.targets.temperature import (
+    temperature_target_control_v1,
+    temperature_target_control_v2,
+    get_target_after_feedback
+)
 from app.models.domain.feedback import FeedbackValue
 from app.models.domain.targets import TargetReadjustResponse, RegulatedTargetResponse
 from app.utils.date import get_time_str
@@ -79,13 +83,14 @@ async def read_regulated_value(
         space_id: str = Query(..., max_length=50, regex='^Sp', alias='spaceId'),
         feedback: Optional[FeedbackValue] = Query(None)
 ):
+    new_actual_target = await get_target_after_feedback(project_id, space_id, feedback)
     response = {
         'projectId': project_id,
         'spaceId': space_id,
         'isTemporary': False,
         'temperature': {
-            'min': 23.0,
-            'max': 25.0
+            'min': new_actual_target,
+            'max': new_actual_target
         }
     }
 

+ 17 - 0
app/controllers/targets/temperature.py

@@ -467,3 +467,20 @@ async def temperature_target_control_v2(project_id: str, space_id: str, feedback
     await TargetDeliver(project_id, space_id).send(controlled_result)
 
     return controlled_result['need_run_room_control']
+
+
+@logger.catch()
+async def get_target_after_feedback(project_id: str, space_id: str, feedback: FeedbackValue) -> float:
+    if project_id == 'Pj1101050030':
+        temperature_target_raw_data = await TemperatureTargetCarrier(project_id, space_id).get_result()
+    else:
+        temperature_target_raw_data = await TemperatureTargetV2Carrier(project_id, space_id).get_result()
+    temperature_target_data = TemperatureTargetPacker(temperature_target_raw_data).get_result()
+    if project_id == 'Pj1101050030':
+        controller = TemperatureTargetController(temperature_target_data)
+    else:
+        controller = TemperatureTargetControllerV2(temperature_target_data)
+    controller.run(feedback)
+    controlled_result = controller.get_result()
+
+    return controlled_result.get('new_actual_target')