143 lines
4.2 KiB
Python
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))
|