from datetime import datetime from fastapi import APIRouter from conf import setting from helper import respond_to from helper.utils import timezone_now from models import Drug, DrugUseLog, DrugStateEnum, DrugUseStateEnum, Terminal, Cabinet router = APIRouter(prefix='/today') @router.get('') async def index(): # terminal_obj = await Terminal.get(id=setting.TERMINAL_ID) stime = datetime.combine(timezone_now(), datetime.min.time()) etime = datetime.combine(timezone_now(), datetime.max.time()) cabinets_ids = await Cabinet.filter(terminal_id=setting.TERMINAL_ID).values_list("id", flat=True) # 今日入库 storage_count = await Drug.filter(storage_at__range=[stime, etime], cabinet_id__in=cabinets_ids).count() # 截止目前在库已过期 expire_count = await Drug.filter(state=DrugStateEnum.IN, expired_at__lt=timezone_now().strftime('%Y-%m-%d %H:%M:%S'), cabinet_id__in=cabinets_ids).count() # 今日领用 receive_count = await DrugUseLog.filter(state__in=[DrugUseStateEnum.TAKE, DrugStateEnum.EMPTY], created_at__range=[stime, etime], cabinet_id__in=cabinets_ids).count() # 今日归还 return_count = await DrugUseLog.filter(state=DrugUseStateEnum.PUT, created_at__range=[stime, etime], cabinet_id__in=cabinets_ids).count() return respond_to(data=dict(storage_count=storage_count, expire_count=expire_count, receive_count=receive_count, return_count=return_count))