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.
35 lines
1.6 KiB
35 lines
1.6 KiB
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))
|