Files
zkxw/backend/app/api/pilot_infusion_confirm.py
T
2026-05-25 15:14:06 +08:00

143 lines
4.2 KiB
Python

"""中试应用确认 API"""
from typing import Optional
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 pilot_infusion_confirm 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 IdBody(BaseModel):
id: str
class ConfirmCreateBody(BaseModel):
infusionScheduleId: str
confirmDesc: Optional[str] = None
remark: Optional[str] = None
class ConfirmUpdateBody(BaseModel):
id: str
confirmDesc: Optional[str] = None
remark: Optional[str] = None
@router.post("/pilot-infusion-confirm/create")
async def api_create(
body: ConfirmCreateBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
result = svc.create_infusion_confirm(
db,
schedule_id=body.infusionScheduleId,
tenant_no=tenant_no,
user_id=user.get("user_id"),
create_dept_id=user.get("region_id", ""),
confirm_desc=body.confirmDesc or "",
remark=body.remark or "",
)
db.commit()
return success_response(result, message="创建成功")
except ValueError as e:
return error_response(400, str(e))
@router.get("/pilot-infusion-confirm/list")
async def api_list(
applicationId: 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_confirms_by_application(
db, application_id=applicationId, tenant_no=tenant_no
)
return success_response(result)
@router.get("/pilot-infusion-confirm/detail")
async def api_detail(
id: str = Query(...),
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
tenant_no = _get_tenant_no(db, user)
result = svc.get_confirm_by_id(db, confirm_id=id, tenant_no=tenant_no)
if result is None:
return success_response(None)
return success_response(result)
@router.post("/pilot-infusion-confirm/confirm")
async def api_confirm(
body: IdBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
result = svc.confirm_infusion(
db, confirm_id=body.id, 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.put("/pilot-infusion-confirm/update")
async def api_update(
body: ConfirmUpdateBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
result = svc.update_infusion_confirm(
db,
confirm_id=body.id,
tenant_no=tenant_no,
user_id=user.get("user_id"),
confirmDesc=body.confirmDesc,
remark=body.remark,
)
return success_response(result, message="更新成功")
except ValueError as e:
return error_response(400, str(e))
@router.delete("/pilot-infusion-confirm/delete")
async def api_delete(
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_infusion_confirm(
db, confirm_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))