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)