#!/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)