Files
shanxia2.0/backend/app/api/outbound_release_review.py
T
2026-05-25 15:14:06 +08:00

108 lines
3.1 KiB
Python

"""出库放行审核 API"""
from fastapi import APIRouter, Depends, Query
from pydantic import BaseModel
from sqlalchemy.orm import Session
from app.core.database import get_db
from app.core.menu_guard import require_admin_or_super_admin
from app.core.response import error_response, success_response
from app.crud import outbound_release_review as svc
from app.models.models import SysUser
router = APIRouter(prefix="/web/admin", tags=["出库放行审核"])
def _get_tenant_no(db: Session, user: dict) -> str:
user_id = user.get("user_id")
if not user_id:
raise PermissionError("用户身份信息缺失")
sys_user = db.query(SysUser).filter(SysUser.id == user_id).first()
if not sys_user or not sys_user.tenant_no:
raise PermissionError("用户租户信息缺失")
return sys_user.tenant_no
class CreateBody(BaseModel):
scheduleId: str
class UpdateBody(BaseModel):
id: str
reviewConclusion: str
reviewRemark: str = ""
class IdBody(BaseModel):
id: str
@router.post("/pilot-release-review/create")
async def create_review(
body: CreateBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
result = svc.create_release_review(
db,
schedule_id=body.scheduleId,
tenant_no=tenant_no,
user_id=user.get("user_id"),
create_dept_id=user.get("region_id", ""),
)
db.commit()
return success_response(result, message="创建成功")
except ValueError as e:
return error_response(400, str(e))
@router.get("/pilot-release-review/list")
async def list_reviews(
scheduleId: str = Query(...),
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
tenant_no = _get_tenant_no(db, user)
result = svc.list_reviews_by_schedule(
db, schedule_id=scheduleId, tenant_no=tenant_no
)
return success_response(result)
@router.put("/pilot-release-review/update")
async def update_review(
body: UpdateBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
result = svc.update_review_conclusion(
db,
review_id=body.id,
conclusion=body.reviewConclusion,
remark=body.reviewRemark,
tenant_no=tenant_no,
user_id=user.get("user_id"),
)
return success_response(result, message="更新成功")
except ValueError as e:
return error_response(400, str(e))
@router.delete("/pilot-release-review/delete")
async def delete_review(
body: IdBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
svc.delete_release_review(
db, review_id=body.id, tenant_no=tenant_no, user_id=user.get("user_id")
)
return success_response(None, message="删除成功")
except ValueError as e:
return error_response(400, str(e))