from typing import List from fastapi import APIRouter, Depends, Request, UploadFile, File, Query from sqlalchemy.ext.asyncio import AsyncSession from config.get_db import get_db from module_admin.entity.vo.user_vo import CurrentUserModel from module_admin.entity.vo.dataint_vo import SscfPageObject, SaveSscfModel, TreeOperateModel from module_admin.service.login_service import LoginService from module_admin.service.sscf_service import SscfService from utils.response_util import ResponseUtil from utils.common_util import bytes2file_response sscfController = APIRouter(prefix='/dataint/sscf', dependencies=[Depends(LoginService.get_current_user)]) @sscfController.get("/list") async def get_tsmcb_list(request: Request, sscf_query: SscfPageObject = Depends(SscfPageObject.as_query), query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): meta_query_result = await SscfService.get_sscf_list_services(query_db, sscf_query, current_user) return ResponseUtil.success(data=meta_query_result) @sscfController.get("/tree") async def get_tsmcb_list(request: Request, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): meta_query_result = await SscfService.get_dasset_tree_services(query_db, current_user) return ResponseUtil.success(data=meta_query_result) @sscfController.post("/tree") async def get_tsmcb_list(request: Request, treeOperate: TreeOperateModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): meta_query_result = await SscfService.save_dasset_tree_services(query_db, treeOperate, current_user) return ResponseUtil.success(data=meta_query_result) @sscfController.post("/save") async def save_tsmcb(request: Request, saveSscfModel: SaveSscfModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): result = await SscfService.save_sscf(query_db, saveSscfModel, current_user) return ResponseUtil.success(msg=result.message) @sscfController.post("/delete") async def delete_tsmcb(request: Request, array: List[str], query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): result = await SscfService.delete_sscf(query_db, array) return ResponseUtil.success(msg=result.message) @sscfController.post("/importTemplate") async def export_sscf_template(request: Request, query_db: AsyncSession = Depends(get_db)): meta_import_template_result = await SscfService.get_import_template_services() return ResponseUtil.streaming(data=bytes2file_response(meta_import_template_result)) @sscfController.post("/upload") async def batch_import_sscf_data( request: Request, file: UploadFile = File(...), overWrite: bool = Query(alias='overWrite'), query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): batch_import_result = await SscfService.batch_import_sscf_data(query_db, file, overWrite, current_user) return ResponseUtil.success(data=batch_import_result)