Журнал перемещений, упрощение и чистка

This commit is contained in:
2025-12-13 23:47:46 +03:00
parent de572396a6
commit a9e57b4a38
20 changed files with 961 additions and 101 deletions
+65 -9
View File
@@ -1,3 +1,4 @@
from datetime import date, datetime, timedelta
from fastapi import APIRouter, Depends, Request
from fastapi.responses import RedirectResponse
@@ -7,6 +8,7 @@ from .user import router as user
from .stocks import router as stocks
from .toolbox import router as toolbox
from .toolkit import router as toolkit
from .records import router as records
router = APIRouter()
@@ -15,6 +17,7 @@ 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.include_router(records, prefix="/records", tags=["records"])
@router.get("/")
@@ -50,9 +53,16 @@ async def post_requests(
reqData = {
"tab": request_data.get("body").get("tabId"),
"userData": request_data.get("body").get("cookiesData").get("userData"),
"accessData": request_data.get("body").get("cookiesData").get("accessData"),
}
if "cookiesData" in request_data.get("body"):
if "userData" in request_data.get("body").get("cookiesData"):
reqData["userData"] = (
request_data.get("body").get("cookiesData").get("userData")
)
if "accessData" in request_data.get("body").get("cookiesData"):
reqData["accessData"] = (
request_data.get("body").get("cookiesData").get("accessData")
)
resultData = {"status": "error", "data": {}}
logger.info(f"Получение данных для вкладки {reqData.get('tab')}")
match reqData.get("tab"):
@@ -67,10 +77,23 @@ async def post_requests(
resultData["status"] = "ok"
resultData["data"] = toolbox
case "requests":
requests = await StocksRecordsHandler.get(reqData.get("userData").get("id"))
canDesign = reqData.get("accessData").get(
"refund_request_confirm", False
) or reqData.get("accessData").get("debit_request_confirm", False)
userId = reqData.get("userData").get("id")
requests = await StocksRecordsHandler.get(userId, canDesign)
users = await UserHandler.getAll()
toolboxes = await ToolboxHandler.getAll()
toolkitsIds = set([request.get("toolkit_id") for request in requests])
toolkits = await ToolkitHandler.getSeveral(list(toolkitsIds))
if isinstance(requests, list):
resultData["status"] = "ok"
resultData["data"] = requests
resultData["data"] = {
"requests": requests,
"users": users,
"toolboxes": toolboxes,
"toolkits": toolkits,
}
case "toolkits":
toolkits = await ToolkitHandler.getAll()
categories = await CategoryHandler.getAll()
@@ -80,12 +103,45 @@ async def post_requests(
"toolkits": toolkits,
"categories": categories,
}
# logger.info(resultData)
case "jurnal_toolkits":
jurnal_toolkits = await StocksRecordsHandler.get()
if jurnal_toolkits:
resultData["status"] = "ok"
resultData["data"] = jurnal_toolkits
startDate = request_data.get("body").get(
"startDate", date.today() - timedelta(days=7)
)
if isinstance(startDate, str):
startDate = datetime.strptime(startDate, "%Y-%m-%d").date()
endDate = request_data.get("body").get("endDate", date.today())
if isinstance(endDate, str):
endDate = datetime.strptime(endDate, "%Y-%m-%d").date()
jurnal_toolkits = await StocksRecordsHandler.getLogs(startDate, endDate)
if isinstance(jurnal_toolkits, list):
if len(jurnal_toolkits) == 0:
resultData["status"] = "ok"
resultData["data"] = {
"requests": [],
"users": [],
"toolboxes": [],
"toolkits": [],
"startDate": startDate.strftime("%Y-%m-%d"),
"endDate": endDate.strftime("%Y-%m-%d"),
}
else:
users = await UserHandler.getAll()
toolboxes = await ToolboxHandler.getAll()
toolkitsIds = set(
[request.get("toolkit_id") for request in jurnal_toolkits]
)
toolkits = await ToolkitHandler.getSeveral(list(toolkitsIds))
resultData["status"] = "ok"
resultData["data"] = {
"requests": jurnal_toolkits,
"users": users,
"toolboxes": toolboxes,
"toolkits": toolkits,
"startDate": startDate.strftime("%Y-%m-%d"),
"endDate": endDate.strftime("%Y-%m-%d"),
}
case "jurnal_service":
jurnal_service = await ServiceRecordsHandler.get()
if jurnal_service:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+21
View File
@@ -0,0 +1,21 @@
from fastapi import APIRouter, Depends
from db.handlers.actions import StocksActions
from utils import requestDict, logger
router = APIRouter()
@router.post("/")
async def post_requests(
reqData: dict = Depends(requestDict),
):
logger.info("Получение записи о перемещении инструмента")
request_id = reqData.get("body").get("request_id")
user_id = reqData.get("body").get("user_id")
accepted = reqData.get("body").get("accepted")
if request_id and user_id and accepted is not None:
result = await StocksActions.movingDecision(int(request_id), user_id, accepted)
if result:
return {"status": "ok"}
return {"status": "error"}
+1 -1
View File
@@ -15,7 +15,7 @@ router = APIRouter()
async def post_requests(
request_data: dict = Depends(requestDict),
):
toolboxId = request_data.get("body").get("toolboxId")
toolboxId = int(request_data.get("body").get("toolboxId"))
logger.info(f"Получение инструментов для тулбокса {toolboxId}")
response = {"status": "error", "data": []}
-2
View File
@@ -54,7 +54,6 @@ async def delete_toolbox(reqDict=Depends(requestDict)):
@router.post("/fill", summary="Заполнение ящика")
async def fill_toolbox(reqDict=Depends(requestDict)):
logger.info(f"Заполнение ящика")
logger.info(reqDict.get("body"))
response = {"status": "error"}
toolboxId = reqDict.get("body").get("toolboxId")
userId = reqDict.get("body").get("userId")
@@ -79,5 +78,4 @@ async def fill_toolbox(reqDict=Depends(requestDict)):
response["message"] = (
f"Оприходовано {successCount} записей из {len(items)}. Проверьте остатки и повторите попытку"
)
logger.info(response)
return response
-1
View File
@@ -25,7 +25,6 @@ async def get_toolkit(reqData: dict = Depends(requestDict)):
if toolkitId:
toolkit = await ToolkitHandler.get(int(toolkitId))
if toolkit:
# logger.info(toolkit)
response["status"] = "ok"
response["data"] = toolkit
return response
+817 -55
View File
File diff suppressed because it is too large Load Diff
+3
View File
@@ -120,6 +120,9 @@ class ClientManager {
// Очищаем cookie пользователя
this.clearUserCookie();
// Очищаем локальное хранилище
localStorage.clear();
// Переход на страницу выхода
setTimeout(() => {
window.location.href = '/user/login';