26 lines
1.2 KiB
Python
26 lines
1.2 KiB
Python
from apps.enp.models import EnvData
|
|
from apps.enp.serializers import EnvDataSerializer
|
|
from datetime import datetime
|
|
|
|
def get_last_envdata(eIds: list, time_start: datetime, time_end: datetime):
|
|
eIds_str = ",".join([f"'{item}'" for item in eIds]) # 将 ID 列表格式化为字符串
|
|
time_start_str = time_start.strftime("%Y-%m-%d %H:%M:%S")
|
|
time_end_str = time_end.strftime("%Y-%m-%d %H:%M:%S")
|
|
esql = f'''
|
|
SELECT DISTINCT ON (equipment_id) *
|
|
FROM enp_envdata ee
|
|
WHERE equipment_id IN ({eIds_str})
|
|
AND timex AT TIME ZONE 'Asia/Shanghai' >= '{time_start_str}'
|
|
AND timex AT TIME ZONE 'Asia/Shanghai' <= '{time_end_str}'
|
|
ORDER BY equipment_id, timex DESC
|
|
'''
|
|
edata = EnvDataSerializer(EnvData.objects.raw(esql), many=True).data
|
|
|
|
# esql ='''SELECT DISTINCT ON (equipment_id) *
|
|
# FROM enp_envdata ee
|
|
# WHERE equipment_id IN %s
|
|
# AND timex AT TIME ZONE 'Asia/Shanghai' >= %s
|
|
# AND timex AT TIME ZONE 'Asia/Shanghai' <= %s
|
|
# ORDER BY equipment_id, timex DESC'''
|
|
# res = query_all_dict(esql, [tuple(data_ids), now_10_before_str, now_str])
|
|
return edata |