Добавление общих складов и удаление пустых ни разу не использованных общих складов

This commit is contained in:
2025-12-08 23:35:14 +03:00
parent 2a04f71e0c
commit 307f970d28
17 changed files with 755 additions and 62 deletions
+4
View File
@@ -4,12 +4,16 @@ from db.handlers.categories import CategoryHandler
from utils import render, requestDict, logger
from .user import router as user
from .stocks import router as stocks
from .toolbox import router as toolbox
from .toolkit import router as toolkit
router = APIRouter()
router.include_router(user, prefix="/user", tags=["user"])
router.include_router(stocks, prefix="/stocks", tags=["stocks"])
router.include_router(toolbox, prefix="/toolbox", tags=["toolbox"])
router.include_router(toolkit, prefix="/toolkit", tags=["toolkit"])
@router.get("/")
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+3 -41
View File
@@ -11,16 +11,17 @@ from utils import requestDict, logger
router = APIRouter()
@router.post("/")
@router.post("/", summary="Получение инструментов для тулбокса")
async def post_requests(
request_data: dict = Depends(requestDict),
):
toolboxId = request_data.get("body").get("toolboxId")
logger.info(f"Получение инструментов для тулбокса {toolboxId}")
response = {"status": "error", "data": {}}
response = {"status": "error", "data": []}
stocksData = await StockHandler.getByToolboxId(toolboxId)
if not stocksData:
response["status"] = "ok"
return response
toolkitsIds = set(stock["toolkit_id"] for stock in stocksData)
toolkitsData = await ToolkitHandler.getSeveral(list(toolkitsIds))
@@ -107,42 +108,3 @@ async def post_requests(
if result:
resonse["status"] = "ok"
return resonse
@router.post("/toolkit", summary="Запрос остатка инструмента")
async def toolkit_request(
request_data: dict = Depends(requestDict),
):
response = {"status": "error", "data": {}}
logger.info(f"Получение запроса остатка инструмента")
# logger.info(request_data)
toolkitId = request_data.get("body").get("toolkitId")
stocks = await StockHandler.getByToolkitId(toolkitId)
if not stocks:
return response
userId = request_data.get("body").get("userId")
allToolboxes = request_data.get("body").get("allToolboxes")
toolboxes = (
await ToolboxHandler.getByOwner(userId)
if not allToolboxes
else await ToolboxHandler.getAll()
)
if not toolboxes:
return response
toolboxesTitles = {toolbox["id"]: toolbox["title"] for toolbox in toolboxes}
stocksData = {"count": 0, "toolboxes": {}}
for stock in stocks:
toolboxTitle = toolboxesTitles.get(stock["toolbox_id"], None)
if not toolboxTitle:
continue
stocksData["count"] += stock["quantity"]
if toolboxTitle not in stocksData["toolboxes"]:
stocksData["toolboxes"][toolboxTitle] = {
"count": stock["quantity"],
"placement": stock["placement"],
}
else:
stocksData["toolboxes"][toolboxTitle]["count"] += stock["quantity"]
response["status"] = "ok"
response["data"] = stocksData
return response
+38
View File
@@ -0,0 +1,38 @@
from fastapi import APIRouter, Depends
from db.handlers.stock import StockHandler
from db.handlers.toolbox import ToolboxHandler
from utils import requestDict, logger
router = APIRouter()
@router.post("/", summary="Добавление ящика")
async def add_toolbox(reqDict=Depends(requestDict)):
logger.info(f"Добавление ящика")
response = {"status": "error"}
userId = reqDict.get("body").get("userId")
toolboxData = reqDict.get("body").get("toolboxData")
result = await ToolboxHandler.add(toolboxData, userId)
if result:
response["status"] = "ok"
logger.info(response)
return response
@router.delete("/", summary="Удаление ящика")
async def delete_toolbox(reqDict=Depends(requestDict)):
toolboxId = reqDict.get("body").get("toolboxId")
logger.info(f"Удаление ящика #{toolboxId}")
response = {"status": "error"}
stocksData = await StockHandler.getByToolboxId(toolboxId, False)
if stocksData:
response["message"] = (
"Через этот склад были проведены операции, удаление невозможно"
)
return response
userId = reqDict.get("body").get("userId")
result = await ToolboxHandler.delete(toolboxId, userId)
if result:
response["status"] = "ok"
return response
+46
View File
@@ -0,0 +1,46 @@
from fastapi import APIRouter, Depends
from db.handlers.stock import StockHandler
from db.handlers.toolbox import ToolboxHandler
from utils import requestDict, logger
router = APIRouter()
@router.post("/", summary="Запрос остатка инструмента")
async def toolkit_request(
request_data: dict = Depends(requestDict),
):
response = {"status": "error", "data": {}}
logger.info(f"Получение запроса остатка инструмента")
# logger.info(request_data)
toolkitId = request_data.get("body").get("toolkitId")
stocks = await StockHandler.getByToolkitId(toolkitId)
if not stocks:
return response
userId = request_data.get("body").get("userId")
allToolboxes = request_data.get("body").get("allToolboxes")
toolboxes = (
await ToolboxHandler.getByOwner(userId)
if not allToolboxes
else await ToolboxHandler.getAll()
)
if not toolboxes:
return response
toolboxesTitles = {toolbox["id"]: toolbox["title"] for toolbox in toolboxes}
stocksData = {"count": 0, "toolboxes": {}}
for stock in stocks:
toolboxTitle = toolboxesTitles.get(stock["toolbox_id"], None)
if not toolboxTitle:
continue
stocksData["count"] += stock["quantity"]
if toolboxTitle not in stocksData["toolboxes"]:
stocksData["toolboxes"][toolboxTitle] = {
"count": stock["quantity"],
"placement": stock["placement"],
}
else:
stocksData["toolboxes"][toolboxTitle]["count"] += stock["quantity"]
response["status"] = "ok"
response["data"] = stocksData
return response