feat: add accessory API routes and exception handlers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Misaka
2026-05-24 17:40:18 +08:00
parent 35bea2a81e
commit 0539c4696d
2 changed files with 233 additions and 1 deletions

116
app/api/v1/accessory.py Normal file
View File

@@ -0,0 +1,116 @@
from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session
from app.core.database import get_db
from app.schemas.accessory import (
AccessoryCreateRequest,
AccessoryListResponse,
AccessoryResponse,
AccessoryTypeCreateRequest,
AccessoryTypeListResponse,
AccessoryTypeUpdateRequest,
AccessoryUpdateRequest,
WorkOrderQueryResponse,
)
from app.services.accessory_service import (
create_accessory,
create_accessory_type,
delete_accessory,
delete_accessory_type,
list_accessories,
list_accessory_types,
update_accessory,
update_accessory_type,
query_work_orders,
)
router = APIRouter(tags=["accessory"])
@router.get(
"/accessory/work-orders",
response_model=WorkOrderQueryResponse,
)
def work_orders(
paichan_no: str = Query(..., description="排产号"),
db: Session = Depends(get_db),
):
"""查询工单信息:根据排产号查询工令号及对应总排号。"""
return query_work_orders(db, paichan_no)
@router.get(
"/accessory",
response_model=AccessoryListResponse,
)
def accessory_list(
paichan_no: str = Query(..., description="排产号"),
db: Session = Depends(get_db),
):
"""查询附件列表:根据排产号查询所有附件记录。"""
return list_accessories(db, paichan_no)
@router.post(
"/accessory",
response_model=AccessoryResponse,
)
def accessory_create(req: AccessoryCreateRequest, db: Session = Depends(get_db)):
"""创建附件记录。"""
record = create_accessory(db, req)
return {
"id": record.id,
"paichan_no": record.paichan_no,
"zongpai_no": record.zongpai_no,
"accessory_type": record.accessory_type,
"quantity": record.quantity,
"location_code": record.location_code,
"is_boxed": False,
"created_at": record.created_at.isoformat(),
}
@router.patch(
"/accessory/{id}",
response_model=AccessoryResponse,
)
def accessory_update(id: int, req: AccessoryUpdateRequest, db: Session = Depends(get_db)):
"""更新附件记录。"""
return update_accessory(db, id, req)
@router.delete("/accessory/{id}")
def accessory_delete(id: int, db: Session = Depends(get_db)):
"""删除附件记录。"""
return delete_accessory(db, id)
@router.get(
"/accessory-type",
response_model=AccessoryTypeListResponse,
)
def accessory_type_list(db: Session = Depends(get_db)):
"""查询所有附件类型。"""
return list_accessory_types(db)
@router.post("/accessory-type")
def accessory_type_create(
req: AccessoryTypeCreateRequest, db: Session = Depends(get_db)
):
"""创建附件类型。"""
return create_accessory_type(db, req)
@router.patch("/accessory-type/{id}")
def accessory_type_update(
id: int, req: AccessoryTypeUpdateRequest, db: Session = Depends(get_db)
):
"""更新附件类型。"""
return update_accessory_type(db, id, req)
@router.delete("/accessory-type/{id}")
def accessory_type_delete(id: int, db: Session = Depends(get_db)):
"""删除附件类型。"""
return delete_accessory_type(db, id)