108 lines
3.1 KiB
Python
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))
|