feat: 优化的mplogxview2
This commit is contained in:
parent
df1d097a0d
commit
2dc7243914
|
@ -183,8 +183,8 @@ class MpLogxAPIView(APIView):
|
|||
|
||||
@swagger_auto_schema(manual_parameters=[
|
||||
openapi.Parameter('mpoint', openapi.IN_QUERY, description='测点ID', type=openapi.TYPE_STRING),
|
||||
openapi.Parameter('time__gte', openapi.IN_QUERY, description='开始时间', type=openapi.TYPE_STRING),
|
||||
openapi.Parameter('time__lte', openapi.IN_QUERY, description='结束时间', type=openapi.TYPE_STRING),
|
||||
openapi.Parameter('timex__gte', openapi.IN_QUERY, description='开始时间', type=openapi.TYPE_STRING),
|
||||
openapi.Parameter('timex__lte', openapi.IN_QUERY, description='结束时间', type=openapi.TYPE_STRING),
|
||||
openapi.Parameter('page', openapi.IN_QUERY, description='页码', type=openapi.TYPE_INTEGER),
|
||||
openapi.Parameter('page_size', openapi.IN_QUERY, description='每页数量', type=openapi.TYPE_INTEGER),
|
||||
openapi.Parameter('ordering', openapi.IN_QUERY, description='排序字段,如 -timex', type=openapi.TYPE_STRING),
|
||||
|
@ -192,8 +192,8 @@ class MpLogxAPIView(APIView):
|
|||
])
|
||||
def get(self, request, *args, **kwargs):
|
||||
mpoint = request.query_params.get("mpoint", None)
|
||||
time__gte_str = request.query_params.get("time__gte", None)
|
||||
time__lte_str = request.query_params.get("time__lte", None)
|
||||
timex__gte_str = request.query_params.get("timex__gte", None)
|
||||
timex__lte_str = request.query_params.get("timex__gte", None)
|
||||
page = int(request.query_params.get("page", 1))
|
||||
page_size = int(request.query_params.get("page_size", 20))
|
||||
fields = request.query_params.get("fields", None)
|
||||
|
@ -201,17 +201,17 @@ class MpLogxAPIView(APIView):
|
|||
raise ParseError("page, page_size must be positive")
|
||||
ordering = request.query_params.get("ordering", "-timex") # 默认倒序
|
||||
|
||||
if mpoint is None or time__gte_str is None:
|
||||
if mpoint is None or timex__gte_str is None:
|
||||
raise ParseError("mpoint, time__gte are required")
|
||||
|
||||
# 处理时间
|
||||
time__gte = timezone.make_aware(datetime.strptime(time__gte_str, "%Y-%m-%d %H:%M:%S"))
|
||||
time__lte = timezone.make_aware(datetime.strptime(time__lte_str, "%Y-%m-%d %H:%M:%S")) if time__lte_str else timezone.now()
|
||||
timex__gte = timezone.make_aware(datetime.strptime(timex__gte_str, "%Y-%m-%d %H:%M:%S"))
|
||||
timex__lte = timezone.make_aware(datetime.strptime(timex__lte_str, "%Y-%m-%d %H:%M:%S")) if timex__lte_str else timezone.now()
|
||||
|
||||
# 统计总数
|
||||
count_sql = """SELECT COUNT(*) AS total_count FROM enm_mplogx
|
||||
WHERE mpoint_id=%s AND timex >= %s AND timex <= %s"""
|
||||
count_data = query_one_dict(count_sql, [mpoint, time__gte, time__lte], with_time_format=True)
|
||||
count_data = query_one_dict(count_sql, [mpoint, timex__gte, timex__lte], with_time_format=True)
|
||||
|
||||
# 排序白名单
|
||||
allowed_fields = {"timex", "val_mrs", "val_int", "val_float"} # 根据表字段修改
|
||||
|
@ -244,12 +244,12 @@ class MpLogxAPIView(APIView):
|
|||
page_sql = f"""SELECT {select_clause} FROM enm_mplogx
|
||||
WHERE mpoint_id=%s AND timex >= %s AND timex <= %s
|
||||
{order_clause}"""
|
||||
page_params = [mpoint, time__gte, time__lte]
|
||||
page_params = [mpoint, timex__gte, timex__lte]
|
||||
else:
|
||||
page_sql = f"""SELECT * FROM enm_mplogx
|
||||
WHERE mpoint_id=%s AND timex >= %s AND timex <= %s
|
||||
{order_clause} LIMIT %s OFFSET %s"""
|
||||
page_params = [mpoint, time__gte, time__lte, page_size, (page-1)*page_size]
|
||||
page_params = [mpoint, timex__gte, timex__lte, page_size, (page-1)*page_size]
|
||||
|
||||
page_data = query_all_dict(page_sql, page_params, with_time_format=True)
|
||||
|
||||
|
|
Loading…
Reference in New Issue