feat: add vehicle recharge approval pending approve reject disburse
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
ea8c2c0362
commit
f80a29fb8d
8 files changed
+15288
-12531
No files matched your search
@@ -6,6 +6,7 @@ from app.api.pl import (
|
||||
base_data,
|
||||
vehicle_fuel,
|
||||
vehicle_recharge,
|
||||
vehicle_recharge_approval,
|
||||
vehicle_maintenance,
|
||||
vehicle_urea,
|
||||
transport_address,
|
||||
@@ -55,6 +56,7 @@ pl_router.include_router(menu_badges.router)
|
||||
# ETC/加油充值
|
||||
pl_router.include_router(vehicle_recharge.apply_router)
|
||||
pl_router.include_router(vehicle_recharge.record_router)
|
||||
pl_router.include_router(vehicle_recharge_approval.approval_router)
|
||||
|
||||
pl_router.include_router(vehicle_fuel.router)
|
||||
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
"""车辆充值审批 API"""
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.database import get_db
|
||||
from app.core.db_auth import DbUserContext, get_db_current_user
|
||||
from app.core.tenant_context import get_tenant_no
|
||||
from app.schemas.pl.vehicle_recharge import (
|
||||
VehicleRechargeApplyListResponse,
|
||||
VehicleRechargeApplyRead,
|
||||
VehicleRechargeOpinionBody,
|
||||
VehicleRechargeRecordCreate,
|
||||
)
|
||||
from app.services import pl_vehicle_recharge_approval_service as approval_svc
|
||||
|
||||
approval_router = APIRouter(
|
||||
prefix="/vehicle-recharge-approval", tags=["运输计划-ETC加油充值审批"]
|
||||
)
|
||||
|
||||
|
||||
@approval_router.get("/pending", response_model=VehicleRechargeApplyListResponse)
|
||||
def list_pending(
|
||||
page: int = Query(default=1, ge=1),
|
||||
page_size: int = Query(default=20, ge=1, le=500, alias="pageSize"),
|
||||
db: Session = Depends(get_db),
|
||||
user: DbUserContext = Depends(get_db_current_user),
|
||||
) -> VehicleRechargeApplyListResponse:
|
||||
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
|
||||
items, total = approval_svc.list_pending(
|
||||
db, tenant_no, user, page=page, page_size=page_size
|
||||
)
|
||||
return VehicleRechargeApplyListResponse(
|
||||
items=items, total=total, page=page, pageSize=page_size
|
||||
)
|
||||
|
||||
|
||||
@approval_router.get("/done", response_model=VehicleRechargeApplyListResponse)
|
||||
def list_done(
|
||||
page: int = Query(default=1, ge=1),
|
||||
page_size: int = Query(default=20, ge=1, le=500, alias="pageSize"),
|
||||
db: Session = Depends(get_db),
|
||||
user: DbUserContext = Depends(get_db_current_user),
|
||||
) -> VehicleRechargeApplyListResponse:
|
||||
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
|
||||
items, total = approval_svc.list_done(
|
||||
db, tenant_no, user, page=page, page_size=page_size
|
||||
)
|
||||
return VehicleRechargeApplyListResponse(
|
||||
items=items, total=total, page=page, pageSize=page_size
|
||||
)
|
||||
|
||||
|
||||
@approval_router.post("/{apply_id}/approve", response_model=VehicleRechargeApplyRead)
|
||||
def approve_apply(
|
||||
apply_id: str,
|
||||
body: Optional[VehicleRechargeOpinionBody] = None,
|
||||
db: Session = Depends(get_db),
|
||||
user: DbUserContext = Depends(get_db_current_user),
|
||||
) -> VehicleRechargeApplyRead:
|
||||
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
|
||||
opinion = body.opinion if body else None
|
||||
return approval_svc.approve_apply(
|
||||
db, tenant_no, user, apply_id, opinion=opinion
|
||||
)
|
||||
|
||||
|
||||
@approval_router.post("/{apply_id}/reject", response_model=VehicleRechargeApplyRead)
|
||||
def reject_apply(
|
||||
apply_id: str,
|
||||
body: VehicleRechargeOpinionBody,
|
||||
db: Session = Depends(get_db),
|
||||
user: DbUserContext = Depends(get_db_current_user),
|
||||
) -> VehicleRechargeApplyRead:
|
||||
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
|
||||
return approval_svc.reject_apply(
|
||||
db, tenant_no, user, apply_id, opinion=body.opinion
|
||||
)
|
||||
|
||||
|
||||
@approval_router.post("/{apply_id}/disburse", response_model=VehicleRechargeApplyRead)
|
||||
def disburse_apply(
|
||||
apply_id: str,
|
||||
payload: VehicleRechargeRecordCreate,
|
||||
db: Session = Depends(get_db),
|
||||
user: DbUserContext = Depends(get_db_current_user),
|
||||
) -> VehicleRechargeApplyRead:
|
||||
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
|
||||
return approval_svc.disburse_apply(db, tenant_no, user, apply_id, payload)
|
||||
Reference in new issue
Block a user