|
@@ -7,11 +7,13 @@ import arrow
|
|
|
import numpy as np
|
|
|
import pandas as pd
|
|
|
from httpx import AsyncClient, URL
|
|
|
+from loguru import logger
|
|
|
|
|
|
from app.services.service import Service
|
|
|
from app.utils.date import get_time_str, TIME_FMT
|
|
|
+from app.core.config import TransferSettings
|
|
|
|
|
|
-SERVER = 'http://api.sagacloud.cn'
|
|
|
+transfer_settings = TransferSettings()
|
|
|
|
|
|
|
|
|
class Season(str, Enum):
|
|
@@ -22,11 +24,17 @@ class Season(str, Enum):
|
|
|
|
|
|
class TransferService(Service):
|
|
|
|
|
|
- def __init__(self, client: AsyncClient, project_id: str, space_id: str) -> None:
|
|
|
+ def __init__(
|
|
|
+ self,
|
|
|
+ client: AsyncClient,
|
|
|
+ project_id: str,
|
|
|
+ space_id: str,
|
|
|
+ settings: TransferSettings = transfer_settings
|
|
|
+ ) -> None:
|
|
|
super(TransferService, self).__init__(client)
|
|
|
self._project_id = project_id
|
|
|
self._space_id = space_id
|
|
|
- self._base_url = URL(SERVER)
|
|
|
+ self._base_url = URL(settings.transfer_host)
|
|
|
self._now_time = get_time_str()
|
|
|
|
|
|
def _common_parameters(self) -> Dict:
|
|
@@ -42,22 +50,21 @@ class TransferService(Service):
|
|
|
|
|
|
return Season(raw_info.get('data'))
|
|
|
|
|
|
- async def get_env_info(self) -> Tuple[int, pd.DataFrame, Dict]:
|
|
|
- url = self._base_url.join('duoduo-service/transfer/environment/databyroom')
|
|
|
- start_time = get_time_str(100 * 60, flag='ago')
|
|
|
- params = self._common_parameters()
|
|
|
- params.update(({'startTime': start_time, 'endTime': self._now_time}))
|
|
|
+ async def is_customized(self) -> bool:
|
|
|
+ url = self._base_url.join('duoduo-service/custom-service/custom/timetarget')
|
|
|
+ time_str = arrow.get(arrow.get(self._now_time, TIME_FMT).timestamp // 900 * 900).strftime('%Y%m%d%H%M%S')
|
|
|
+ params = {
|
|
|
+ 'projectId': self._project_id,
|
|
|
+ 'objectId': self._space_id,
|
|
|
+ 'timepoint': time_str,
|
|
|
+ }
|
|
|
raw_info = await self._get(url, params)
|
|
|
|
|
|
- if raw_info.get('meterdata') and len(raw_info.get('meterdata')) > 1:
|
|
|
- temp_df = pd.DataFrame(raw_info.get('meterdata'))
|
|
|
- temp_df = temp_df.rename(columns=temp_df.iloc[0, :]).iloc[1:, :]
|
|
|
- temp_df['date'] = pd.to_datetime(temp_df['date'])
|
|
|
- temp_df.set_index('date', inplace=True)
|
|
|
- else:
|
|
|
- temp_df = pd.DataFrame()
|
|
|
+ flag = False
|
|
|
+ if raw_info.get('data'):
|
|
|
+ flag = True
|
|
|
|
|
|
- return raw_info.get('flag'), temp_df, raw_info.get('target')
|
|
|
+ return flag
|
|
|
|
|
|
async def is_temporary(self) -> bool:
|
|
|
url = self._base_url.join('duoduo-service/transfer/environment/temp/target')
|
|
@@ -102,7 +109,6 @@ class TransferService(Service):
|
|
|
raw_info = await self._get(url, params)
|
|
|
|
|
|
custom_target_df = pd.DataFrame(raw_info.get('data'))
|
|
|
- # custom_target_df['timestamp'] = pd.to_datetime(custom_target_df['date'] + custom_target_df['time'])
|
|
|
custom_target_df.set_index('time', inplace=True)
|
|
|
|
|
|
return custom_target_df
|
|
@@ -110,14 +116,14 @@ class TransferService(Service):
|
|
|
async def env_database_set(self, form: str, value: float) -> None:
|
|
|
url = self._base_url.join('duoduo-service/transfer/environment/hispoint/set')
|
|
|
params = self._common_parameters()
|
|
|
- time_str = arrow.get(self._now_time, TIME_FMT).date().strftime('%H%M%S')
|
|
|
+ time_str = arrow.get(arrow.get(self._now_time, TIME_FMT).timestamp // 900 * 900).strftime('%Y%m%d%H%M%S')
|
|
|
params.update({'time': time_str, 'type': form, 'value': value})
|
|
|
await self._get(url, params)
|
|
|
|
|
|
async def env_database_get(self) -> Dict[str, pd.DataFrame]:
|
|
|
url = self._base_url.join('duoduo-service/transfer/environment/hispoint/get')
|
|
|
params = self._common_parameters()
|
|
|
- params.update({'date': self._now_time})
|
|
|
+ params.update({'date': arrow.get(self._now_time, TIME_FMT).date().strftime('%Y%m%d')})
|
|
|
raw_info = await self._get(url, params)
|
|
|
|
|
|
result = {}
|
|
@@ -138,6 +144,7 @@ class TransferService(Service):
|
|
|
async def set_custom_target(self, form: str, target_value: Dict[str, List[float]], flag: str = '1') -> None:
|
|
|
url = self._base_url.join('duoduo-service/transfer/environment/target/setting')
|
|
|
params = {
|
|
|
+ 'projectId': self._project_id,
|
|
|
'spaceId': self._space_id,
|
|
|
'timepoint': self._now_time,
|
|
|
'type': form,
|