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