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.9 KiB

# -*- coding: utf-8 -*-
# @Time : 2023/10/7 14:26
# @Author : tx
# @File : stock.py
# @Description : 库存盘点
import json
from datetime import datetime
from fastapi import APIRouter, Request, Depends
from pydantic import BaseModel
from tortoise.queryset import QuerySet
from helper import respond_to, login_required
from helper.report import report_remain_drug
from models import StockRecord
router = APIRouter(prefix='/stock', dependencies=[Depends(login_required)])
class ParamStockRequest(BaseModel):
drug_name: str | None
dictionary_id: str | None
cabinet_ids: list | None
cabinet_id: str | None
page_no: int = 0
page_size: int = 20
spec:str|None
report_ids:str|None
cas_code:str|None
custom_num:int = 0
@router.get('', summary='盘点列表')
async def index(request: Request, cabinet_id: str | None, page_no: int = 1, page_size: int = 20):
"""
获取库存盘点列表
:return:
"""
offset = (page_no - 1) * page_size
query = QuerySet(StockRecord)
if cabinet_id:
query = query.filter(cabinet_id=cabinet_id)
count = await query.count()
stock_objs = await query.limit(page_size).offset(offset).order_by("-created_at")
return respond_to(data=dict(count=count, data=stock_objs))
@router.post('', summary='生成盘点')
async def create(request: Request, keyword: ParamStockRequest):
"""
生成库存盘点记录
:return:
"""
user = request.state.current_user
keyword.cabinet_ids = [keyword.cabinet_id]
content = await report_remain_drug(request, keyword)
now_time = datetime.now().strftime("%Y-%m-%d_%H%M%S")
name = f"{now_time}-库存盘点记录"
print("content", content)
stock_record = await StockRecord.create(
name=name,
content=json.dumps(content, ensure_ascii=False),
cabinet_id=keyword.cabinet_id,
user=user
)
return respond_to(desc="生成完成", data=stock_record)