You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
6.2 KiB
Python

from typing import Annotated
from fastapi import APIRouter, Body, Depends, Path
from fastapi.responses import JSONResponse
from app.common.response import ResponseSchema, SuccessResponse
from app.core.base_params import PaginationQueryParam
from app.core.base_schema import AuthSchema, PageResultSchema
from app.core.dependencies import AuthPermission
from app.core.router_class import OperationLogRoute
from .schema import (
EnergyReportReviewCreateSchema,
EnergyReportReviewLogCreateSchema,
EnergyReportReviewLogOutSchema,
EnergyReportReviewLogQueryParam,
EnergyReportReviewOutSchema,
EnergyReportReviewPageOutSchema,
EnergyReportReviewQueryParam,
EnergyReportReviewUpdateSchema,
)
from .service import EnergyReportReviewLogService, EnergyReportReviewService
EnergyReportReviewRouter = APIRouter(route_class=OperationLogRoute, prefix="/report-review", tags=["能源报告审核"])
@EnergyReportReviewRouter.get(
"/list",
summary="查询能源报告审核任务列表",
response_model=ResponseSchema[EnergyReportReviewPageOutSchema],
)
async def get_energy_report_review_list_controller(
page: Annotated[PaginationQueryParam, Depends()],
search: Annotated[EnergyReportReviewQueryParam, Depends()],
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:report_review:query"]))],
) -> JSONResponse:
result = await EnergyReportReviewService(auth).page(
page_no=page.page_no,
page_size=page.page_size,
search=search,
order_by=page.order_by or [{"id": "desc"}],
)
return SuccessResponse(data=result, msg="查询能源报告审核任务列表成功")
@EnergyReportReviewRouter.get(
"/detail/{id}",
summary="查询能源报告审核任务详情",
response_model=ResponseSchema[EnergyReportReviewOutSchema],
)
async def get_energy_report_review_detail_controller(
id: Annotated[int, Path(description="能源报告审核任务ID")],
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:report_review:detail"]))],
) -> JSONResponse:
result = await EnergyReportReviewService(auth).detail(id=id)
return SuccessResponse(data=result, msg="查询能源报告审核任务详情成功")
@EnergyReportReviewRouter.post(
"/create",
summary="创建能源报告审核任务",
response_model=ResponseSchema[EnergyReportReviewOutSchema],
)
async def create_energy_report_review_controller(
data: EnergyReportReviewCreateSchema,
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:report_review:create"]))],
) -> JSONResponse:
result = await EnergyReportReviewService(auth).create(data=data)
return SuccessResponse(data=result, msg="创建能源报告审核任务成功")
@EnergyReportReviewRouter.put(
"/update/{id}",
summary="修改能源报告审核任务",
response_model=ResponseSchema[EnergyReportReviewOutSchema],
)
async def update_energy_report_review_controller(
data: EnergyReportReviewUpdateSchema,
id: Annotated[int, Path(description="能源报告审核任务ID")],
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:report_review:update"]))],
) -> JSONResponse:
result = await EnergyReportReviewService(auth).update(id=id, data=data)
return SuccessResponse(data=result, msg="修改能源报告审核任务成功")
@EnergyReportReviewRouter.delete(
"/delete",
summary="删除能源报告审核任务",
response_model=ResponseSchema[None],
)
async def delete_energy_report_review_controller(
ids: Annotated[list[int], Body(description="ID列表")],
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:report_review:delete"]))],
) -> JSONResponse:
await EnergyReportReviewService(auth).delete(ids=ids)
return SuccessResponse(msg="删除能源报告审核任务成功")
@EnergyReportReviewRouter.get(
"/log/list",
summary="查询能源报告审核操作记录列表",
response_model=ResponseSchema[PageResultSchema[EnergyReportReviewLogOutSchema]],
)
async def get_energy_report_review_log_list_controller(
page: Annotated[PaginationQueryParam, Depends()],
search: Annotated[EnergyReportReviewLogQueryParam, Depends()],
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:report_review:query"]))],
) -> JSONResponse:
result = await EnergyReportReviewLogService(auth).page(
page_no=page.page_no,
page_size=page.page_size,
search=search,
order_by=page.order_by or [{"id": "desc"}],
)
return SuccessResponse(data=result, msg="查询能源报告审核操作记录列表成功")
@EnergyReportReviewRouter.get(
"/log/detail/{id}",
summary="查询能源报告审核操作记录详情",
response_model=ResponseSchema[EnergyReportReviewLogOutSchema],
)
async def get_energy_report_review_log_detail_controller(
id: Annotated[int, Path(description="能源报告审核操作记录ID")],
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:report_review:query"]))],
) -> JSONResponse:
result = await EnergyReportReviewLogService(auth).detail(id=id)
return SuccessResponse(data=result, msg="查询能源报告审核操作记录详情成功")
@EnergyReportReviewRouter.post(
"/log/create",
summary="创建能源报告审核操作记录",
response_model=ResponseSchema[EnergyReportReviewLogOutSchema],
)
async def create_energy_report_review_log_controller(
data: EnergyReportReviewLogCreateSchema,
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:report_review:update"]))],
) -> JSONResponse:
result = await EnergyReportReviewLogService(auth).create(data=data)
return SuccessResponse(data=result, msg="创建能源报告审核操作记录成功")
@EnergyReportReviewRouter.delete(
"/log/delete",
summary="删除能源报告审核操作记录",
response_model=ResponseSchema[None],
)
async def delete_energy_report_review_log_controller(
ids: Annotated[list[int], Body(description="ID列表")],
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_energy:report_review:delete"]))],
) -> JSONResponse:
await EnergyReportReviewLogService(auth).delete(ids=ids)
return SuccessResponse(msg="删除能源报告审核操作记录成功")