You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.8 KiB

#!/usr/bin/env python
# encoding: utf-8
"""
@author: tx
@file: log.py
@time: 2023/6/2 15:43
@desc: 平台日志接口
"""
from fastapi import APIRouter, Request, Depends
from fastapi.encoders import jsonable_encoder
from pydantic import BaseModel
from tortoise.queryset import QuerySet
from conf import setting
from helper import login_required, respond_to
from helper.drug import milligram_to_gram
from helper.report import report_drug_logs
from models import DrugUseLog, Log
from models.drug_use_log import DrugUseStateEnum
from models.cabinet import Cabinet
router = APIRouter(prefix="/logs", dependencies=[Depends(login_required)])
class DrugUseLogSearch(BaseModel):
user_id: str | None
state: int | None
stime: str | None
etime: str | None
drug_id: str | None
page_no: int = 1
page_size: int = 20
@router.get('', summary='平台日志列表')
async def index(page_no: int = 1, page_size: int = 20, keyword: str = None):
"""
获取平台日志列表
:return:
"""
# 根据终端获取柜体
cabinets_ids = await Cabinet.filter(terminal_id=setting.TERMINAL_ID).values_list("id", flat=True)
kwargs = {}
if keyword:
kwargs = {"comment__contains": keyword.strip()}
if cabinets_ids:
kwargs.update({
"cabinet_id__in": cabinets_ids
})
query = Log.filter(**kwargs)
offset = (page_no - 1) * page_size
count = await query.count()
log_objs = await query.limit(page_size).offset(offset).order_by('-created_at')
return respond_to(data=dict(count=count, logs=log_objs))
# 流转日志
@router.post('/drug', summary='流转日志列表')
async def index(request: Request, keyword: DrugUseLogSearch):
"""
获取平台流转日志列表
:return:
"""
data = await report_drug_logs(request, keyword)
return respond_to(data=data)