# -*- 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)